
nmlinux v1.7.11
Einheitliches Netzwerk-Toolkit für Linux — Python 3 + PySide6
NMLinux · v1.7.12
Ein vereinheitlichtes Netzwerk-Toolkit für Linux und macOS – untersuchen, verbinden, diagnostizieren.
NMLinux ist eine einzige, vereinheitlichte GUI, die 29 Netzwerkmodule in einem Fenster vereint: Schnittstellenüberwachung, WLAN, DNS, SSH-Terminal, Firewall-Ansicht, Topologiekarte, Traceroute und mehr. Von Grund auf in Python und PySide6 (Qt 6) entwickelt, mit 8 Oberflächensprachen und ohne externe Abhängigkeiten über die Standard-Systemwerkzeuge hinaus.
[!NOTE] NMLinux ist nicht mit dem Linux-Systemdaemon
/usr/bin/NetworkManager(NetworkManager von Red Hat/GNOME) verwandt. NMLinux ist ein eigenständiges Projekt, das von Grund auf in Python und PySide6 entwickelt wurde.
Entwickelt mit Claude Code (Anthropic) und dem Beitrag seines Autors.
Entwicklungsprozess
NMLinux wird mit KI-Unterstützung entwickelt – konkret mit Claude Code – und das wird in diesem Repo nirgendwo versteckt. Heutzutage nutzt fast jedes ernsthafte Softwareprojekt irgendwo in seiner Pipeline KI, ob es das zugibt oder nicht. Also ist „war KI beteiligt" nicht die interessante Frage. Die interessante Frage ist: Fängt irgendetwas es ab, wenn die KI etwas falsch macht?
Das hier fängt es ab, falls du lieber selbst prüfst, als mir aufs Wort zu glauben:
- 162 Tests —
pytest tests/ -v. Reine Logik plus eine Handvoll echter Qt-Widget-Tests (Menüs, Tabellen), ohne die interessanten Teile wegzumocken. docs/Decisions-Techniques.md— jede nicht offensichtliche technische Entscheidung, die verworfenen Alternativen und die gefundenen und behobenen Fehler (einschließlich KI-bedingter) – mit dokumentierter Begründung.docs/Architecture.mdunddocs/Carte-des-Modules.md— die tatsächliche Struktur des Codes, synchron gehalten mit dem, was ausgeliefert wird.- Ein i18n-Konsistenzcheck, der vor jedem Release läuft, um fehlende Übersetzungsschlüssel in den 8 unterstützten Sprachen zu finden.
Nichts davon existiert, weil KI nicht vertrauenswürdig wäre. Es existiert, weil nichts veröffentlicht werden sollte, ohne einen Prozess, der es prüft – handgeschriebener Code eingeschlossen. Beurteile das Ergebnis und wie es verifiziert wird, nicht das Werkzeug, das beim Schreiben geholfen hat.
Trotzdem einen Fehler gefunden? Das ist nützlich, nicht peinlich – eröffne ein Issue.
Community
GitHub Discussions sind geöffnet — teile Feedback, melde Ideen, stelle Fragen oder sag einfach Hallo. Der Autor hat über 30 Jahre Erfahrung in Infrastruktur und Betrieb und hat dieses Werkzeug entwickelt, weil gute, kostenlose und einfache Software auch für Linux existieren sollte.
Screenshots
Linux-Screenshots aus v1.2.7 – macOS-Screenshots aus v1.3.5. Die App hat jetzt 29 Module und 8 Oberflächensprachen (FR/EN/ES/DE/IT/PT/JA/ZH).
Linux (KDE)
| Dashboard | Topologie |
|---|---|
![]() | ![]() |
| Traceroute | WLAN |
|---|---|
![]() | ![]() |
macOS
| Dashboard | Traceroute |
|---|---|
![]() | ![]() |
Änderungsprotokoll
v1.7.12 — 2026-08-12
- Traceroute – Korrektur: Unter Flatpak (v1.7.11, siehe unten – inzwischen entfernt) wurde
tracerouteüber den Host-Shim immer aufPATHaufgelöst, selbst wenn auf dem Host kein echtestraceroute-Binärprogramm installiert war; daher griff der Worker nie auftracepathzurück und die Trace endete sofort ohne Hops und ohne angezeigten Fehler. Jetzt wird immer dann auftracepathzurückgegriffen, wenntraceroutekeinerlei auswertbare Ausgabe erzeugt – unabhängig davon, warum es fehlgeschlagen ist. - SSH-Terminal – Askpass-Korrektur: Wenn
DISPLAY/WAYLAND_DISPLAYgesetzt sind (jede GUI-Sitzung) und ssh kein sauberes tty hat, kann es für die Passwortabfrage$SSH_ASKPASSstatt des eingebetteten Terminals verwenden – was die Authentifizierung stillschweigend scheitern lässt, wenn kein Askpass-Helfer installiert ist.SSH_ASKPASS_REQUIRE=nevererzwingt nun, dass Passwortabfragen immer über das Terminal selbst laufen. - Flatpak-Paketierung entfernt: Das in v1.7.11 mitgelieferte lokale KDE-Linux-Manifest wird nicht weitergeführt. Die Untersuchung des obigen SSH-Passwortabfrage-Fehlers deckte eine Kernel-Grenze auf: Ein Prozess, der über
flatpak-spawn --hostvermittelt wird, kann niemals Eigentümer des Steuerterminals des weitergeleiteten pty werden (TIOCSCTTYwird mitEPERMverweigert – eine andere, nicht verwandte Sitzung besitzt es bereits; das ist eine beabsichtigte Kernel-Sicherheitsgrenze, kein Fehler). Der einzige funktionierende Workaround (script, das ein frisches pty anlegt) behebt die Passwortabfrage, bricht aber die Live-Größenänderungs-Weitergabe des Terminals für diese Sitzung – ein schlechterer Kompromiss, als auf Flatpak ganz zu verzichten. AUR und das AppImage sind künftig die unterstützten Linux-Installationswege.
v1.7.11 — 2026-08-03
- Flatpak-Paketierung (KDE Linux): Ein lokales Build-Manifest unter
packaging/flatpak/zielt auf KDE Linux und andere reine Flatpak-Distributionen. Host-CLI-Werkzeuge, die nmlinux extern aufruft (nmcli,pkexec,mount.cifs,ssh,nmap, …), werden überflatpak-spawn --host-Shims aufPATHangebunden, statt einzeln zu sandboxen; PySide6 stammt von Flathubsio.qt.PySide.BaseAppstatt vom PyPI-Rad. Nicht auf Flathub veröffentlicht – stattdessen wird ein einzelnes.flatpak-Bundle mitpackaging/flatpak/build-bundle.sherstellt und wie bereits beim AppImage jedem Release beigefügt. In v1.7.12 eingestellt – siehe oben.
v1.7.10 — 2026-08-03
- SSH-Terminal – Korrektur: Es wurde ein Wettlaufzustand behoben, bei dem das PTY mit der falschen (Standard 24×80) Größe starten konnte, wenn die tatsächliche Größe des Terminal-Widgets beim Start der Sitzung noch nicht bekannt war, wodurch die Größenänderungsanforderung stillschweigend verworfen wurde. Dadurch gerieten entfernte Vollbild-Anwendungen (z. B. Claude Code CLI, htop, vim) aus dem Takt mit der tatsächlichen Fenstergröße, sodass am unteren Bildschirmrand veralteter/übrig gebliebener Text stehen blieb, der erst verschwand, wenn neue Ausgabe darüber scrollte. Vom Benutzer gemeldet; mit einer echten interaktiven Sitzung reproduziert.
v1.7.9 — 2026-08-02
- SSH-Terminal – Kopieren/Einfügen: Text mit der Maus auswählen (Klicken-Ziehen, hervorgehoben), mit
Ctrl+Shift+Coder dem Rechtsklick-Menü kopieren; mitCtrl+Shift+Veinfügen (bestehend). Kopieren war bisher unmöglich – es gab gar keine Textauswahl. - SSH-Terminal – mehrere gleichzeitige Sitzungen: Die SSH-Seite öffnet nun jede Verbindung in einem eigenen Tab statt einer einzigen gemeinsamen Sitzung. Das erneute Verbinden mit einer gespeicherten Verbindung – selbst zweimal mit derselben – führte bisher dazu, dass die aktive Sitzung beendet wurde, ohne eine funktionierende Ersatzsitzung zu öffnen; jetzt öffnet jede Verbindungsaktion einen neuen, unabhängigen Tab.
v1.7.8 — 2026-07-14
- Speedtest – neuer LAN-Tab (iperf3): Neben dem bestehenden Internet-Speedtest führt ein neuer Tab reine Client-
iperf3-Tests entweder gegen eine gebündelte Liste öffentlicher Server (26 Länder) oder gegen einen gespeicherten benutzerdefinierten Server (z. B. einen internen Org-Server) durch. Unterstützt TCP/UDP, IPv4/IPv6/Auto und die Rückwärtsrichtung (Download), mit Jitter/Paketverlust bei UDP-Tests. Vorgeschlagen in Issue #6. - Neue optionale Abhängigkeit:
iperf3– installieren, um den LAN-Tab zu aktivieren; der Tab zeigt andernfalls ein Banner und bleibt deaktiviert.
v1.7.6 — 2026-07-05
- Asset Inventory – Aktualisieren per Rechtsklick: Ein oder mehrere bereits gescannte Zeilen per Rechtsklick auswählen (Mehrfachauswahl unterstützt) und „Ausgewählte aktualisieren“ wählen, um nur diese Hosts an Ort und Stelle erneut zu scannen, statt einen vollständigen Netzwerkscan erneut auszuführen.
- Asset Inventory – Feedback bei SSH-Authentifizierungsfehlern: Eine abgelehnte SSH-Anmeldung zeigt jetzt „SSH-Authentifizierung fehlgeschlagen“ an, statt stillschweigend zu scheitern, ohne die per Nmap erkannte Hostname-/OS-Basis zu verlieren – bestätigt gegen ein echtes Synology-NAS, bei dem DSMs Auto Block ein korrektes Passwort ablehnte, nachdem zuvor andere konfigurierte Anmeldedatensätze ausprobiert wurden.
v1.7.5 — 2026-07-04
- Ping-Monitor – Verzeichnis gespeicherter Ziele: Ein neues linkes Bedienfeld ermöglicht es, Ping-Ziele (Name, Host, Intervall) in einer persistenten Liste zu speichern, sodass überwachte Hosts einen App-Neustart überstehen, statt neu eingetippt werden zu müssen. Ein ★-Button in jeder aktiv überwachten Zeile speichert diesen Host zu jedem Zeitpunkt der Sitzung im Verzeichnis – ohne dass man vorher planen musste, bevor die App unerwartet geschlossen wird.
- Ping-Monitor – „Überwachung starten“: Ein gespeichertes Ziel auswählen und mit einem Klick die Überwachung starten, wobei das gespeicherte Intervall wiederverwendet wird.
v1.7.4 — 2026-07-04
- Asset Inventory – inkonsistente Scan-Ergebnisse behoben: Der Lebendigkeitscheck sendete einen einzelnen Ping mit 1-Sekunden-Timeout und ohne Wiederholung, wodurch ein echtes Gerät unter der eigenen parallelen Last des Scanners (bis zu 40 gleichzeitig getestete Hosts) oder wenn ein WLAN-Host zwischen Beacons kurz schlief, übersehen werden konnte – live gegen ein echtes Subnetz bestätigt, das bei wiederholten Läufen desselben Bereichs unterschiedliche Geräteanzahlen lieferte. Der Check wiederholt den Ping jetzt, bevor er auf den TCP-Port-Probe zurückfällt.
- Asset Inventory – neuer Button „Leere aktualisieren“: Nach einem Scan werden nur die IPs erneut gescannt, die keine Daten geliefert haben, statt den gesamten Bereich erneut zu scannen; neu gefundene Hosts werden in die vorhandenen Ergebnisse eingefügt.
v1.7.3 — 2026-07-03
- SMB – Freigaben über das Rechtsklick-Menü einhängen: Per Rechtsklick auf eine Freigabe im SMB-Tab lässt sich „Einhängen/Aushängen“ wählen, um sie an einem stabilen lokalen Pfad (
~/mnt/<host>_<share>) einzuhängen, der vom Terminal und jeder anderen App genutzt werden kann – keine flüchtige Browse-Ansicht. Nur für die Sitzung (keine fstab/systemd-Persistenz), Anmeldedaten aus den vorhandenen Benutzer-/Passwortfeldern wiederverwendet. Linux verwendetpkexec mount -t cifsmit einer Datei mit eingeschränkten Berechtigungen (niemals überpssichtbar); macOS verwendet direktmount_smbfs. Wird die Standard-Aushandlung von einem Server abgelehnt (bei älteren NAS-Geräten üblich), wird automatisch mit einem älteren SMB-Dialekt (vers=2.0) erneut versucht – beide Versuche laufen unter einer einzigen Authentifizierungsabfrage über einen dedizierten Hilfsprozess. - Neue optionale Abhängigkeit:
cifs-utils(Linux) zum Einhängen von SMB-Freigaben; in macOS integriert.
v1.7.2 — 2026-07-03
- macOS-Installation – zwei Bootstrap-Fehler auf einem nackten Mac behoben:
bootstrap_macos.sherzwingt dem Homebrew-Installer nicht mehrNONINTERACTIVE=1, was auf jedem frischen Administratorkonto sofort abbrach, statt nach dem sudo-Passwort zu fragen; der dokumentierte Einzeiler lädt das Skript jetzt zuerst herunter, statt es direkt inbashzu pipen, da verschachtelte interaktive Schritte (Xcode-CLT-Installer, Homebrews eigene sudo-Abfrage) beim Piping in den Eingabestrom des äußeren Skripts eingreifen konnten. - Universelles Rechtsklick-Menü – SMB ergänzt:
SmbNfsPagewar die einzige Zielseite, die im in v1.7.0 eingeführten modulübergreifenden Rechtsklick-System fehlte; ein Rechtsklick auf einen Host und die Wahl von SMB füllt nun das Host-Feld vor und startet sofort den Scan, im Menü fett, wenn Port 445 als offen erkannt wird. - i18n – verbleibende Dashboard-Strings übersetzt: Das Gateway-Latenz-Label, der Titel der TLS-Watchlist-Karte und ihre Statuszeile waren noch fest auf Französisch; jetzt in allen 8 Oberflächensprachen übersetzt.
v1.7.1 — 2026-07-02
- macOS 26 (Tahoe) – WLAN-SSID-Korrekturen: Von
system_profiler(liefert ohne Ortungsdienste<redacted>) auf CoreWLAN als primäre Datenquelle umgestellt; die App fragt jetzt beim ersten Start die Berechtigung für Ortungsdienste an; die WLAN-Seite zeigt nach Erteilung alle Netzwerke mit echten Namen. - macOS – Verbindungsmanager: Die verbundene SSID wird jetzt über CoreWLAN gelesen, mit
system_profilerfür den Sicherheitsmodus. - macOS – SMB: Klare Meldung „Authentifizierung erforderlich“, wenn das NAS Anmeldedaten verlangt; falsche smb.conf-Warnung von Homebrew-smbclient behoben.
- macOS – Potenziellen Absturz beim Beenden nach dem ersten Dialog zur Ortungsdienst-Berechtigung behoben.
v1.7.0 — 2026-07-02
- Universelles Rechtsklick-Kontextmenü auf jeder Tabelle, die IPs oder Hostnamen enthält – direkt zwischen Modulen navigieren, ohne Kopieren/Einfügen: Rechtsklick auf einen erkannten Host und Ping, Ports scannen, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, In Topologie anzeigen oder Zum Inventar hinzufügen wählen. Die Menüpunkte SSH/RDP/VNC erscheinen fett, wenn der entsprechende Port als offen erkannt wird. Die Beschriftungen sind vollständig in allen 8 Oberflächensprachen übersetzt.
- Quellseiten (geben Rechtsklick-Aktionen aus): IP-Scanner, Nmap, Ping, Port-Scanner, Traceroute, MTR, Topologie (Rechtsklick auf Knoten)
- Zielseiten (empfangen Host und füllen vor): Whois (
set_target+ automatische Abfrage), DNS (set_targetnur Vorbelegung), Ping (set_target+ Autostart), Traceroute (set_target+ Autostart), MTR (set_target+ Autostart), Port-Scanner (set_target+ Fokus), SSH / RDP / VNC (set_targetöffnet das vorbelegte Neue-Verbindung-Formular), Topologie (load_hostsfügt Knoten aus dem IP-Scanner-/Nmap-Scan ein, ohne erneut zu scannen – Gateway automatisch erkannt, Kanten gezeichnet, Ursprungsknoten rot hervorgehoben), Asset Inventory (prefill_hostsstartet den Anmeldedaten-Scan direkt auf den erkannten Hosts, überspringt die ICMP-Erkennungsphase) - Dashboard – Gateway-Ping-Diagramm: Live-Latenz-Sparkline, alle 2 Sekunden aktualisiert; farbcodiert (<20 ms grün / 20–100 ms orange / >100 ms rot / Timeout rot)
- Dashboard – TLS-Watchlist-Zusammenfassung: Die Statuskarte im Dashboard spiegelt automatisch den TLS-Watchlist-Status wider (OK / läuft ab / Alarm), ohne erneut abzufragen.
- Dashboard – Geokarten-Größenanpassung: Die Weltkarte dehnt sich jetzt horizontal aus, wenn das Fenster vergrößert wird.
v1.6.4 — 2026-06-28
- macOS: Die Menüleiste zeigt jetzt NMLinux statt Python – Ursache: Nach
exec()in Python löstNSBundle.mainBundle()auf dasPython.framework-Bundle (CFBundleName = "Python") auf, das Qt während der QApplication-Konstruktion liest; behoben, indem dieinfoDictionary()des Bundles gepatcht und native Menüpunkte über AppKit umbenannt werden, bevor das Anwendungsmenü erstellt wird.
v1.6.3 — 2026-06-28
- macOS: Erster Versuch, die Menüleiste mit
NSProcessInfo.setProcessName_überpyobjc-framework-Cocoazu korrigieren (durch v1.6.4 ersetzt).
v1.6.2 — 2026-06-28
- macOS: Das Bash-Launcher-Skript in
install_macos_app.shwurde durch einen kompilierten C-Stub ersetzt, damit macOS das.app-Bundle korrekt dem laufenden Prozess zuordnet;setprognameundsys.argv[0]-Override als Fallback ergänzt.
v1.6.1 — 2026-06-25
- SSH-Terminal – Remote-Echo behoben: Tastatureingaben im eingebetteten SSH-Terminal wurden an die entfernte Shell gesendet, aber nie zurückgegeben (die Tastatur schien nach dem Login „tot“ zu sein). nmlinux erzwang das lokale PTY-Echo aus, und ssh übertrug dieses „kein Echo“ über seine Terminalmodi (pty-req) auf das entfernte pty, sodass die entfernte Shell keine Eingaben mehr zurückgab. Auf einer frischen Ubuntu-26.04-VM reproduziert (aktuelles OpenSSH wendet diese Modi zuverlässig an). Das Terminal belässt das PTY jetzt im Normalmodus und überlässt ssh das Echo, wie bei echten Terminalemulatoren.
v1.6.0 — 2026-06-24
- Asset Inventory – WinRM Windows (vollständig): Host-Erkennung über TCP-Port-Probe, wenn ICMP von der Windows-Firewall blockiert wird; PowerShell verwendet jetzt den vollständigen absoluten Pfad + EncodedCommand (base64), um zu verhindern, dass cmd.exe Pipes
|interpretiert; vollständige Fallback-Kette ohne Admin-Rechte: OS überver, CPU über Registrierung, RAM übersysteminfo, Datenträger überwmic→fsutil(sprachabhängig: EN Komma / FR Leerzeichen) →dir /-C - Asset Inventory – Multi-Anmeldedaten-SSH: Mehrere SSH-Anmeldedatensätze unterstützt; macOS-Datenträger behoben (
/System/Volumes/Data), Apple-Silicon-CPU-Fallback (hw.model), Synology (/volume1), Unraid (/mnt/user) - Fehlerkorrekturen: WinRM-Fehler werden jetzt in der Tabelle angezeigt statt stillschweigend zurückzufallen; WinRM/SNMP-Host-Erkennung wird nicht mehr durch vorhandene SSH-Anmeldedaten blockiert; pywinrm-Timeout korrigiert.
v1.5.3 — 2026-06-24
- macOS .app – Homebrew-Werkzeugerkennung: Über Homebrew installierte
sshpass,nmapundsnmpgetwerden jetzt gefunden und über ihren absoluten Pfad aufgerufen;.app-Bundles unter macOS erben den Homebrew-PATH (/opt/homebrew/bin,/usr/local/bin) nicht, daher wurden zuvor installierte Werkzeuge stillschweigend ignoriert. - macOS-Update-Pfad: Das Ausführen von
git pull && bash packaging/install_macos_app.shaus dem Repo-Root ist jetzt die dokumentierte Upgrade-Methode; das Skript verwaltet seine eigene venv (~/.local/share/nmlinux/venv) und benötigt kein systemweitespipoderpipx.
v1.5.2 — 2026-06-24
- Asset Inventory – neues Modul (29.); scannt einen CIDR-Bereich und sammelt OS, CPU, RAM, Datenträger und Uptime von jedem Host per SSH, WinRM, SNMP oder Nmap; unterstützt mehrere Anmeldedatensätze pro Protokoll (der Reihe nach ausprobieren); Zero-Retention-Richtlinie: Anmeldedaten werden nie auf die Festplatte geschrieben und nach dem Scan aus dem Speicher entfernt; Ergebnisse als JSON, CSV oder Markdown exportieren; animierte Geokarte zum Abschnitt IP-Geolokalisierung des Dashboards hinzugefügt
- SSH-Sammlungskorrekturen: awk-Quote-Fehler im Datenträger-Befehl behoben;
free -hdurch BusyBox-kompatiblesfreeersetzt; der macOS-Codepfad verwendet jetztsw_versfür den OS-Namen,hw.modelals Fallback für Apple-Silicon-CPU,/System/Volumes/Datafür das APFS-Benutzerdaten-Volume; Synology-/Unraid-Volumes (/volume1,/mnt/user) werden vor Root erkannt;df | tail -1 || …-Fehlalarm-Muster mittest -d-Wächtern behoben;lsb_release-Ausgabe von umgebenden Anführungszeichen befreit; mehrere SSH-/WinRM-Anmeldedatensätze unterstützt (pro Host der Reihe nach ausprobieren)
v1.5.0 — 2026-06-17
- Dateiübertragungsserver – neues Modul zum Starten/Stoppen eines leichtgewichtigen TFTP- oder HTTP-Servers direkt aus der App; klassischer Anwendungsfall: Sichern und Wiederherstellen von Router-, Switch- oder Druckerkonfigurationen; immer nur ein Server aktiv (TFTP oder HTTP), konfigurierbarer Port und Wurzelverzeichnis, lokale IPs als Kopieren-in-Zwischenablage-Buttons; HTTP enthält Verzeichnislisting (im LAN aus jedem Browser durchsuchbar), GET (Download) und POST/PUT (Upload); TFTP unterstützt GET und PUT (bidirektional), Port 69 erfordert Root – die App zeigt bei Berechtigungsfehler einen Button „Als Root starten (pkexec)“; Live-Übertragungsprotokolltabelle (Zeitstempel, Dateiname, Client-IP, Richtung ↑/↓, Größe); Port-Traversal-Schutz; 8 Oberflächensprachen; neue Abhängigkeit:
tftpy
v1.4.3 — 2026-06-14
- TLS-Watchlist-Korrekturen: Selbstsignierte und nicht vertrauenswürdige Zertifikate werden jetzt korrekt als „⚠ Ungültig / nicht vertrauenswürdiges Zertifikat“ (orange) statt grün angezeigt; SSL-Ausnahmebehandlung erweitert, um alle
ssl.SSLError-Unterklassen abzudecken; Einträge zeigen jetzt „… (prüfe)“ während der Hintergrundprüfung und „— (nicht erreichbar)“, wenn der Host nicht erreicht werden kann.
v1.4.2 — 2026-06-14
- TLS Watchlist – persistente Liste von Hostnamen zur Überwachung des Zertifikatsablaufs; Hosts mit
+ Watchhinzufügen (verwendet aktuellen Host/Port) oder manuell im Bedienfeld; die Hintergrundprüfung läuft automatisch 2 Sekunden nach dem Start; der Sidebar-Eintrag „TLS Inspector“ zeigt einen farbigen Punkt: rot, wenn ein Zertifikat abgelaufen ist, orange, wenn ein Zertifikat innerhalb von 30 Tagen abläuft; Schaltfläche „Erneut prüfen“ im Bedienfeld; die Liste zeigt den Status pro Eintrag (✓ / ⚠ / ABGELAUFEN) mit Farbcodierung.
v1.4.1 — 2026-06-14
- macOS – IP-Scanner: MAC-Adressen-, Anbieter- und Schnittstellensuche unter macOS behoben;
_arp_entry()ruft jetzt unter macOSarp -n <ip>auf und parst dessen Ausgabeformat (? (IP) at AA:BB:CC on en0), statt/proc/net/arpzu lesen (nur Linux); alle vier Scanner-Spalten werden unter macOS jetzt korrekt befüllt. - VNC-Hilfe: Ein Hinweis in allen 8 Sprachen ergänzt, der klärt, dass Linux standardmäßig keinen VNC-Server hat, und gängige Installationsoptionen auflistet (x11vnc, tigervnc-server, wayvnc).
v1.4.0 — 2026-06-14- macOS — IP-Scanner: getent (nur Linux) wurde durch Pythons socket.gethostbyaddr() für eine plattformübergreifende Reverse-DNS-Auflösung ersetzt; die Hostnamenauflösung funktioniert jetzt nativ auf macOS ohne zusätzliches Werkzeug
- macOS — SMB-Browser: von
smbclient(benötigt Homebrew-Samba) aufsmbutil view(integriertes macOS-Werkzeug) umgestellt; die SMB-Freigabeliste funktioniert jetzt auf macOS ohne Installation - macOS — NFS-Browser:
showmountist auf macOS integriert, unterstützt aber kein--no-headers; Flag auf macOS entfernt, Kopfzeile im Parser übersprungen; die NFS-Exportliste funktioniert jetzt nativ - macOS — RDP: Wenn
xfreerdpnicht gefunden wird, wird auf das URL-Schemaopen rdp://zurückgegriffen; öffnet Microsoft Remote Desktop (App Store), falls installiert, mit vorausgefülltem Host, Port, Benutzername und Domäne - macOS — VNC: Wenn
vncviewernicht gefunden wird, wird auf das URL-Schemaopen vnc://zurückgegriffen; öffnet die macOS-Bildschirmfreigabe (integriert, keine Installation erforderlich)
v1.3.9 — 2026-06-13
- SSH-Agent-Weiterleitung — neues Kontrollkästchen „Agent forwarding" im SSH-Verbindungsformular; fügt
-Azumssh-Befehl hinzu; ermöglicht das Springen zwischen Servern, ohne den privaten Schlüssel zu kopieren (PC → A → B); erfordert einen aktiven SSH-Agenten (SSH_AUTH_SOCK); kontextbezogene Hilfe in allen 8 Sprachen aktualisiert
v1.3.8 — 2026-06-13
- Befehlspalette (Strg+P) — sofortige Tastaturnavigation zu jedem der 27 Module; Fuzzy-Suche nach Name und Schlüsselwörtern (z. B. „firewall", „tls", „ssh key", „scan"); Hoch-/Runter-Pfeile + Eingabetaste oder einfacher Klick zum Navigieren; öffnet sich mit Strg+P überall in der App
- Export-Manager — exportieren Sie einen vollständigen Netzwerk-Snapshot (Schnittstellen, Routen, DNS-Resolver) über Datei → Netzwerkbericht exportieren… als JSON, Markdown, Klartext oder PDF (optional:
pip install reportlab) - Export-Schaltflächen auf Modulebene — Export-Schaltflächen zu den Seiten Interfaces, DNS, Firewall, SSH-Verbindungen und Verbindungsmanager hinzugefügt; jede Seite exportiert ihre aktuellen Daten im gewählten Format; die Dateinamenserweiterung wird live aktualisiert, wenn sich der Formafilter ändert
v1.3.6 — 2026-06-12
- Topologie – Gerätesymbole — jeder Knoten zeigt jetzt ein passendes Lucide-SVG-Symbol für seinen Gerätetyp (Router/WLAN, Computer/Laptop, Drucker, NAS/Server, Smartphone, Netzwerk-Switch, Raspberry Pi) anstelle eines generischen Kreises; 5 neue gebündelte SVG-Symbole (
printer,server,smartphone,cpu,laptop) - Topologie – mDNS-Erkennung — Gerätetyp wird über
avahi-browseerkannt (optional, läuft parallel zum nmap-Scan); erkennt Drucker (_ipp._tcp,PDL Printer), Android-Smartphones und Fernseher (_googlecast._tcp,_androidtvremote2._tcp), Apple-Macs (am=Mac16,x-Modell in AirPlay-TXT), NAS-Geräte (Synology meldetmodel=Xserve), KDE-Connect-Desktops; fällt auf MAC-Anbieter-OUI und Hostname-Heuristiken zurück, wenn avahi nicht verfügbar ist - Topologie – Detailbereich zeigt die erkannte Geräteklasse (Drucker, Smartphone, NAS …) anstelle des generischen Labels „Host"; i18n in allen 8 Sprachen
- Traceroute – automatischer Zoom — die Weltkarte zoomt automatisch und zentriert sich am Ende jeder Route auf den Begrenzungsrahmen der geolokalisierten Hops; wird deaktiviert, wenn der Benutzer manuell verschiebt oder zoomt; wird bei der nächsten Traceroute wiederhergestellt; Rechtsklick setzt auf die vollständige Weltansicht zurück
v1.3.5 — 2026-06-06
- macOS-Kompatibilität — alle 9 Netzwerkmodule laufen jetzt auf macOS, ohne das Linux-Verhalten zu beeinträchtigen; jedes Modul erkennt die Plattform beim Start (
_IS_MACOS) und verzweigt zu nativen macOS-Befehlen:route -n get default,ifconfig,scutil --dns,networksetup,system_profiler SPAirPortDataType,pfctl,netstat -ib; die Rechteausweitung verwendetosascript+with administrator privilegesanstelle vonpkexec; die Monospace-Schriftart verwendetMenloanstelle vonMonospace - Module mit dualen Linux/macOS-Pfaden: Dashboard, Interfaces, Wi-Fi, Topologie, Bandbreite, Firewall (pf.conf + pfctl), Verbindungsmanager, Hosts-Datei, MTR
- Unveränderte Module (Werkzeuge auf beiden Plattformen identisch): DNS, Nmap-Scan, SNMP, Whois
v1.3.2 — 2026-06-06
- i18n auf 8 Sprachen erweitert — Italiano, Português, 日本語 (Japanisch) und 中文 (vereinfachtes Chinesisch) hinzugefügt; die vollständige Benutzeroberfläche (alle 27 Module, ~720 Übersetzungsschlüssel) ist jetzt in FR / EN / ES / DE / IT / PT / JA / ZH verfügbar; nach dem Ändern der Sprache in den Einstellungen erscheint ein Neustart-Hinweis
- Kontextbezogene Hilfe in 8 Sprachen — das
?-Abzeichen-Panel (Beschreibung, Anwendungsbeispiele und äquivalente CLI-Befehle) deckt jetzt für jedes Modul alle 8 Sprachen ab; zuvor fielen JA und ZH auf Englisch zurück - Fehlerbehebung — Navigations-Tooltips für SMB/NFS und Hosts-Datei wurden unabhängig von der gewählten Sprache auf Französisch angezeigt; fehlende Schlüssel
nav_hint_smb_nfsundnav_hint_hostszu allen 7 nicht-französischen Sprachblöcken hinzugefügt
v1.3.1 — 2026-06-05
- SSH-Schlüsselverwaltung — listet alle Schlüsselpaare in
~/.ssh/auf (Datei, Typ, Bits, Kommentar, SHA256-Fingerabdruck); generiert Ed25519- oder RSA-4096-Schlüssel mit optionaler Passphrase (Erkennung von Abweichungen, automatischer Dateiname je nach Typ); öffentlichen Schlüssel in die Zwischenablage kopieren; auf einem Remote-Server überssh-copy-idin einem Inline-Terminal mit stdin-Unterstützung für Passwortabfragen bereitstellen; Schlüsselpaare mit Bestätigung löschen; erstellt~/.ssh/automatisch, falls nicht vorhanden; i18n: fr / en / es / de
v1.3.0 — 2026-06-03
- TLS-/SSL-Inspektor — Zertifikat eines beliebigen Servers prüfen: Subject-CN, SANs, Aussteller, Gültigkeitsdaten (farbcodiert: grün / orange < 30 Tage / rot abgelaufen), Seriennummer, TLS-Protokoll, Cipher-Suite und Zertifikatskette (über
openssl s_client); funktioniert für gültige, abgelaufene und selbstsignierte Zertifikate; verständliche Fehlermeldungen bei nicht erreichbaren Hosts - SMB-/NFS-Browser — listet Freigaben und Exporte von jedem Server auf; SMB-Tab:
smbclient -Lmit optionalen Anmeldedaten, zeigt Freigabename / Typ / Kommentar; NFS-Tab:showmount -e, zeigt Exportpfad und Zugriffsliste; erkennt fehlende Werkzeuge und zeigt distributionsspezifische Installationsanweisungen - Hosts-Datei-Editor —
/etc/hostsanzeigen und bearbeiten; Tabelle mit Aktivieren/Deaktivieren-Umschalter, Einträge über Dialog hinzufügen/bearbeiten/löschen; nach IP oder Hostname filtern; speichert überpkexec cp(polkit-Authentifizierungsdialog) - install.sh — neues Skript für Debian / Ubuntu / Linux Mint: erstellt ein venv in
~/.local/share/nmlinux/venv, installiert Systemabhängigkeiten über apt, erstellt Launcher und.desktop-Eintrag (behebt den PEP-668-Fehlerexternally-managed-environment)
v1.2.9 — 2026-05-30
- VNC — neues Modul zur Verwaltung von VNC-Verbindungsprofilen; Gruppen/Untergruppen wie bei SSH und RDP; startet
vncviewer(TigerVNC); kompatibel mit macOS ARD (DH30-Authentifizierung wird nativ von vncviewer behandelt); Passwort wird nie gespeichert; erkennt fehlendesvncviewermit distributionsspezifischen Installationsanweisungen - Über – Werkzeuge & Dienste — neuer Abschnitt, der alle Drittanbieter-Werkzeuge und APIs auflistet, von denen die App abhängt
- Sidebar-i18n — alle 23 Navigations-Tooltips sind jetzt in FR/EN/ES/DE übersetzt (waren fest auf Französisch kodiert); Beschriftungen korrigiert: Topologie, Verbindungen, Subnetz
v1.2.8 — 2026-05-30
- Remotedesktop (RDP) — neues Modul zur Verwaltung von Windows-RDP-Verbindungsprofilen; Gruppen/Untergruppen wie bei SSH; startet
xfreerdpals externen Prozess; Passwort wird beim Verbinden abgefragt und nie gespeichert; Felder: Host, Port, Benutzername, Domäne, Auflösung, Vollbild; erkennt fehlendesxfreerdpmit distributionsspezifischen Installationsanweisungen (Arch / Debian / Fedora)
v1.2.7 — 2026-05-26
- Gebündelte Lucide-Symbole — 21 SVG-Symbole von Lucide (MIT) sind jetzt in
assets/icons/gebündelt; werden zur Laufzeit überQSvgRenderergerendert; gefärbt#60a5fa; die App benötigt kein System-Icon-Theme mehr (Breeze, Adwaita, Papirus …)
v1.2.6 — 2026-05-24
- GNOME-/Adwaita-Kompatibilität — Symbole auf Nicht-KDE-Desktops behoben:
main.pyerkennt das GTK-Icon-Theme jetzt automatisch übergsettingsund wendet es auf Qt an; erweiterte Fallback-Ketten für Wi-Fi, Traceroute, Speedtest, Interfaces, Portscanner, Firewall, MTR;themed_icon()validiert jetzt, dass eine echte Pixmap existiert, bevor ein Theme-Symbol akzeptiert wird - NixOS-/KDE-Kompatibilität — alle Symbole auf NixOS behoben: Breeze 6.x enthält nur SVGZ-Symbole; der Nix-Wrapper fügt jetzt
qt6.qtsvgzuQT_PLUGIN_PATHhinzu, damit Qt SVG-Symbole rendern kann;themed_icon()probiert die Größen 22/24/16/32/48 (Breeze verwendet 22 px, nicht 24); das Theme wird aufbreezeerzwungen, wenn das Nix-gebündelte Symbolset erkannt wird; prüft zusätzlich/etc/xdg/kdeglobalsauf systemweite KDE-Konfiguration
v1.2.5 — 2026-05-23
- MTR — eingebettetes My Traceroute: führt
mtr --reportaus, analysiert die Textausgabe, zeigt eine Live-Tabelle mit Verlust %, RTT Letzter/Ø/Bester/Schlechtester/Jitter pro Hop, farbcodiert nach Schwere des Verlusts; kontinuierlicher Modus; CSV- und TXT-Export - Speedtest — abhängigkeitsfreier Geschwindigkeitstest über
curl+ Cloudflare (speed.cloudflare.com): Download (25 MB), Upload (10 MB), Ping zu1.1.1.1; bis zu 5 Läufe in JSON gespeichert; historisches Liniendiagramm (Download/Upload) - Firewall-Viewer — schreibgeschützter Regelsatz-Viewer: analysiert
/etc/nftables.confund/etc/iptables/*.rulesohne Root; Live-Regelsatz überpkexec nft list ruleset; Spalten: Tabelle / Kette / Regel / Port / Aktion / Kommentar; farbcodierte Aktionen; Live-Filter - Sidebar-Hinweise — jeder Navigationspunkt zeigt jetzt ein dezentes
?-Abzeichen; beim Überfahren wird ein Tooltip mit einer Beschreibung des Moduls angezeigt; ein vertikaler Trenner wurde zwischen Sidebar und Inhaltsbereich hinzugefügt - i18n — alle neuen Module in Französisch, Englisch und Spanisch übersetzt
v1.2.0 — 2026-05-22
- Theme-Anpassung — vollständige Unterstützung für hell/dunkel-Umschaltung zur Laufzeit auf allen Seiten; neue
core/theme.pymitis_dark(),color_ok(),color_err(); benutzerdefinierte Painter-Widgets (_Graph,_MapWidget) lesen die Palette zum Zeichenzeitpunkt; alle fest codierten Catppuccin-Mocha-Farben wurden durch semantische Qt-Palettenrollen ersetzt - Subnetzmaske — die Seiten Dashboard, Interfaces und Verbindungen zeigen jetzt die Subnetzmaske in Punkt-Dezimal-Schreibweise (z. B.
255.255.255.0) an, abgeleitet aus dem CIDR-Präfix - Bandbreitenmonitor — expliziter Start/Stopp-Button ersetzt den unzuverlässigen Autostart beim Laden der Seite
- CSV/TXT-Export — die Seiten Nmap und Traceroute bieten jetzt Export-CSV- und Export-TXT-Buttons (erscheinen nach Abschluss von Scan/Traceroute)
- i18n — neue Übersetzungsschlüssel für alle oben genannten Funktionen (fr/en/es/de)
v1.1.1 — 2026-05-16
- SSH-Terminal — vollständige Neufassung mit pyte (VT100/xterm-Emulator) + QPainter-Renderer; 2000-Zeilen-Rückscrollpuffer, blinkender Cursor, 256-Farben-Unterstützung
- Visuelles Traceroute — Weltkarte (Natural Earth 110m), Live-Geolokalisierung pro Hop (ip-api.com), interaktives Zoomen/Verschieben, dualer Parser (
traceroute/tracepath-Fallback) - Bandbreitenmonitor — Echtzeit-Durchsatz pro Schnittstelle, 60-Sekunden-Gleitdiagramm, Live-Geschwindigkeiten, Sitzungssummen und Spitzenwerte
- Wake on LAN — reines Python-Magic-Packet (UDP-Broadcast), persistentes Host-Buch (JSON)
- IP-Scanner — Hostnamenauflösung über
getent/avahi/nmblookup; MAC-Adresse, Anbieter (IEEE-OUI 39K Einträge), Schnittstellenspalten; CSV/TXT-Export aktualisiert - i18n — vollständige fr/en/es/de-Übersetzung für alle neuen Seiten
v1.0.0 — 2026-05-14
Erste öffentliche Veröffentlichung — 13 Module: Dashboard, Interfaces, Wi-Fi, Subnetzrechner, DNS-Lookup, Ping-Monitor, IP-Scanner, Portscanner, Nmap, Whois, SNMP, SNTP/NTP, SSH.
Funktionen
| Modul | Beschreibung |
|---|---|
| Dashboard | Lokale Rechnerinfo, Gateway, öffentliche IP, Geolokalisierung, DNS-Resolver |
| Verbindungsmanager | NetworkManager-Profile über nmcli: auflisten, filtern, verbinden/trennen/bearbeiten/löschen |
| Interfaces | Tabelle der Netzwerkschnittstellen mit Details pro Schnittstelle (ip + nmcli) |
| Wi-Fi | Verfügbare Netzwerke, Signalstärkebalken, Sicherheit, verbundenes Netzwerk hervorgehoben |
| Subnetzrechner | Netzwerk-/Broadcast-/Hostbereich aus CIDR, Hosttabelle mit bis zu 4096 Einträgen |
| DNS-Lookup | dig-basierte Abfrage für A, AAAA, MX, TXT, NS, CNAME, PTR, SOA, ANY |
| Ping-Monitor | Kontinuierlicher Ping an mehrere Hosts, RTT-Statistiken, Paketverlust in % |
| IP-Scanner | CIDR-/Bereichs-Ping-Scan, 50 Threads, Hostname (DNS/mDNS/NetBIOS), MAC-Adresse, Anbieter (OUI), Schnittstelle, CSV- und TXT-Export |
| Portscanner | TCP-Connect-Scan, 200 Threads, Dienst-Presets, CSV- und TXT-Export |
| Nmap | 7 Scan-Modi, XML-Ausgabeanalyse, Host-/Port-/Protokoll-/Status-/Dienst-Tabelle, CSV- und TXT-Export |
| Whois | Rohe Whois-Ausgabe in Monospace |
| SNMP | snmpwalk/snmpget, v1/v2c, 10 OID-Presets, Ergebnistabelle |
| SNTP / NTP | Reiner Python-RFC-4330-UDP-Client, Offset/Verzögerung/Stratum/Referenz |
| SSH | Eingebettetes PTY-Terminal (pyte/VT100), gespeicherte Verbindungen (JSON), Schlüsselauthentifizierung, Rückscrollpuffer |
| Remotedesktop | RDP-Verbindungsprofile (Gruppen/Untergruppen); startet xfreerdp; Passwort wird nie gespeichert |
| VNC | VNC-Verbindungsprofile (Gruppen/Untergruppen); startet vncviewer (TigerVNC); macOS-ARD-kompatibel; Passwort wird nie gespeichert |
| SSH-Schlüsselverwaltung | Schlüsselpaare in ~/.ssh/ auflisten (Typ, Bits, Fingerabdruck); Ed25519/RSA 4096 erzeugen; öffentlichen Schlüssel kopieren; via ssh-copy-id auf Server bereitstellen; Paare mit Bestätigung löschen |
| TLS-Inspektor | Zertifikatsdetails: CN, SANs, Aussteller, Gültigkeit + Ablauf-Countdown, Seriennummer, Protokoll, Cipher, Kette; Watchlist mit Hintergrund-Ablaufmonitor und Seitenleisten-Farbpunkt |
| SMB / NFS | SMB-Freigaben (smbclient) und NFS-Exporte (showmount) von jedem Server oder NAS auflisten; optionale Anmeldedaten für SMB |
| Hosts-Datei | /etc/hosts anzeigen/bearbeiten: Einträge hinzufügen, löschen, umschalten; filtern; über pkexec speichern |
| Visuelles Traceroute | Hop-für-Hop-Route auf einer Weltkarte, Live-Geolokalisierung (ip-api.com), Zoom & Verschieben, CSV- und TXT-Export |
| MTR | Eingebettetes My Traceroute: Verlust %, RTT Letzter/Ø/Bester/Schlechtester/Jitter pro Hop, farbcodiert, CSV- und TXT-Export |
| Firewall-Viewer | Schreibgeschützter nftables- + iptables/ip6tables-Regelsatz (ohne Root); live über pkexec; nach Tabelle/Kette/Aktion filtern |
| Speedtest | Download/Upload/Ping über Cloudflare; kein externes Werkzeug außer curl; Verlaufsdiagramm (letzte 5 Läufe) |
| Bandbreite | Echtzeit-Durchsatz pro Schnittstelle: 60-s-Gleitdiagramm, Live-Geschwindigkeiten, Sitzungssummen, Spitzenwert |
| Wake on LAN | Reines Python-Magic-Packet (UDP-Broadcast), persistentes Host-Buch, kein externes Werkzeug erforderlich |
| Topologiekarte | Automatische Erkennung von LAN-Geräten über nmap -sn; interaktiver Graph mit verschiebbaren Knoten, Zoom/Verschieben, Detailbereich |
| Einstellungen | Sprachauswahl (FR / EN / ES / DE / IT / PT / JA / ZH), dauerhaft gespeichert; Neustart nach Änderung erforderlich |
| Befehlspalette | Strg+P-Overlay: Fuzzy-Suche über alle 29 Module nach Name oder Schlüsselwort |
| Dateiübertragung | Bedarfsweise TFTP- oder HTTP-Server; konfigurierbarer Port und Wurzelverzeichnis; lokale IPs als Kopier-Buttons; Live-Protokolltabelle (Dateiname, Client-IP, Richtung ↑/↓, Größe); HTTP-Verzeichnisliste + GET/POST/PUT; TFTP GET + PUT; Port 69 fragt pkexec ab |
| Export | Datei → Netzwerkbericht exportieren (JSON/Markdown/Text/PDF); modulweiser Export auf Interfaces, DNS, Firewall, SSH, Verbindungen |
Anforderungen
Systemwerkzeuge
Linux — die meisten sind bei einer Standardinstallation bereits vorhanden:```bash
Arch / EndeavourOS
sudo pacman -S iproute2 networkmanager bind-tools nmap whois net-snmp iputils mtr curl
Debian / Ubuntu
sudo apt install iproute2 network-manager dnsutils nmap whois snmp mtr-tiny curl
Fedora
sudo dnf install iproute NetworkManager bind-utils nmap whois net-snmp-utils mtr curl
**macOS** — Installation über [Homebrew](https://brew.sh):```bash
# Required
brew install nmap mtr curl
# Optional — enable additional modules
brew install whois # WHOIS page
brew install net-snmp # SNMP page (snmpwalk / snmpget)
brew install samba # SMB scan with credentials (smbclient)
macOS bringt
ping,dig,traceroute,netstat,ifconfig,smbutilundroutenativ mit.networksetupundscutilsind integrierte macOS-Tools, keine Installation erforderlich. Auch die OUI-Herstellerabfrage im IP-Scanner benötigt keine Installation — diemanuf-Datenbank von Wireshark wird bei der ersten Verwendung automatisch im Hintergrund heruntergeladen und lokal zwischengespeichert.
Optionale Tools
| Tool | Funktion | Linux | macOS |
|---|---|---|---|
xfreerdp / xfreerdp3 | Remotedesktop (RDP) | Arch: freerdp · Ubuntu ≤24.04: freerdp2-x11 · Ubuntu 26.04+: freerdp3-x11 | optional — greift auf Microsoft Remote Desktop zurück (open rdp://) |
vncviewer | VNC | Arch: tigervnc · Debian: tigervnc-viewer | optional — greift auf die macOS-Bildschirmfreigabe zurück (open vnc://, integriert) |
nm-connection-editor | Verbindungen aus dem Verbindungsmanager bearbeiten | Arch: nm-connection-editor | — (Stattdessen öffnen sich die Systemeinstellungen) |
traceroute | Traceroute-Alternative (standardmäßig wird tracepath verwendet) | Arch: traceroute | integriert |
mount.cifs (cifs-utils) | SMB-Freigaben aus dem Kontextmenü einhängen | Arch/Debian: cifs-utils | integriert (mount_smbfs) |
iperf3 | Geschwindigkeitstest — LAN-Tab | Arch: iperf3 · Debian/Ubuntu: iperf3 | brew install iperf3 |
Python
- Python 3.11+
- PySide6 6.6+
- ptyprocess 0.7+
- pyte 0.8+ (
pip install pyteodersudo pacman -S python-pyte) - tftpy 0.8+ (
pip install tftpyodersudo pacman -S python-tftpy) — Dateiübertragungsmodul
Installation
Option 1 — Arch Linux / Manjaro / EndeavourOS (AUR)```bash
yay -S nmlinux
Alle Abhängigkeiten (PySide6, ptyprocess, pyte, nmcli, …) werden automatisch verwaltet.
### Option 2 — NixOS / Nix
Direkt mit der gebündelten `flake.nix` ausführen — keine systemweite Installation erforderlich:```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
nix run .
Oder eine Entwicklungsshell starten:```bash nix develop python3 -m nmlinux.main
Alle Python-Abhängigkeiten (PySide6, ptyprocess, pyte, tftpy) und Systemwerkzeuge (nmcli, nmap, freerdp, vncviewer, mtr, avahi-browse…) werden automatisch über den Nix-Wrapper bereitgestellt.
### Option 4 — AppImage (beliebige Linux-Distribution, keine Installation)
Laden Sie `NMLinux-x.y.z-x86_64.AppImage` aus der [neuesten Version](https://github.com/thongor77/nmlinux/releases/latest) herunter:```bash
chmod +x NMLinux-*.AppImage
./NMLinux-*.AppImage
Keine Installation erforderlich — Python, Qt und alle NMLinux-Module sind in einer einzigen Datei gebündelt.
Funktioniert auf jedem x86_64-Linux mit glibc 2.17+ (Ubuntu 16.04+, Fedora 26+, Arch, Mint usw.).
Systemnetzwerk-Tools (
nmap,whois,mtr…) sind nicht gebündelt — installiere sie über deinen Paketmanager, damit die entsprechenden Module funktionieren. Siehe Requirements unten.
Option 5 — macOS
Schnellster Weg — Einzeiler-Bootstrap. Funktioniert auf einem komplett nackten Mac: installiert Xcode Command Line Tools, Homebrew, alle Systemtools und dann NMLinux selbst. Kann bedenkenlos erneut ausgeführt werden (aktualisiert statt neu zu installieren):```bash curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh
Installiere systemweit (`/Applications`) anstelle von `~/Applications`:```bash
curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh --system
Kein Apple-Entwicklerkonto oder kostenpflichtige Notarisierung nötig — unter der Haube steckt dasselbe Open-Source-Skript
install_macos_app.sh, das nur für dich abgerufen und ausgeführt wird. Das Skript ist schlichtes, lesbares Bash; du kannst/tmp/bootstrap_macos.shgerne öffnen und lesen, bevor du es ausführst, oder es direkt hier einsehen:packaging/bootstrap_macos.sh.Erst herunterladen, dann ausführen (statt direkt in
bashzu pipen) ist Absicht: Auf einem frischen Mac stößt das Skript verschachtelte interaktive Schritte an (Xcode-Command-Line-Tools-Installer, Homebrews eigener Installer, der nach deinemsudo-Passwort fragt), die vom Terminal lesen — wenn das Skript direkt inbashgepiped wird, können diese verschachtelten Eingabeaufforderungen den eigenen Eingabestrom des Skripts stören und es vorzeitig stoppen. Die Ausführung aus einer heruntergeladenen Datei vermeidet das vollständig.
Manuelle Installation — wenn du jeden Schritt lieber selbst ausführen möchtest oder bereits Homebrew hast:```bash
1. Install Homebrew system tools (see Requirements above)
brew install nmap mtr curl
2. Clone and install
git clone https://github.com/thongor77/nmlinux.git cd nmlinux bash packaging/install_macos_app.sh
To update: `git pull && bash packaging/install_macos_app.sh`
To uninstall: `bash packaging/uninstall_macos.sh`
To install system-wide (`/Applications`): `bash packaging/install_macos_app.sh --system`
Das Skript installiert die folgenden Python-Pakete automatisch in die venv:
- `PySide6`, `ptyprocess`, `pyte`, `tftpy`
- `pyobjc-framework-Cocoa` — macOS-Menüleiste, native Dialoge
- `pyobjc-framework-CoreWLAN` — Wi-Fi-SSID-Scanning
- `pyobjc-framework-CoreLocation` — Berechtigung für Ortungsdienste für Wi-Fi-Namen
**Wi-Fi unter macOS 26 (Tahoe):** Beim ersten Start fragt macOS nach der Berechtigung für Ortungsdienste – erteile sie, um Wi-Fi-Netzwerknamen anzuzeigen. Die Berechtigung befindet sich unter *Systemeinstellungen › Datenschutz & Sicherheit › Ortungsdienste*.
> Die meisten Module funktionieren unter macOS ohne Änderungen. RDP fällt auf `open rdp://` zurück (Microsoft Remote Desktop), VNC auf `open vnc://` (integrierte Bildschirmfreigabe). Der Verbindungsmanager hat unter macOS eine eingeschränkte Funktionalität (`nmcli` nicht verfügbar).
### Option 6 — Debian / Ubuntu / Linux Mint (Installationsskript)
> **Hinweis für Linux-Mint-/Ubuntu-Benutzer:** `pip install` ist systemweit auf Python 3.12+ blockiert (PEP 668 — `externally-managed-environment`). Verwende das mitgelieferte Installationsskript – es erstellt automatisch eine virtuelle Umgebung und installiert einen `.desktop`-Eintrag.```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
bash install.sh
Das Skript wird:
- Systemabhängigkeiten über
aptinstallieren (libgl1, python3-venv, freerdp, tigervnc…) - Eine virtuelle Umgebung in
~/.local/share/nmlinux/venverstellen - NMLinux und seine Python-Abhängigkeiten innerhalb der venv installieren
- Einen Launcher unter
~/.local/bin/nmlinuxerstellen - Einen
.desktop-Eintrag hinzufügen, damit NMLinux in Ihrem Anwendungsmenü erscheint
Nach der Installation führen Sie nmlinux von einem Terminal aus aus oder starten Sie es über das Anwendungsmenü.
Option 7 — Wheel (alle Distributionen / macOS)
Laden Sie die .whl von der neuesten Version herunter und installieren Sie sie:```bash
Arch / Fedora / macOS — no pip restrictions
pip install nmlinux-1.5.3-py3-none-any.whl
Debian / Ubuntu / Mint — install system libs first, then use pipx
Ubuntu ≤24.04:
sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp2-x11 tigervnc-viewer
Ubuntu 26.04+:
sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp3-x11 tigervnc-viewer
pipx install nmlinux-1.5.3-py3-none-any.whl
> **Hinweis für Ubuntu 26.04+:** `pipx` erfordert, dass zuerst Systembibliotheken (libGL usw.) installiert werden – die obigen Befehle decken diese ab. Wenn `pipx install` aufgrund eines PySide6-Buildfehlers fehlschlägt, verwenden Sie stattdessen **Option 4** (Installationsskript), die alles automatisch übernimmt.
### Option 8 — Aus dem Quellcode (Arch / Fedora / macOS)```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
pip install PySide6 ptyprocess pyte tftpy
python3 -m nmlinux.main
Option 9 — Desktop-Eintrag (KDE / GNOME / etc.)
Kopiere die .desktop-Datei, damit NMLinux in deinem Anwendungsstarter erscheint:```bash
cp data/nmlinux.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/
Bearbeiten Sie dann den `Exec=`-Pfad in der Datei, falls erforderlich.
---
## Ausführen```bash
./nmlinux.sh
# or, after pip install:
nmlinux
# or directly:
python3 -m nmlinux.main
Projektstruktur```
nmlinux/ core/ i18n.py — Translation system (8 languages: fr/en/es/de/it/pt/ja/zh), tr(key) function icons.py — themed_icon(): 21 bundled Lucide SVG icons via QSvgRenderer theme.py — is_dark(), color_ok(), color_err(): runtime light/dark helpers settings.py — AppSettings dataclass, JSON persistence ssh.py — SshConnection dataclass, SshStore rdp.py — RdpConnection dataclass, RdpStore, find_xfreerdp() vnc.py — VncConnection dataclass, VncStore, find_vncviewer() terminal.py — SshWorker (QThread) + PTY via ptyprocess, emits raw bytes tls_watchlist.py — TlsWatchlist: background cert expiry checker, JSON persistence http_server.py — ThreadedHTTPServer: directory listing, GET/PUT/POST, port binding tftp_helper.py — TftpServerThread: tftpy wrapper, configurable port and root help_content.py — Module contextual help strings (all 8 languages) cli_bar.py — CliBar singleton: pedagogical CLI equivalent bar export_dialog.py — open_export_dialog(): QFileDialog with live extension update command_palette.py — CommandPalette (Ctrl+P): fuzzy search across 29 modules export_manager.py — collect_snapshot(), to_json/text/markdown/pdf, save_export() pages/ about.py — About page (credits, tools & services) bandwidth.py — Bandwidth Monitor: per-interface 60s graph, live stats connection_manager.py — Connection Manager: nmcli profiles, connect/disconnect/edit dashboard.py — Dashboard dns.py — DNS Lookup file_transfer.py — File Transfer: TFTP + HTTP server, live log, pkexec for port 69 firewall.py — Firewall Viewer: nftables + iptables parser, live via pkexec help_page.py — Contextual help overlay hosts.py — Hosts File: view/edit /etc/hosts, toggle entries, save via pkexec interfaces.py — Network Interfaces ip_scanner.py — IP Scanner mtr.py — MTR: mtr --report parser, live hop stats table, export nmap_scan.py — Nmap ping.py — Ping Monitor port_scanner.py — Port Scanner rdp.py — Remote Desktop: RDP profiles, launches xfreerdp settings.py — Settings page smb_nfs.py — SMB/NFS Browser: smbclient + showmount snmp.py — SNMP sntp.py — SNTP / NTP speedtest.py — Speed Test: curl + Cloudflare, history graph ssh.py — SSH page (connection manager + terminal) ssh_keys.py — SSH Key Manager: list/generate/deploy/delete key pairs subnet.py — Subnet Calculator terminal_view.py — TerminalView: pyte VT100 emulator + QPainter renderer tls.py — TLS Inspector + TLS Watchlist: cert details, background expiry monitor topology.py — Topology Map: nmap -sn, interactive graph, zoom/pan traceroute.py — Visual Traceroute: world map, geolocation, zoom/pan vnc.py — VNC: connection profiles, launches vncviewer whois.py — Whois wifi.py — Wi-Fi wol.py — Wake on LAN: magic packet, persistent host book assets/ icons/ — 21 bundled Lucide SVG icons (#60a5fa) world.geojson — Natural Earth 110m countries (map background) window.py — MainWindow (sidebar + QStackedWidget) main.py — Entry point
---
## Kompatibilität mit Desktop-Umgebungen
Seit v1.2.7 verwendet NMLinux 21 gebündelte [Lucide](https://lucide.dev)-SVG-Icons, die zur Laufzeit über `QSvgRenderer` gerendert werden. Die Anwendung ist nicht länger von einem System-Icon-Theme (Breeze, Adwaita, Papirus…) abhängig und wird auf KDE, GNOME, XFCE und anderen korrekt angezeigt. Der Qt-Stil passt sich automatisch an die laufende Desktop-Umgebung an.
---
## Einschränkungen
### Linux
Volle Unterstützung — alle 29 Module verfügbar.
### macOS
Die meisten Module funktionieren sofort, da sie auf Werkzeugen basieren, die auf beiden Plattformen verfügbar sind (`ssh`, `dig`, `ping`, `curl`, `nmap`, `openssl`…).
**9 Module erfordern eine explizite macOS-Anpassung** (doppelte Codepfade, die die Plattform beim Start erkennen): Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall, Connection Manager, Hosts File, MTR — diese verwenden native macOS-Befehle (`ifconfig`, `networksetup`, `scutil`, `pfctl`, `system_profiler`…) anstelle ihrer Linux-Äquivalente.
**Module mit eingeschränkter oder fehlender macOS-Unterstützung:**
| Modul | Status | Anmerkungen |
|--------|--------|-------|
| **RDP** | ✓ macOS | Greift auf `open rdp://` zurück → Microsoft Remote Desktop (App Store) |
| **VNC** | ✓ macOS | Greift auf `open vnc://` zurück → Bildschirmfreigabe (integriert, keine Installation erforderlich) |
| **IP Scanner** | ✓ macOS | Verwendet `socket.gethostbyaddr()` — reines Python, kein zusätzliches Werkzeug |
| **SMB** | ✓ macOS | Verwendet `smbutil view` (integriert) anstelle von `smbclient` |
| **NFS** | ✓ macOS | `showmount` integriert; Header-Parsing angepasst |
| **Connection Manager** | ⚠ Eingeschränkt | Bearbeiten/Löschen erfordern `nmcli` (nur Linux); Listenansicht funktioniert |
### Allgemein
- Keine Root-/polkit-Integration — Werkzeuge, die erhöhte Rechte benötigen (einige Nmap-Modi, Raw-Sockets), müssen mit `sudo` ausgeführt werden; unter macOS erfolgt die Rechteausweitung über `osascript` + `administrator privileges`
- SSH-Agent-Weiterleitung erfordert einen aktiven SSH-Agenten (`SSH_AUTH_SOCK`); unter macOS wird dies automatisch vom System übernommen, keine manuelle Einrichtung erforderlich
---
## Danksagungen und Anerkennungen
- **[Anthropic](https://www.anthropic.com)** — Claude Code, der KI-Assistent, der zum Bau dieses Projekts verwendet wurde
- Dem Autor für die Vision, das Testen und die Leitung
---
## Unterstützen Sie das Projekt
Wenn NMLinux für Sie nützlich ist, erwägen Sie, seine Entwicklung zu unterstützen:
- **PayPal** — [Über PayPal spenden](https://www.paypal.com/donate/?business=JFQGY7NU3ANCN&no_recurring=0&item_name=Every+donation%2C+no+matter+how+small%2C+helps+me+keep+this+project+alive.+Thank+you%21%0A¤cy_code=EUR)
- **Bitcoin** — `bc1qspe0tky7552qas72wgn8w9dswr0dxlv24w39t6ztjqk3nz6kc5tqv753a4`
---
## Lizenz
GPL-2.0 — siehe [LICENSE](https://github.com/thongor77/nmlinux/blob/HEAD/LICENSE).
Dieses Projekt ist eine unabhängige Neuimplementierung. Es wurde kein Code von NETworkManager verwendet oder übersetzt.





