Version: v0.04 · Released: 2026-04-30 · License: MIT
⚠️ Use at your own risk. This software is provided as-is, with no warranty of any kind. See the License section below.
Network Status Monitor is a Linux host-analysis dashboard that gives you as much useful network information as possible about any IP address or hostname — directly from a graphical window or a terminal UI.
Point it at any target and it will:
- Resolve the hostname to an IP address (DNS A/AAAA lookup).
- Port-scan a configurable list of TCP ports and report each as OPEN, CLOSED, or FILTERED.
- Show per-port latency (response time in ms for open ports).
- Run DNS intelligence on every refresh:
nslookup+digfull output- Reverse PTR lookup when the target is an IP address
whois(registrar, expiry, nameservers) when the target is a domain name
- nmap integration — choose a scan type (Quick, Port, Service/Version, OS Detection, Full) and stream live output into the UI.
- Persistent history — every check is appended to
~/.local/share/nettest/log.txt.
It comes in two flavours so you can use whichever suits your situation:
| Program | Interface | Best for |
|---|---|---|
network-status |
Graphical window (GTK3) | Desktop / KDE Plasma |
network-status-tui |
Terminal UI (ncurses) | SSH sessions, virtual consoles |
Open a terminal and run the command for the version(s) you want:
# GUI version only
pkexec dnf install gcc gtk3-devel
# Terminal version only
pkexec dnf install gcc ncurses-devel
# Both at once (recommended)
pkexec dnf install gcc gtk3-devel ncurses-devel./build.shbuild.sh automatically detects which libraries are installed and compiles
accordingly. When it finishes you will see network-status and/or
network-status-tui in the same folder.
./network-status # opens the graphical window
./network-status-tui # runs in your current terminal- The window opens and immediately begins checking your ports.
- The Hostname field (top of window) is editable — type any IP or domain name and press Refresh.
- Each port shows a green ✓ Open or red ✗ Closed label with latency.
- DNS/WHOIS/PTR results appear in a scrollable pane below the port results.
- Click Settings to add or remove ports, change the default hostname, or run a one-off single-port check.
- Click nmap to run a guided nmap scan against the current hostname.
- Click Refresh to re-run all checks without restarting the program.
- Click OK (or close the window) to exit.
| Key | Action |
|---|---|
r |
Refresh — re-run all checks + DNS lookups |
e |
Edit hostname field |
s |
Settings — add/remove ports, change default hostname |
n |
nmap — choose scan type and run |
a |
About — show version and license info |
q |
Quit |
The terminal UI resizes automatically when you resize your terminal window.
- Fedora Linux 41 or newer (tested on Fedora 43)
- KDE Plasma / KWin on Wayland, or any terminal emulator for the TUI version
- Build tools:
gcc,gtk3-devel(GUI),ncurses-devel(TUI)
- Per-port latency: OPEN ports show
[Xms]response time. - Persistent check history appended to
~/.local/share/nettest/log.txt. --nolog/--logflags to control history logging.- Last-check timestamp displayed in both GUI and TUI.
--ports CSVflag to override the default port list at runtime.--host HOSTNAMEflag to override the target hostname at runtime.- Settings JSON at
~/.config/nettest/settings.json— auto-created on first run, loaded at startup; CLI flags override config values. - Security fix: use-after-free on TUI quit eliminated (pthread_join + g_quit flag).
- Security fix:
mkdirnow creates intermediate parent directories (~/.config,~/.local/share) before the leaf nettest directory.
- External IP cross-checked against
ifconfig.me; ⚠ MISMATCH warning if the two sources disagree. - Raw TCP diagnostics: each CLOSED/FILTERED port now shows the POSIX error name (
ECONNREFUSED,ETIMEDOUT, etc.). --debugflag writes a timestampeddebug.logwith per-action results.- Internet diagnostics: if no connection is detected, pings
1.1.1.1and checksip addrto suggest a plain-English explanation. - TUI: pixel-accurate terminal resize via
ioctl(TIOCGWINSZ)+resizeterm(). -h/--helpflags, About dialog (GUI) and screen (TUI), 3-retry logic for filtered ports.- Security fixes: bounds-checked
--tuipath builder, Pango markup escaping for external IP data,sig_atomic_tfor signal flag.
- GTK3 GUI: external IP display, colour-coded port status, Refresh and Quit buttons.
- ncurses TUI: same checks, resize-aware,
rto refresh,afor About,qto quit. - Non-blocking TCP port tests with a 5-second timeout and correct OPEN/CLOSED/FILTERED detection.
- DNS-based external IP resolution via
leninlab.zapto.org. - Auto-detecting build script (
build.sh) andMakefile.
- Editable Hostname field (GUI entry widget + TUI inline edit).
- Settings dialog / screen: add/remove ports, set default hostname, configure timeout, named host presets.
- Check Port: one-off single-port check from the Settings dialog.
- DNS intelligence on every Refresh:
nslookup,dig, reverse PTR (IPs) orwhois(domains). - nmap button/key: scan-type selector, live streaming output.
- Security hardening:
O_NOFOLLOWon config files, startup config validation. - JSON result export (
--output result.json).
MIT License — Copyright © 2026 Kirill Talanov kirill@talanov.ca
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.