
nmlinux v1.7.8
Unified network toolkit for Linux — Python 3 + PySide6
NMLinux · v1.7.14
A unified network toolkit for Linux and macOS — inspect, connect, diagnose.
NMLinux is a single, unified GUI that brings together 29 network modules in one window: interface monitoring, Wi-Fi, DNS, SSH terminal, firewall viewer, topology map, traceroute, and more. Built from scratch in Python and PySide6 (Qt 6), with 8 interface languages and no external dependencies beyond standard system tools.
[!NOTE] NMLinux is not related to the Linux system daemon
/usr/bin/NetworkManager(NetworkManager by Red Hat/GNOME). NMLinux is a standalone project built from scratch in Python and PySide6.
Built with Claude Code (Anthropic) and the contribution of its author.
Development process
NMLinux is built with AI assistance — Claude Code, specifically — and that's not hidden anywhere in this repo. Almost every serious software project today uses AI somewhere in its pipeline, whether it says so or not. So "was AI involved" isn't the interesting question. The interesting question is: does anything catch it when the AI gets something wrong?
Here's what does, if you'd rather check than take my word for it:
- 162 tests —
pytest tests/ -v. Pure logic plus a handful of real Qt widget tests (menus, tables), no mocking away the interesting parts. docs/Decisions-Techniques.md— every non-obvious technical call, the alternatives that got rejected, and the bugs (including AI-introduced ones) that were found and fixed, with the reasoning written down.docs/Architecture.mdanddocs/Carte-des-Modules.md— the actual structure of the code, kept in sync with what ships.- An i18n consistency check run before every release to catch missing translation keys across the 8 supported languages.
None of that exists because AI can't be trusted. It exists because nothing should ship without a process that checks it — hand-written code included. Judge the output and how it's verified, not the tool that helped write it.
Found a bug anyway? That's useful, not embarrassing — open an issue.
Community
GitHub Discussions are open — share feedback, report ideas, ask questions, or just say hello. The author has 30+ years in infrastructure and operations, and built this tool because good, free, and simple software should exist for Linux too.
Screenshots
Linux screenshots from v1.2.7 — macOS screenshots from v1.3.5. The app now has 29 modules and 8 interface languages (FR/EN/ES/DE/IT/PT/JA/ZH).
Linux (KDE)
| Dashboard | Topology |
|---|---|
![]() | ![]() |
| Traceroute | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| Dashboard | Traceroute |
|---|---|
![]() | ![]() |
Changelog
v1.7.14 — 2026-09-30
- AppImage — fix startup crash, take 2: v1.7.13's fix (stripping bundled system libraries) wasn't enough — the embedded Python interpreter itself (
libpython3.14.so.1.0, built against the Arch Linux dev machine's glibc 2.44) still required glibc symbols newer than the AppImageHub catalog's test machine (Ubuntu 22.04, glibc 2.35) has, so the AppImage kept crashing right on launch.build-appimage.shnow builds the PyInstaller bundle inside anubuntu:22.04container (viapodman) instead of on the host, so every embedded binary is linked against exactly the glibc version the AppImage needs to support.
v1.7.13 — 2026-09-30
- AppImage — fix startup crash (incomplete, see v1.7.14):
build-appimage.shwas bundling shared libraries (libz.so.1,libstdc++.so.6,libX11.so.6,libfontconfig.so.1, and others) straight from the Arch Linux build machine's very recent glibc. On older distros the AppImage crashed immediately on launch (GLIBC_ABI_DT_RELR' not found), caught by the AppImageHub catalog's automated test. These libraries are now stripped from the bundle so the AppImage falls back to the host system's own copies, which is the standard approach for AppImages.
v1.7.12 — 2026-08-12
- Traceroute — fix: under Flatpak (v1.7.11, see below — now removed),
traceroutealways resolved onPATHvia the host shim even when the host had no realtraceroutebinary installed, so the worker never fell back totracepathand the trace finished instantly with no hops and no error shown. It now falls back totracepathwhenevertracerouteproduces no parseable output at all, regardless of why it failed. - SSH terminal — askpass fix: when
DISPLAY/WAYLAND_DISPLAYare set (any GUI session) and ssh doesn't have a clean tty, it can try$SSH_ASKPASSfor the password prompt instead of the embedded terminal — silently failing auth if no askpass helper is installed.SSH_ASKPASS_REQUIRE=nevernow forces password prompts to always go through the terminal itself. - Flatpak packaging removed: the local KDE Linux manifest shipped in v1.7.11 is discontinued. Investigating the SSH password-prompt bug above surfaced a kernel-level limitation: a process relayed via
flatpak-spawn --hostcan never become the controlling-terminal owner of the forwarded pty (TIOCSCTTYrefused withEPERM— a different, unrelated session already owns it; this is an intentional kernel security boundary, not a bug). The only working around (script, allocating a fresh pty) fixes the password prompt but breaks live terminal-resize propagation for that session — judged a worse trade-off than not shipping Flatpak at all. AUR and the AppImage are the supported Linux install paths going forward.





