
nmlinux v1.7.8
Linux向け統合ネットワークツールキット — Python 3 + PySide6
NMLinux · v1.7.14
Linux と macOS 向けの統合ネットワークツールキット — 検査、接続、診断。
NMLinux は、29 のネットワークモジュールを 1 つのウィンドウにまとめた単一の統合 GUI です。インターフェース監視、Wi-Fi、DNS、SSH ターミナル、ファイアウォールビューア、トポロジマップ、traceroute など。Python と PySide6 (Qt 6) でゼロから構築され、8 つのインターフェース言語を備え、標準的なシステムツール以外の外部依存はありません。
[!NOTE] NMLinux は Linux のシステムデーモン
/usr/bin/NetworkManager(Red Hat/GNOME による NetworkManager) とは無関係です。 NMLinux は Python と PySide6 でゼロから構築された独立したプロジェクトです。
Claude Code (Anthropic) とその作者の貢献によって構築されました。
開発プロセス
NMLinux は AI の支援 — 具体的には Claude Code — を用いて構築されており、そのことはこのリポジトリのどこにも隠されていません。今日のほとんどすべての真剣なソフトウェアプロジェクトは、公言しているかどうかにかかわらず、そのパイプラインのどこかで AI を使用しています。したがって「AI が関与したか」は興味深い問いではありません。興味深い問いはこれです。AI が何かを間違えたとき、それを見つけるものはあるのか?
私の言葉を信じるよりも自分で確認したいなら、それを担っているのはこれです:
- 162 のテスト —
pytest tests/ -v。純粋なロジックに加え、少数の実際の Qt ウィジェットテスト (メニュー、テーブル) があり、興味深い部分をモックでごまかしていません。 docs/Decisions-Techniques.md— 自明ではないすべての技術的判断、却下された代替案、そして発見・修正されたバグ (AI が持ち込んだものを含む) と、その理由が書き留められています。docs/Architecture.mdとdocs/Carte-des-Modules.md— コードの実際の構造を、出荷されるものと同期させて維持しています。- リリース前に毎回実行される i18n 整合性チェック で、サポートされる 8 言語にわたる翻訳キーの欠落を検出します。
これらのどれも、AI が信頼できないから存在するわけではありません。手書きのコードを含め、何も検証するプロセスなしに出荷されるべきではないから存在します。評価すべきは、出力とそれがどのように検証されているかであり、書くのを手伝ったツールではありません。
それでもバグを見つけましたか? それは恥ずかしいことではなく、役に立ちます — issue を開いてください。
コミュニティ
GitHub Discussions はオープンです — フィードバックの共有、アイデアの報告、質問、あるいはただ挨拶するだけでも。作者はインフラストラクチャと運用の分野で 30 年以上の経験を持ち、優れた、無料で、シンプルなソフトウェアが Linux にも存在すべきだと考えてこのツールを作りました。
スクリーンショット
Linux のスクリーンショットは v1.2.7 — macOS のスクリーンショットは v1.3.5 のものです。アプリは現在 29 のモジュールと 8 つのインターフェース言語 (FR/EN/ES/DE/IT/PT/JA/ZH) を備えています。
Linux (KDE)
| Dashboard | Topology |
|---|---|
![]() | ![]() |
| Traceroute | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| Dashboard | Traceroute |
|---|---|
![]() | ![]() |
変更履歴
v1.7.14 — 2026-09-30
- AppImage — 起動クラッシュの修正、その 2: v1.7.13 の修正 (同梱されたシステムライブラリの除去) では不十分でした — 埋め込まれた Python インタプリタ自体 (
libpython3.14.so.1.0、Arch Linux 開発マシンの glibc 2.44 に対してビルド) が、AppImageHub カタログのテストマシン (Ubuntu 22.04、glibc 2.35) が持つよりも新しい glibc シンボルを依然として要求していたため、AppImage は起動直後にクラッシュし続けました。build-appimage.shは PyInstaller バンドルをホスト上ではなくubuntu:22.04コンテナ内で (podman経由で) ビルドするようになり、埋め込まれるすべてのバイナリが、AppImage がサポートする必要のある glibc バージョンに対して正確にリンクされるようになりました。
v1.7.13 — 2026-09-30
- AppImage — 起動クラッシュの修正 (不完全、v1.7.14 を参照):
build-appimage.shは共有ライブラリ (libz.so.1、libstdc++.so.6、libX11.so.6、libfontconfig.so.1など) を Arch Linux ビルドマシンの非常に新しい glibc からそのまま同梱していました。古いディストリビューションでは AppImage が起動直後にクラッシュし (GLIBC_ABI_DT_RELR' not found)、AppImageHub カタログの自動テストで検出されました。これらのライブラリはバンドルから除去され、AppImage はホストシステム自身のコピーにフォールバックするようになりました。これは AppImage の標準的なアプローチです。
v1.7.12 — 2026-08-12
- Traceroute — 修正: Flatpak 環境下 (v1.7.11、下記参照 — 現在は削除済み) では、ホストに実際の
tracerouteバイナリがインストールされていなくても、tracerouteは常にホストシム経由でPATH上で解決されていたため、ワーカーがtracepathにフォールバックすることはなく、トレースはホップもエラー表示もなく即座に終了していました。tracerouteが解析可能な出力をまったく生成しない場合は常にtracepathにフォールバックするようになり、失敗の理由に関係なく動作します。 - SSH ターミナル — askpass 修正:
DISPLAY/WAYLAND_DISPLAYが設定されている場合 (任意の GUI セッション)、ssh がクリーンな tty を持たないとき、パスワードプロンプトに埋め込みターミナルではなく$SSH_ASKPASSを試みることがあり、askpass ヘルパーがインストールされていないと認証が黙って失敗していました。SSH_ASKPASS_REQUIRE=neverにより、パスワードプロンプトは常にターミナル自体を経由するよう強制されるようになりました。 - Flatpak パッケージングの削除: v1.7.11 で同梱されたローカル KDE Linux マニフェストは廃止されました。上記の SSH パスワードプロンプトのバグを調査した結果、カーネルレベルの制約が明らかになりました。
flatpak-spawn --host経由で中継されたプロセスは、転送された pty の制御端末の所有者になることが決してできません (TIOCSCTTYがEPERMで拒否される — 別の無関係なセッションがすでに所有しているため。これはバグではなく、意図的なカーネルのセキュリティ境界です)。唯一機能する回避策 (scriptで新しい pty を割り当てる) はパスワードプロンプトを修正しますが、そのセッションのライブターミナルリサイズ伝播を壊してしまい、Flatpak をまったく出荷しないよりも悪いトレードオフと判断されました。今後、サポートされる Linux インストール経路は AUR と AppImage です。
v1.7.11 — 2026-08-03
- Flatpak パッケージング (KDE Linux):
packaging/flatpak/配下のローカルビルドマニフェストは、KDE Linux およびその他の Flatpak 専用ディストリビューションを対象としています。nmlinux がシェルアウトするホスト CLI ツール (nmcli、pkexec、mount.cifs、ssh、nmapなど) は、それぞれを個別にサンドボックス化するのではなく、PATH上のflatpak-spawn --hostシム経由でブリッジされます。PySide6 は PyPI ホイールではなく Flathub のio.qt.PySide.BaseAppから取得されます。Flathub には公開されておらず、代わりに単一の.flatpakバンドルがpackaging/flatpak/build-bundle.shでビルドされ、AppImage と同様に各リリースに添付されます。v1.7.12 で廃止 — 上記参照。
v1.7.10 — 2026-08-03
- SSH ターミナル — 修正: セッション起動時にターミナルウィジェットの実際のサイズがまだ判明していない場合、PTY が誤った (デフォルトの 24×80) サイズで開始され、リサイズ要求が黙って破棄される可能性がある競合状態を修正しました。これにより、リモートの全画面アプリ (例: Claude Code CLI、htop、vim) が実際のウィンドウサイズと同期しなくなり、画面下部に古い/残ったテキストが表示され、新しい出力がスクロールして通過するまで消えませんでした。ユーザーによって報告され、実際の対話セッションで再現されました
v1.7.9 — 2026-08-02
- SSH ターミナル — コピー/ペースト: マウスでテキストを選択し (クリックドラッグ、ハイライト)、
Ctrl+Shift+Cまたは右クリックメニューでコピー、Ctrl+Shift+Vでペースト (既存)。以前はコピーが不可能でした — テキスト選択自体が存在しませんでした - SSH ターミナル — 複数の同時セッション: SSH ページは、単一の共有セッションではなく、各接続を独自のタブで開くようになりました。保存された接続への再接続 — 同じものに 2 回でも — は、以前は動作する代替を開かずにアクティブなセッションを終了させていました。現在は、すべての接続操作が新しく独立したタブを開きます
v1.7.8 — 2026-07-14
- Speed Test — 新しい LAN (iperf3) タブ: 既存のインターネット速度テストに加えて、新しいタブでクライアント専用の
iperf3テストを、同梱の公開サーバーリスト (26 か国) または保存されたカスタムサーバー (例: 組織内サーバー) に対して実行します。TCP/UDP、IPv4/IPv6/自動、およびリバース (ダウンロード) 方向をサポートし、UDP テストではジッター/ロスが表示されます。issue #6 による提案 - 新しいオプション依存関係:
iperf3— LAN タブを有効にするにはインストールしてください。それ以外の場合、タブはバナーを表示して無効のままです
v1.7.6 — 2026-07-05
- Asset Inventory — 右クリック更新: すでにスキャン済みの 1 つ以上の行 (複数選択対応) を右クリックし、「選択項目を更新」を選ぶと、ネットワーク全体のスキャンを再実行する代わりに、それらのホストだけをその場で再スキャンします
- Asset Inventory — SSH 認証失敗のフィードバック: 拒否された SSH ログインは、黙って失敗する代わりに「SSH 認証失敗」を表示するようになり、Nmap が検出したホスト名/OS のベースラインを失いません — 実際の Synology NAS で確認されました。そこでは、他の設定済み認証情報セットが先に試された後、DSM の Auto Block が正しいパスワードを拒否しました





