
nmlinux v1.7.8
Linux向け統合ネットワークツールキット — Python 3 + PySide6
NMLinux · v1.7.12
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)
| ダッシュボード | トポロジー |
|---|---|
![]() | ![]() |
| トレースルート | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| ダッシュボード | トレースルート |
|---|---|
![]() | ![]() |
変更履歴
v1.7.12 — 2026-08-12
- トレースルート — 修正: 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 をまったく提供しないより悪いトレードオフと判断しました。今後は AUR と AppImage がサポートされる Linux インストール経路です。
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 には公開されておらず、packaging/flatpak/build-bundle.shでビルドされた単一の.flatpakバンドルが、既存の 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
- スピードテスト — 新しい LAN(iperf3)タブ: 既存のインターネット速度テストに加えて、新しいタブでは、同梱のパブリックサーバーリスト(26 か国)または保存済みのカスタムサーバー(例: 社内組織サーバー)に対してクライアント専用の
iperf3テストを実行します。TCP/UDP、IPv4/IPv6/自動、および逆方向(ダウンロード)をサポートし、UDP テストではジッター/損失が表示されます。issue #6 により提案されました。 - 新しいオプション依存関係:
iperf3— LAN タブを有効にするにはインストールしてください。タブはバナーを表示し、それ以外の場合は無効のままです。
v1.7.6 — 2026-07-05
- アセットインベントリ — 右クリック更新: スキャン済みの 1 つ以上の行を右クリック(複数選択対応)して「選択項目を更新」を選択すると、ネットワーク全体の再スキャンを実行する代わりに、それらのホストだけをその場で再スキャンします。
- アセットインベントリ — SSH 認証失敗のフィードバック: 拒否された SSH ログインは、Nmap が検出したホスト名/OS ベースラインを失うことなく、静かに失敗する代わりに「SSH 認証に失敗しました」と表示されるようになりました。実際の Synology NAS で確認済みです。DSM の Auto Block が、他の設定済み資格情報セットが最初に試行された後、正しいパスワードを拒否しました。
v1.7.5 — 2026-07-04
- Ping モニター — 保存済みターゲットディレクトリ: 新しい左側パネルで、ping ターゲット(名前、ホスト、間隔)を永続的なリストに保存できます。アプリを再起動しても監視中のホストが維持され、再入力する必要がありません。監視中の各行の ★ ボタンを押すと、セッション中の任意のタイミングでそのホストをディレクトリに保存できます — アプリが予期せず終了する前に事前に計画しておく必要はありません。
- Ping モニター — 「監視を開始」: 保存済みターゲットを選択し、保存されている間隔を再利用して 1 クリックで監視を開始します。
v1.7.4 — 2026-07-04
- アセットインベントリ — スキャン結果の不一致を修正: 生存確認チェックは、再試行なしの 1 秒タイムアウトの ping を 1 回送信していたため、スキャナー自身の同時負荷(最大 40 ホストを同時にプローブ)や、Wi-Fi ホストがビーコン間で一時的にスリープしている場合に、実際のデバイスを見逃す可能性がありました。同じ範囲を繰り返し実行した際にデバイス数が異なる実際のサブネットで確認済みです。現在は、TCP ポートプローブにフォールバックする前に ping を再試行します。
- アセットインベントリ — 新しい「空欄を更新」ボタン: スキャン後、範囲全体を再スキャンする代わりに、データが返されなかった IP のみを再スキャンします。新しく見つかったホストは既存の結果にマージされます。
v1.7.3 — 2026-07-03
- SMB — 右クリックメニューから共有をマウント: SMB タブで共有を右クリックして「マウント/アンマウント」を選択すると、安定したローカルパス(
~/mnt/<ホスト>_<共有>)にマウントされ、ターミナルや他のアプリから使用できます — 一時的なブラウズビューではありません。セッション限定(fstab/systemd 永続化なし)で、資格情報は既存のユーザー/パスワードフィールドから再利用されます。Linux では、権限を制限した資格情報ファイル(psで公開されない)を使用してpkexec mount -t cifsを使用します。macOS ではmount_smbfsを直接使用します。サーバーがデフォルトのネゴシエーションを拒否した場合(古い NAS で一般的)、古い SMB ダイアレクト(vers=2.0)で自動的に再試行します — 両方の試行は専用ヘルパープロセスを介して 1 回の認証プロンプトで行われます。 - 新しいオプション依存関係:
cifs-utils(Linux)は SMB マウント用です。macOS には組み込まれています。
v1.7.2 — 2026-07-03
- macOS インストール — 素の Mac で見つかった 2 つのブートストラップバグを修正:
bootstrap_macos.shは Homebrew インストーラーにNONINTERACTIVE=1を強制しなくなりました。これにより、新しい管理者アカウントでは sudo パスワードを求める代わりに即座に中止されていました。ドキュメント記載のワンライナーは、スクリプトをbashに直接パイプするのではなく、最初にダウンロードするようになりました。パイプ処理では、ネストされた対話ステップ(Xcode CLT インストーラー、Homebrew 自身の sudo プロンプト)が外側のスクリプトの入力ストリームに干渉する可能性があるためです。 - ユニバーサル右クリックメニュー — SMB を追加:
SmbNfsPageは、v1.7.0 で導入されたモジュール間右クリックシステムに含まれていなかった唯一のターゲットページでした。ホストを右クリックして SMB を選択すると、ホストフィールドが事前入力され、即座にスキャンが開始されます。ポート 445 が開いていることが検出された場合はメニューで太字表示されます。 - i18n — 残りのダッシュボード文字列を翻訳: ゲートウェイレイテンシラベル、TLS ウォッチリストカードのタイトルとそのステータス行は依然としてフランス語でハードコードされていました。現在は 8 つのインターフェース言語すべてで翻訳されています。
v1.7.1 — 2026-07-02
- macOS 26 (Tahoe) — Wi-Fi SSID 修正: プライマリデータソースを
system_profiler(位置情報サービスなしでは<redacted>を返す)から CoreWLAN に変更。アプリは初回起動時に位置情報サービスの許可を要求するようになりました。許可が付与されると、Wi-Fi ページにすべてのネットワークが実際の名前で表示されます。 - macOS — 接続マネージャー: 接続中の SSID は CoreWLAN 経由で読み取られるようになり、セキュリティモードは
system_profilerを使用します。 - macOS — SMB: NAS が資格情報を必要とする場合に明確な「認証が必要です」メッセージを表示。Homebrew の smbclient による誤った smb.conf 警告を修正。
- macOS — 初回の位置情報サービス許可ダイアログ後に終了時にクラッシュする可能性がある問題を修正。
v1.7.0 — 2026-07-02
- ユニバーサル右クリックコンテキストメニュー: IP またはホスト名を含むすべてのテーブルで利用可能 — コピーペーストなしでモジュール間を直接移動できます。検出された任意のホストを右クリックして、Ping、ポートスキャン、Whois、DNS、トレースルート、MTR、SSH、RDP、VNC、トポロジーで表示、またはインベントリに追加を選択できます。対応するポートが開いていることが検出された場合、SSH/RDP/VNC メニュー項目は太字で表示されます。ラベルは 8 つのインターフェース言語すべてで完全に翻訳されています。
- ソースページ(右クリックアクションを発行): IP スキャナー、Nmap、Ping、ポートスキャナー、トレースルート、MTR、トポロジー(ノード右クリック)
- ターゲットページ(ホストを受信して事前入力): Whois(
set_target+ 自動クエリ)、DNS(set_target事前入力のみ)、Ping(set_target+ 自動開始)、トレースルート(set_target+ 自動開始)、MTR(set_target+ 自動開始)、ポートスキャナー(set_target+ フォーカス)、SSH / RDP / VNC(set_targetで事前入力済みの新規接続フォームを開く)、トポロジー(load_hostsは再スキャンせずに IP スキャナー/Nmap スキャンからノードを注入 — ゲートウェイは自動検出、エッジが描画され、発信元ノードが赤で強調表示)、アセットインベントリ(prefill_hostsは検出されたホストで直接資格情報スキャンを開始し、ICMP 検出フェーズをスキップ) - ダッシュボード — ゲートウェイ ping グラフ: 2 秒ごとに更新されるライブレイテンシスパークライン。色分け(<20 ms 緑 / 20〜100 ms オレンジ / >100 ms 赤 / タイムアウト赤)
- ダッシュボード — TLS ウォッチリストサマリー: ダッシュボードのステータスカードが、再クエリなしで TLS ウォッチリストの状態(OK / 期限切れ間近 / アラート)を自動的に反映します。
- ダッシュボード — 地理マップのリサイズ: ウィンドウをリサイズすると、世界地図が水平方向に拡張されるようになりました。
v1.6.4 — 2026-06-28
- macOS: メニューバーに Python ではなく NMLinux が表示されるようになりました — 根本原因:
exec()で Python に入った後、NSBundle.mainBundle()は、Qt が QApplication 構築中に読み取るPython.frameworkバンドル(CFBundleName = "Python")に解決されます。アプリケーションメニューが作成される前に、バンドルのinfoDictionary()をパッチし、AppKit 経由でネイティブメニュー項目の名前を変更することで修正しました。
v1.6.3 — 2026-06-28
- macOS:
pyobjc-framework-Cocoaを介したNSProcessInfo.setProcessName_によるメニューバー修正の最初の試み(v1.6.4 で置き換え)
v1.6.2 — 2026-06-28
- macOS:
install_macos_app.shの bash ランチャースクリプトをコンパイル済み C スタブに置き換え、macOS が.appバンドルを実行中のプロセスと正しく関連付けるようにしました。フォールバックとしてsetprognameとsys.argv[0]オーバーライドを追加。
v1.6.1 — 2026-06-25
- SSH ターミナル — リモートエコーを修正: 埋め込み SSH ターミナルで入力したキーストロークはリモートシェルに送信されましたが、エコーバックされませんでした(ログイン後にキーボードが「死んでいる」ように見えました)。nmlinux はローカル PTY のエコーを強制的にオフにし、ssh はその「エコーなし」を端末モード(pty-req)を介してリモート pty に伝播させたため、リモートシェルは入力のエコーを停止しました。新しい Ubuntu 26.04 VM(最近の OpenSSH はこれらのモードを忠実に適用)で再現しました。ターミナルは現在、PTY を通常モードに保ち、ssh にエコー管理を任せており、実際のターミナルエミュレーターと一致しています。
v1.6.0 — 2026-06-24
- アセットインベントリ — WinRM Windows(完全版): Windows ファイアウォールで ICMP がブロックされている場合、TCP ポートプローブによるホスト検出。PowerShell は現在、完全な絶対パス + EncodedCommand(base64) を使用して、cmd.exe がパイプ
|を解釈するのを防ぎます。管理者権限なしの完全なフォールバックチェーン: OS はver、CPU はレジストリ、RAM はsysteminfo、ディスクはwmic→fsutil(ロケール対応 EN カンマ / FR スペース)→dir /-C - アセットインベントリ — 複数資格情報 SSH: 複数の SSH 資格情報セットをサポート。macOS ディスク修正(
/System/Volumes/Data)、Apple Silicon CPU フォールバック(hw.model)、Synology(/volume1)、Unraid(/mnt/user) - バグ修正: WinRM エラーは静かなフォールバックではなくテーブルに表示されるようになりました。WinRM/SNMP ホスト検出が SSH 資格情報の存在によってブロックされなくなりました。pywinrm タイムアウトを修正。
v1.5.3 — 2026-06-24
- macOS .app — Homebrew ツールの検出: Homebrew でインストールされた
sshpass、nmap、snmpgetが絶対パスを使用して検出・呼び出しされるようになりました。macOS の.appバンドルは Homebrew の PATH(/opt/homebrew/bin、/usr/local/bin)を継承しないため、以前はインストール済みツールが静かに無視されていました。 - macOS 更新パス: リポジトリルートから
git pull && bash packaging/install_macos_app.shを実行することが、ドキュメント化されたアップグレード方法になりました。このスクリプトは独自の venv(~/.local/share/nmlinux/venv)を管理し、システムレベルのpipやpipxを必要としません。
v1.5.2 — 2026-06-24
- アセットインベントリ — 新しいモジュール(29 番目)。CIDR 範囲をスキャンし、SSH、WinRM、SNMP、または Nmap を介して各ホストから OS、CPU、RAM、ディスク、稼働時間を収集します。プロトコルごとに複数の資格情報セットをサポート(順番に試行)。ゼロ保持ポリシー: 資格情報はディスクに書き込まれず、スキャン後にメモリからクリアされます。結果を JSON、CSV、または Markdown としてエクスポート。ダッシュボードの IP ジオロケーションセクションにアニメーション地理マップを追加。
- SSH 収集の修正: ディスクコマンドの awk クォートエラーを修正。
free -hを BusyBox 互換のfreeに置き換え。macOS コードパスは OS 名にsw_vers、Apple Silicon CPU のフォールバックにhw.model、APFS ユーザーデータボリュームに/System/Volumes/Dataを使用するようになりました。Synology/Unraid ボリューム(/volume1、/mnt/user)は root より先に検出されます。df | tail -1 || …の誤検知パターンをtest -dガードで修正。lsb_release出力から周囲の引用符を除去。複数の SSH/WinRM 資格情報セットをサポート(ホストごとに順番に試行)。
v1.5.0 — 2026-06-17
- ファイル転送サーバー — アプリから直接、軽量な TFTP または HTTP サーバーを起動/停止する新しいモジュール。典型的な使用例: ルーター、スイッチ、プリンターの設定のバックアップと復元。同時にアクティブにできるサーバーは 1 つ(TFTP または HTTP)で、ポートとルートディレクトリを設定可能。ローカル IP はコピー-to-クリップボードボタンとして表示されます。HTTP にはディレクトリリスト(LAN 上の任意のブラウザーから閲覧)、GET(ダウンロード)、POST/PUT(アップロード)が含まれます。TFTP は GET と PUT(双方向)をサポート。ポート 69 は root が必要 — 権限エラー時に「root として開始(pkexec)」ボタンが表示されます。ライブ転送ログテーブル(タイムスタンプ、ファイル名、クライアント IP、方向 ↑/↓、サイズ)。ポートトラバーサル保護。8 つのインターフェース言語。新しい依存関係:
tftpy
v1.4.3 — 2026-06-14
- TLS ウォッチリスト修正: 自己署名証明書と信頼されていない証明書が、緑ではなく「⚠ 無効/信頼されていない証明書」(オレンジ)として正しく表示されるようになりました。SSL 例外の捕捉を拡大し、すべての
ssl.SSLErrorサブクラスをカバー。エントリはバックグラウンドチェック実行中は「…(確認中)」、ホストに到達できない場合は「—(到達不能)」と表示されます。
v1.4.2 — 2026-06-14
- TLS ウォッチリスト — 証明書の有効期限を監視するホスト名の永続的なリスト。
+ ウォッチ(現在のホスト/ポートを使用)またはパネルで手動でホストを追加。バックグラウンドチェックは起動 2 秒後に自動実行。サイドバーの「TLS インスペクター」エントリに色付きドットを表示: いずれかの証明書が期限切れの場合は赤、30 日以内に期限切れになる証明書がある場合はオレンジ。パネルに再チェックボタン。リストはエントリごとにステータス(✓ / ⚠ / 期限切れ)を色分けして表示。
v1.4.1 — 2026-06-14
- macOS — IP スキャナー: macOS での MAC アドレス、ベンダー、インターフェースの検索を修正。
_arp_entry()は macOS では/proc/net/arp(Linux 専用)を読み取る代わりにarp -n <ip>を呼び出し、その出力形式(? (IP) at AA:BB:CC on en0)を解析するようになりました。スキャナーの 4 つの列すべてが macOS で正しく入力されます。 - VNC ヘルプ: 8 つの言語すべてに、Linux にはデフォルトで VNC サーバーがないことを明記し、一般的なオプション(x11vnc、tigervnc-server、wayvnc)をリストアップした注記を追加。
v1.4.0 — 2026-06-14- macOS — IP Scanner: Linux専用の getent を、Pythonの socket.gethostbyaddr() を使ったクロスプラットフォームな逆DNS解決に置き換えました;ホスト名ルックアップが追加ツールなしでmacOS上でネイティブに動作するようになりました
- macOS — SMB Browser:
smbclient(Homebrew sambaが必要)からsmbutil view(macOS組み込みツール)に切り替え;SMB共有の一覧表示がインストール不要でmacOS上で動作するようになりました - macOS — NFS Browser:
showmountはmacOSに組み込まれていますが--no-headersには対応していません;macOSではフラグを除去し、パーサーでヘッダー行をスキップします;NFSエクスポート一覧がネイティブに動作するようになりました - macOS — RDP:
xfreerdpが見つからない場合、open rdp://URLスキームにフォールバックします;インストールされていれば Microsoft Remote Desktop(App Store)を開き、ホスト・ポート・ユーザー名・ドメインが事前入力されます - macOS — VNC:
vncviewerが見つからない場合、open vnc://URLスキームにフォールバックします;macOSの画面共有(組み込み、インストール不要)を開きます
v1.3.9 — 2026-06-13
- SSHエージェント転送 — SSH接続フォームに新しい「Agent forwarding」チェックボックスを追加;
sshコマンドに-Aを追加;秘密鍵をコピーせずにサーバー間をジャンプ可能(PC → A → B);アクティブなSSHエージェント(SSH_AUTH_SOCK)が必要;全8言語でコンテキストヘルプを更新
v1.3.8 — 2026-06-13
- Command Palette (Ctrl+P) — 27個すべてのモジュールへ即座にキーボードで移動可能;名前とキーワード(例: "firewall", "tls", "ssh key", "scan")によるファジー検索;↑/↓キー + Enter、またはシングルクリックで移動;アプリ内のどこからでも Ctrl+P で開きます
- Export Manager — ネットワーク全体のスナップショット(インターフェース、ルート、DNSリゾルバー)をファイル → ネットワークレポートをエクスポート… から JSON、Markdown、プレーンテキスト、PDF でエクスポート(任意:
pip install reportlab) - モジュール単位のエクスポートボタン — Interfaces、DNS、Firewall、SSH Connections、Connection Manager の各ページにエクスポートボタンを追加;各ページは選択した形式で現在のデータをエクスポートし、フォーマットフィルターを変更するとファイル名の拡張子がリアルタイムに更新されます
v1.3.6 — 2026-06-12
- Topology — デバイスアイコン — 各ノードは、汎用の丸アイコンの代わりに、デバイスタイプに応じた Lucide SVG アイコン(ルーター/Wi-Fi、コンピューター/ラップトップ、プリンター、NAS/サーバー、スマートフォン、ネットワークスイッチ、Raspberry Pi)を表示するように;新規同梱 SVG アイコン5つ(
printer、server、smartphone、cpu、laptop) - Topology — mDNS検出 — デバイスタイプは
avahi-browseを使って検出します(任意、nmapスキャンと並行して実行);プリンター(_ipp._tcp、PDL Printer)、Androidスマホ/テレビ(_googlecast._tcp、_androidtvremote2._tcp)、Apple Mac(AirPlay TXTのam=Mac16,xモデル)、NASデバイス(Synologyがmodel=Xserveを報告)、KDE Connectデスクトップを識別;avahiが利用できない場合は MAC ベンダーOUIとホスト名ヒューリスティックにフォールバック - Topology — 詳細パネル — 汎用の「Host」ラベルの代わりに、検出されたデバイスクラス(Printer、Smartphone、NAS…)を表示;全8言語に対応
- Traceroute — 自動ズーム — 各ルートの終了時に、地理位置情報付きホップのバウンディングボックスにワールドマップが自動的にズーム・中央配置します;ユーザーが手動でパン/ズームすると無効化;次のトレーサートで復元;右クリックで全ワールドビューにリセット
v1.3.5 — 2026-06-06
- macOS互換性 — 9つのネットワークモジュールすべてが、Linuxの動作を壊さずにmacOS上で動作するようになりました;各モジュールは起動時にプラットフォームを検出し(
_IS_MACOS)、ネイティブのmacOSコマンドに分岐します:route -n get default、ifconfig、scutil --dns、networksetup、system_profiler SPAirPortDataType、pfctl、netstat -ib;権限昇格にはpkexecの代わりにosascript+with administrator privilegesを使用;等幅フォントはMonospaceの代わりにMenloを使用 - Linux/macOS 両対応のモジュール: Dashboard、Interfaces、Wi-Fi、Topology、Bandwidth、Firewall (pf.conf + pfctl)、Connection Manager、Hosts File、MTR
- 変更なしのモジュール(両プラットフォームで同一ツール): DNS、Nmap Scan、SNMP、Whois
v1.3.2 — 2026-06-06
- i18nを8言語に拡張 — Italiano、Português、日本語、中文(簡体字)を追加;全UI(全27モジュール、約720の翻訳キー)が FR / EN / ES / DE / IT / PT / JA / ZH で利用可能に;設定で言語を変更すると再起動を促すメッセージが表示されます
- 8言語のコンテキストヘルプ —
?バッジパネル(説明、使用例、同等のCLIコマンド)が、すべてのモジュールで8言語すべてに対応;以前は JA と ZH は英語にフォールバックしていました - バグ修正 — SMB/NFS と Hosts File のナビツールチップが、選択中の言語に関係なくフランス語で表示されていました;不足していた
nav_hint_smb_nfsとnav_hint_hostsキーを、フランス語以外の7つの言語ブロックすべてに追加
v1.3.1 — 2026-06-05
- SSH Key Manager —
~/.ssh/内のすべてのキーペアを一覧表示(ファイル、種類、ビット数、コメント、SHA256フィンガープリント);オプションのパスフレーズ付きで Ed25519 または RSA 4096 キーを生成(不一致検出、種類に応じた自動ファイル名);公開キーをクリップボードにコピー;インラインターミナルでssh-copy-idを使ってリモートサーバーにデプロイ(パスワードプロンプト用のstdin対応);確認付きでキーペアを削除;~/.ssh/が存在しない場合は自動作成;i18n: fr / en / es / de
v1.3.0 — 2026-06-03
- TLS / SSL Inspector — 任意のサーバーの証明書を検査:サブジェクトCN、SANs、発行者、有効期限(色分け: 緑 / オレンジ < 30日 / 赤=期限切れ)、シリアル番号、TLSプロトコル、暗号スイート、証明書チェーン(
openssl s_client経由);有効・期限切れ・自己署名証明書に対応;到達不能ホストには分かりやすいエラーメッセージ - SMB / NFS Browser — 任意のサーバーから共有とエクスポートを一覧表示;SMBタブ:
smbclient -L(オプションで認証情報付き)、共有名/種類/コメントを表示;NFSタブ:showmount -e、エクスポートパスとアクセスリストを表示;不足ツールを検出し、ディストリビューション別のインストール手順を表示 - Hosts File Editor —
/etc/hostsの表示と編集;有効/無効トグルのあるテーブル、ダイアログでエントリの追加/編集/削除;IPまたはホスト名でフィルター;pkexec cpで保存(polkit認証ダイアログ) - install.sh — Debian / Ubuntu / Linux Mint 向けの新しいスクリプト:
~/.local/share/nmlinux/venvにvenvを作成し、aptでシステム依存関係をインストールし、ランチャーと.desktopエントリを作成(PEP 668externally-managed-environmentエラーを修正)
v1.2.9 — 2026-05-30
- VNC — VNC接続プロファイルを管理する新しいモジュール;SSHやRDPと同様のグループ/サブグループ;
vncviewer(TigerVNC)を起動;macOS ARD に対応(DH30認証は vncviewer がネイティブに処理);パスワードは保存されません;vncviewerが無い場合はディストリビューション別のインストール手順を検出 - バージョン情報 — ツールとサービス — アプリが依存するすべてのサードパーティ製ツールとAPIを一覧表示する新しいセクション
- サイドバーのi18n — 23個すべてのナビツールチップが FR/EN/ES/DE に翻訳されました(以前はハードコードされたフランス語);ラベルを修正: Topology、Connections、Subnet
v1.2.8 — 2026-05-30
- Remote Desktop (RDP) — Windows RDP接続プロファイルを管理する新しいモジュール;SSHと同様のグループ/サブグループ;
xfreerdpを外部プロセスとして起動;接続時にパスワードを要求、保存はされません;フィールド: ホスト、ポート、ユーザー名、ドメイン、解像度、全画面;xfreerdpが無い場合はディストリビューション別のインストール手順を検出(Arch / Debian / Fedora)
v1.2.7 — 2026-05-26
- Lucideアイコンの同梱 — Lucide (MIT) の21個のSVGアイコンを
assets/icons/に同梱;実行時にQSvgRendererで描画;色は#60a5fa;システムアイコンテーマ(Breeze、Adwaita、Papirus…)が不要になりました
v1.2.6 — 2026-05-24
- GNOME / Adwaita互換性 — KDE以外のデスクトップでアイコンを修正:
main.pyがgsettingsでGTKアイコンテーマを自動検出し、Qtに適用するように;Wi-Fi、Traceroute、Speed Test、Interfaces、Port Scanner、Firewall、MTR のフォールバックチェーンを拡張;themed_icon()はテーマアイコンを受け入れる前に実際のピクスマップが存在することを検証するように - NixOS / KDE互換性 — NixOSで全アイコンを修正:Breeze 6.x はSVGZのみのアイコンを提供;Nixラッパーが
QT_PLUGIN_PATHにqt6.qtsvgを追加し、QtがSVGアイコンを描画できるように;themed_icon()はサイズ 22/24/16/32/48 を試行(Breezeは24ではなく22pxを使用);Nix同梱のアイコンセットを検出した場合はテーマをbreezeに強制;システム全体のKDE設定として/etc/xdg/kdeglobalsもチェック
v1.2.5 — 2026-05-23
- MTR — 組み込み型 My Traceroute:
mtr --reportを実行し、テキスト出力を解析して、ホップごとの Loss %、RTT Last/Avg/Best/Worst/Jitter をライブテーブルで表示、損失の深刻度に応じて色分け;連続モード;CSV + TXT エクスポート - Speed Test —
curl+ Cloudflare(speed.cloudflare.com)による依存関係のない速度テスト:ダウンロード(25 MB)、アップロード(10 MB)、1.1.1.1へのping;最大5回の実行結果をJSONに保存;履歴ライングラフ(ダウンロード/アップロード) - Firewall Viewer — 読み取り専用のルールセットビューアー:rootなしで
/etc/nftables.confと/etc/iptables/*.rulesを解析;pkexec nft list rulesetでライブルールセットを取得;列: Table / Chain / Rule / Port / Action / Comment;アクションを色分け;ライブフィルター - サイドバーヒント — 各ナビエントリに小さな
?バッジを表示;ホバーするとモジュールの説明を示すツールチップを表示;サイドバーとコンテンツ領域の間に垂直セパレーターを追加 - i18n — すべての新モジュールをフランス語、英語、スペイン語に翻訳
v1.2.0 — 2026-05-22
- テーマ適応 — 全ページで実行時のライト/ダーク切り替えを完全サポート;
is_dark()、color_ok()、color_err()を持つ新しいcore/theme.py;カスタムペインターウィジェット(_Graph、_MapWidget)は描画時にパレットを読み取ります;ハードコードされていたCatppuccin Mochaの色をすべてセマンティックなQtパレットロールに置き換え - サブネットマスク — Dashboard、Interfaces、Connexions の各ページで、CIDRプレフィックスから算出したドット区切り10進数のサブネットマスク(例:
255.255.255.0)を表示 - Bandwidth Monitor — ページ読み込み時の不安定な自動開始をやめ、明示的な開始/停止ボタンを追加
- CSV/TXTエクスポート — Nmap と Traceroute ページに「CSVをエクスポート」「TXTをエクスポート」ボタンを追加(スキャン/トレース完了後に表示)
- i18n — 上記の全機能の新しい翻訳キーを追加(fr/en/es/de)
v1.1.1 — 2026-05-16
- SSHターミナル — pyte(VT100/xtermエミュレーター)+ QPainterレンダラーで完全リライト;2000行のスクロールバック、カーソル点滅、256色対応
- Visual Traceroute — ワールドマップ(Natural Earth 110m)、ホップごとのライブ地理位置情報(ip-api.com)、インタラクティブなズーム/パン、デュアルパーサー(
traceroute/tracepathフォールバック) - Bandwidth Monitor — インターフェースごとのリアルタイムスループット、60秒スライディンググラフ、ライブ速度、セッション合計とピーク
- Wake on LAN — 純Pythonのマジックパケット(UDPブロードキャスト)、永続的なホストブック(JSON)
- IP Scanner —
getent/avahi/nmblookupによるホスト名解決;MACアドレス、ベンダー(IEEE OUI 39Kエントリ)、インターフェース列;CSV/TXTエクスポートを更新 - i18n — 新規ページすべての完全な fr/en/es/de 翻訳
v1.0.0 — 2026-05-14
初期公開リリース — 13モジュール: Dashboard、Interfaces、Wi-Fi、Subnet Calculator、DNS Lookup、Ping Monitor、IP Scanner、Port Scanner、Nmap、Whois、SNMP、SNTP/NTP、SSH。
機能
| モジュール | 説明 |
|---|---|
| Dashboard | ローカルマシン情報、ゲートウェイ、パブリックIP、地理位置情報、DNSリゾルバー |
| Connection Manager | nmcli によるNetworkManagerプロファイル: 一覧表示、フィルター、接続/切断/編集/削除 |
| Interfaces | インターフェースごとの詳細付きネットワークインターフェーステーブル(ip + nmcli) |
| Wi-Fi | 利用可能なネットワーク、信号バー、セキュリティ、接続中のネットワークを強調表示 |
| Subnet Calculator | CIDRからのネットワーク/ブロードキャスト/ホスト範囲、最大4096エントリのホストテーブル |
| DNS Lookup | dig ベースのルックアップ: A、AAAA、MX、TXT、NS、CNAME、PTR、SOA、ANY |
| Ping Monitor | 複数ホストへの継続的ping、RTT統計、パケットロス% |
| IP Scanner | CIDR/範囲のpingスキャン、50スレッド、ホスト名(DNS/mDNS/NetBIOS)、MACアドレス、ベンダー(OUI)、インターフェース、CSV + TXT エクスポート |
| Port Scanner | TCPコネクトスキャン、200スレッド、サービスプリセット、CSV + TXT エクスポート |
| Nmap | 7つのスキャンモード、XML出力の解析、Host/Port/Protocol/State/Service テーブル、CSV + TXT エクスポート |
| Whois | raw whois出力を等幅で表示 |
| SNMP | snmpwalk/snmpget、v1/v2c、10個のOIDプリセット、結果テーブル |
| SNTP / NTP | 純PythonのRFC 4330 UDPクライアント、オフセット/遅延/階層/参照 |
| SSH | 組み込みPTYターミナル(pyte/VT100)、保存された接続(JSON)、キー認証、スクロールバック |
| Remote Desktop | RDP接続プロファイル(グループ/サブグループ);xfreerdp を起動;パスワードは保存されません |
| VNC | VNC接続プロファイル(グループ/サブグループ);vncviewer(TigerVNC)を起動;macOS ARD互換;パスワードは保存されません |
| SSH Key Manager | ~/.ssh/ のキーペアを一覧表示(種類、ビット数、フィンガープリント);Ed25519/RSA 4096 を生成;公開キーをコピー;ssh-copy-id でサーバーにデプロイ;確認付きでペアを削除 |
| TLS Inspector | 証明書の詳細: CN、SANs、発行者、有効期間 + 期限までのカウントダウン、シリアル、プロトコル、暗号、チェーン;バックグラウンド期限監視とサイドバーのカラードット付き Watchlist |
| SMB / NFS | 任意のサーバーまたはNASからSMB共有(smbclient)とNFSエクスポート(showmount)を一覧表示;SMB用の任意の認証情報 |
| Hosts File | /etc/hosts の表示/編集: エントリの追加、削除、切り替え;フィルター;pkexecによる保存 |
| Visual Traceroute | ワールドマップ上のホップ単位のルート、ライブ地理位置情報(ip-api.com)、ズーム&パン、CSV + TXT エクスポート |
| MTR | 組み込み型 My Traceroute: ホップごとの損失%、RTT Last/Avg/Best/Worst/Jitter、色分け、CSV + TXT エクスポート |
| Firewall Viewer | 読み取り専用の nftables + iptables/ip6tables ルールセット(root不要);pkexecによるライブ表示;テーブル/チェーン/アクションでフィルター |
| Speed Test | Cloudflare経由のダウンロード/アップロード/ping;curl 以外の外部ツール不要;履歴グラフ(直近5回) |
| Bandwidth | インターフェースごとのリアルタイムスループット: 60秒スライディンググラフ、ライブ速度、セッション合計、ピーク |
| Wake on LAN | 純Pythonのマジックパケット(UDPブロードキャスト)、永続的なホストブック、外部ツール不要 |
| Topology Map | nmap -sn でLANデバイスを自動検出;ドラッグ可能なノード、ズーム/パン、詳細パネルを備えたインタラクティブグラフ |
| Settings | 言語選択(FR / EN / ES / DE / IT / PT / JA / ZH)、永続化;変更後は再起動が必要 |
| Command Palette | Ctrl+Pオーバーレイ: 全29モジュールを名前またはキーワードでファジー検索 |
| File Transfer | オンデマンドのTFTPまたはHTTPサーバー;ポートとルートディレクトリを設定可能;ローカルIPをコピーボタンとして表示;ライブログテーブル(ファイル名、クライアントIP、方向 ↑/↓、サイズ);HTTPディレクトリリスト + GET/POST/PUT;TFTP GET + PUT;ポート69ではpkexecを要求 |
| Export | ファイル → ネットワークレポートをエクスポート(JSON/Markdown/Text/PDF);Interfaces、DNS、Firewall、SSH、Connections でのモジュール単位エクスポート |
要件
システムツール
Linux — 標準インストールにはほとんどが含まれています:```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** — [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 には
ping、dig、traceroute、netstat、ifconfig、smbutil、routeが標準で含まれています。networksetupとscutilは macOS の組み込みツールであり、インストールは不要です。IP Scanner の OUI ベンダー検索もインストールは不要です。Wireshark のmanufデータベースが初回使用時にバックグラウンドで自動ダウンロードされ、ローカルにキャッシュされます。
オプションツール
| Tool | Feature | Linux | macOS |
|---|---|---|---|
xfreerdp / xfreerdp3 | Remote Desktop (RDP) | Arch: freerdp · Ubuntu ≤24.04: freerdp2-x11 · Ubuntu 26.04+: freerdp3-x11 | オプション — Microsoft Remote Desktop にフォールバック(open rdp://) |
vncviewer | VNC | Arch: tigervnc · Debian: tigervnc-viewer | オプション — macOS の画面共有にフォールバック(open vnc://、標準搭載) |
nm-connection-editor | Connection Manager から接続を編集 | Arch: nm-connection-editor | —(代わりにシステム環境設定が開きます) |
traceroute | traceroute の代替(デフォルトでは tracepath を使用) | Arch: traceroute | 標準搭載 |
mount.cifs (cifs-utils) | 右クリックメニューから SMB 共有をマウント | Arch/Debian: cifs-utils | 標準搭載(mount_smbfs) |
iperf3 | スピードテスト — LAN タブ | Arch: iperf3 · Debian/Ubuntu: iperf3 | brew install iperf3 |
Python
- Python 3.11+
- PySide6 6.6+
- ptyprocess 0.7+
- pyte 0.8+(
pip install pyteまたはsudo pacman -S python-pyte) - tftpy 0.8+(
pip install tftpyまたはsudo pacman -S python-tftpy) — ファイル転送モジュール
インストール
オプション 1 — Arch Linux / Manjaro / EndeavourOS(AUR)```bash
yay -S nmlinux
すべての依存関係(PySide6、ptyprocess、pyte、nmcli、…)は自動的に処理されます。
### オプション 2 — NixOS / Nix
同梱の `flake.nix` で直接実行できます — システム全体へのインストールは不要です:```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
nix run .
または開発シェルを入力してください:```bash nix develop python3 -m nmlinux.main
すべてのPython依存関係(PySide6、ptyprocess、pyte、tftpy)とシステムツール(nmcli、nmap、freerdp、vncviewer、mtr、avahi-browse…)は、Nixラッパーによって自動的に提供されます。
### オプション4 — AppImage(任意のLinuxディストリビューション、インストール不要)
[最新リリース](https://github.com/thongor77/nmlinux/releases/latest) から `NMLinux-x.y.z-x86_64.AppImage` をダウンロードしてください:```bash
chmod +x NMLinux-*.AppImage
./NMLinux-*.AppImage
No installation required — Python, Qt and all NMLinux modules are bundled in a single file.
Works on any x86_64 Linux with glibc 2.17+ (Ubuntu 16.04+, Fedora 26+, Arch, Mint, etc.).
System network tools (
nmap,whois,mtr…) are not bundled — install them via your package manager for the corresponding modules to work. See Requirements below.
Option 5 — macOS
Quickest way — one-liner bootstrap. Works on a completely bare Mac: installs Xcode Command Line Tools, Homebrew, all system tools, then NMLinux itself. Safe to re-run (updates instead of reinstalling):```bash curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh
システム全体 (`/Applications`) に、`~/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
Apple Developerアカウントや有料の公証は不要です — 内部では同じオープンソースの
install_macos_app.shを使用しており、取得して実行するだけです。スクリプトはシンプルで読みやすいbashです。実行前に/tmp/bootstrap_macos.shを開いて読むか、packaging/bootstrap_macos.shで直接確認できます。ダウンロードしてから実行する方式(
bashに直接パイプするのではなく)は意図的です。新しいMacでは、スクリプトはターミナルから読み取るネストされた対話型ステップ(Xcode Command Line Toolsインストーラー、sudoパスワードを求めるHomebrew自身のインストーラー)をトリガーします。スクリプトをbashに直接パイプすると、これらのネストされたプロンプトがスクリプト自身の入力ストリームと干渉し、途中で停止する可能性があります。ダウンロードしたファイルから実行すれば、その問題を完全に回避できます。
手動インストール — 各ステップを自分で実行したい場合、またはすでにHomebrewがある場合:```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
更新: `git pull && bash packaging/install_macos_app.sh`
アンインストール: `bash packaging/uninstall_macos.sh`
システム全体にインストール (`/Applications`): `bash packaging/install_macos_app.sh --system`
このスクリプトは、以下のPythonパッケージをvenvに自動的にインストールします:
- `PySide6`, `ptyprocess`, `pyte`, `tftpy`
- `pyobjc-framework-Cocoa` — macOSメニューバー、ネイティブダイアログ
- `pyobjc-framework-CoreWLAN` — Wi-Fi SSIDスキャン
- `pyobjc-framework-CoreLocation` — Wi-Fi名を取得するための位置情報サービス権限
**macOS 26 (Tahoe) でのWi-Fi:** 初回起動時に、macOSが位置情報サービスの許可を求めます — Wi-Fiネットワーク名を表示するには許可してください。この許可は、*システム設定 › プライバシーとセキュリティ › 位置情報サービス* に表示されます。
> ほとんどのモジュールはmacOSで変更なしに動作します。RDPは`open rdp://` (Microsoft Remote Desktop) にフォールバックし、VNCは`open vnc://` (標準の画面共有) にフォールバックします。接続マネージャーはmacOSでは機能が制限されます (`nmcli`は利用不可)。
### オプション 6 — Debian / Ubuntu / Linux Mint (インストールスクリプト)
> **Linux Mint / Ubuntuユーザーへの注意:** Python 3.12+ では、システム全体への`pip install`がブロックされています (PEP 668 — `externally-managed-environment`)。提供されているインストールスクリプトを使用してください — 自動的に仮想環境が作成され、`.desktop`エントリがインストールされます。```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
bash install.sh
スクリプトは次のことを行います:
apt経由でシステム依存関係をインストールします (libgl1、python3-venv、freerdp、tigervnc…)~/.local/share/nmlinux/venvに仮想環境を作成します- venv 内に NMLinux とその Python 依存関係をインストールします
~/.local/bin/nmlinuxにランチャーを作成します.desktopエントリを追加して、NMLinux がアプリケーションメニューに表示されるようにします
インストール後、ターミナルから nmlinux を実行するか、アプリケーションメニューから起動します。
オプション 7 — Wheel (すべてのディストリビューション / macOS)
.whl を 最新リリース からダウンロードしてインストールします:```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
> **Ubuntu 26.04+ 向けの注意:** `pipx` を使用するには、先にシステムライブラリ (libGL など) をインストールしておく必要があります — 上記のコマンドで対応できます。`pipx install` が PySide6 のビルドエラーで失敗する場合は、代わりに **Option 4** (インストールスクリプト) を使用してください。そちらはすべてを自動的に処理します。
### Option 8 — ソースから (Arch / Fedora / macOS)```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
pip install PySide6 ptyprocess pyte tftpy
python3 -m nmlinux.main
オプション9 — デスクトップエントリ(KDE / GNOME / など)
.desktop ファイルをコピーして、NMLinux がアプリケーションランチャーに表示されるようにします:```bash
cp data/nmlinux.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/
次に、必要に応じてファイル内の `Exec=` パスを編集します。
---
## 実行```bash
./nmlinux.sh
# or, after pip install:
nmlinux
# or directly:
python3 -m nmlinux.main
プロジェクト構成```
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
---
## デスクトップ環境の互換性
v1.2.7 以降、NMLinux はランタイムで `QSvgRenderer` によりレンダリングされる 21 個のバンドル済み [Lucide](https://lucide.dev) SVG アイコンを使用しています。このアプリはもはやシステムのアイコンテーマ(Breeze、Adwaita、Papirus…)に依存せず、KDE、GNOME、XFCE などで正しく表示されます。Qt スタイルは実行中のデスクトップに自動的に適応します。
---
## 制限事項
### Linux
完全サポート — 29 モジュールすべてが利用可能です。
### macOS
ほとんどのモジュールは、両方のプラットフォームで利用可能なツール(`ssh`、`dig`、`ping`、`curl`、`nmap`、`openssl`…)に依存しているため、そのまま動作します。
**9 つのモジュールには明示的な macOS 対応が必要です**(起動時にプラットフォームを検出する二重コードパス): Dashboard、Interfaces、Wi-Fi、Topology、Bandwidth、Firewall、Connection Manager、Hosts File、MTR — これらは Linux の同等コマンドの代わりに、macOS 標準のコマンド(`ifconfig`、`networksetup`、`scutil`、`pfctl`、`system_profiler`…)を使用します。
**macOS のサポートが限定的または存在しないモジュール:**
| モジュール | 状態 | 備考 |
|--------|--------|-------|
| **RDP** | ✓ macOS | `open rdp://` にフォールバック → Microsoft Remote Desktop(App Store) |
| **VNC** | ✓ macOS | `open vnc://` にフォールバック → 画面共有(内蔵、インストール不要) |
| **IP Scanner** | ✓ macOS | `socket.gethostbyaddr()` を使用 — ネイティブ Python、追加ツール不要 |
| **SMB** | ✓ macOS | `smbclient` の代わりに `smbutil view`(内蔵)を使用 |
| **NFS** | ✓ macOS | `showmount` 内蔵。ヘッダー解析は適用済み |
| **Connection Manager** | ⚠ 制限あり | 編集/削除には `nmcli`(Linux のみ)が必要。一覧表示は動作します |
### 全般
- root/polkit 統合なし — 昇格した権限を必要とするツール(一部の Nmap モード、raw ソケット)は `sudo` で実行する必要があります。macOS では、権限昇格に `osascript` + 管理者権限を使用します
- SSH エージェント転送にはアクティブな SSH エージェント(`SSH_AUTH_SOCK`)が必要です。macOS ではシステムが自動的に処理するため、手動設定は不要です
---
## クレジットと謝辞
- **[Anthropic](https://www.anthropic.com)** — このプロジェクトの構築に使用された AI アシスタント、Claude Code
- ビジョン、テスト、方向性を提供した作者
---
## プロジェクトを支援する
NMLinux が役に立つと思われるなら、開発の支援をご検討ください:
- **PayPal** — [PayPal で寄付](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`
---
## ライセンス
GPL-2.0 — [LICENSE](https://github.com/thongor77/nmlinux/blob/HEAD/LICENSE) を参照してください。
このプロジェクトは独立した再実装です。NETworkManager のコードは使用も翻訳もされていません。





