Port Monitor is a powerful, professional desktop utility designed for developers and system administrators to visualize and manage active network ports in real-time. Built with C++ and Qt 6, it combines high performance with a modern, glassmorphism-inspired interface.
- Visual Cards: View your most important ports (like 3000, 8080, 5432) as sleek, actionable cards.
- Custom Tracking: Add your own custom ports to the dashboard for quick monitoring.
- Status Indicators: Instantly see if a service is Online (Green) or Offline (Gray).
- Quick Actions: Launch
localhost:<port>in your browser directly from the card.
- Comprehensive Table: View all active system ports in a sortable, filterable table.
- Process Details: See exact Process Names, PIDs, Users, and Protocols (TCP/UDP).
- Advanced Filtering: Search by process name, PID, or port to find exactly what you're looking for.
- Context Actions: Right-click any row to Kill Process or view more details.
- System Tray: The application continues running in the background even when closed. A discreet icon in your menu bar (as shown below) keeps you connected.
- Quick Access: Click the tray icon to instantly view a dropdown menu of all active ports and launch them.
- Notifications: Get native desktop notifications when a tracked service comes online.
- Auto-Start: Optionally launch Port Monitor automatically on system login.
- Dark & Light Themes: Fully supported dark mode with polished UI elements.
- Responsive Design: A fluid layout that adapts to your window size.
- Qt 6.2+ (Gui, Widgets, Network modules)
- CMake 3.16+
- C++17 Compiler (Clang/GCC)
- macOS or Linux
# Clone the repository
git clone <repository-url>
cd port-monitor
# Configure and Build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
# Launch Application
./build/PortMonitorFor keeping your host system clean or testing in isolation:
# Build the image
docker build -t port-monitor .
# Run with helper script (macOS/Linux)
./run_docker.shNote: On macOS, this script handles XQuartz setup for GUI display.
- Dashboard: The main screen shows your "pinned" ports. Click "Add Port" to track a new specific port (e.g., your Rails server on 3000).
- Launching: Click the launch icon on any card to open that service in your default web browser.
- Managing: Click the Trash icon to stop tracking a custom port.
- Tray Menu: Click the menu bar icon to see a dropdown of active ports. Clicking an item there also launches it in the browser.
- Settings: Toggle themes, notifications, and auto-start preferences in the Settings tab.
port-monitor/
├── src/
│ ├── main.cpp // App entry & theme initialization
│ ├── MainWindow.cpp/h // Controller & Main UI logic
│ ├── PortMonitor.cpp/h // Backend scanner (lsof wrapper)
│ ├── PortTableModel.cpp // Optimized QAbstractTableModel
│ └── ...
├── resources/
│ ├── images/ // UI assets and screenshots
│ ├── styles.qss // CSS-like Qt stylesheets
│ └── resources.qrc // Qt Resource Bundle
├── CMakeLists.txt // Build configuration
└── Dockerfile // Container definition
Distributed under the Apache License 2.0. See LICENSE for more information.
Copyright © 2025 Kadir Mert Abatay. All rights reserved.

