Show HN:BornToBeRoot 的 NETworkManager 的免费 Linux 适配版

Hacker News Top 工具

摘要

NMLinux 是 NETworkManager 的免费、开源 Linux 适配版,为常用网络工具提供统一的图形界面。它基于 Python 和 PySide6 构建,包含 SSH、RDP、VNC、Wi-Fi、路由追踪、网速测试等模块,面向系统管理员和高级用户。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/01 22:45

thongor77/nmlinux

来源: https://github.com/thongor77/nmlinux

NMLinux · v1.2.9

捐赠 (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&currency_code=EUR)

由 BornToBeRoot 开发的 NETworkManager (https://github.com/BornToBeRoot/NETworkManager) 的免费 Linux 改编版。

NMLinux 将 NETworkManager 的精神带到了 Linux 桌面,使用 Python 和 PySide6(Qt 6)从头实现。它不是原始 C# 代码的移植,而是一个受同一理念启发的独立项目:为系统管理员或高级用户提供常用网络工具的统一图形界面。

NMLinux 与 Linux 系统守护进程 /usr/bin/NetworkManager(Red Hat/GNOME 的 NetworkManager)无关。 其名称源自 BornToBeRoot 的 NETworkManager (https://github.com/BornToBeRoot/NETworkManager),这是一个类似的 Windows 工具,是其最初的灵感来源。

使用 Claude Code (https://claude.ai/code)(Anthropic)及其作者的贡献构建。


截图

仪表盘拓扑图
仪表盘拓扑图
路由追踪Wi-Fi
路由追踪Wi-Fi

更新日志

v1.2.9 — 2026-05-30

  • VNC — 新增模块,用于管理 VNC 连接配置文件;支持类似 SSH 和 RDP 的分组/子分组;启动 vncviewer(TigerVNC);兼容 macOS ARD(vncviewer 原生处理 DH30 认证);密码从不存储;检测缺失的 vncviewer 并给出特定发行版的安装说明
  • 关于 — 工具与服务 — 新增章节,列出应用所依赖的所有第三方工具和 API
  • 侧边栏国际化 — 所有 23 个导航提示现已被翻译为法语/英语/西班牙语/德语(之前是硬编码的法语);标签已更正:拓扑图、连接、子网

v1.2.8 — 2026-05-30

  • 远程桌面(RDP) — 新增模块,用于管理 Windows RDP 连接配置文件;支持类似 SSH 的分组/子分组;启动 xfreerdp 作为外部进程;连接时提示输入密码,从不存储;字段:主机、端口、用户名、域、分辨率、全屏;检测缺失的 xfreerdp 并给出特定发行版的安装说明(Arch / Debian / Fedora)

v1.2.7 — 2026-05-26

  • 捆绑 Lucide 图标 — 来自 Lucide (https://lucide.dev)(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、路由追踪、速度测试、接口、端口扫描、防火墙、MTR 扩展了后备链;themed_icon() 现在在接受主题图标之前会验证是否存在真实像素图
  • NixOS / KDE 兼容性 — 修复了 NixOS 上的所有图标问题:Breeze 6.x 仅提供 SVGZ 格式图标;Nix 包装器现在将 qt6.qtsvg 添加到 QT_PLUGIN_PATH,使 Qt 能够渲染 SVG 图标;themed_icon() 尝试尺寸 22/24/16/32/48(Breeze 使用 22 像素,而非 24);当检测到 Nix 捆绑的图标集时,主题强制设为 breeze;还会检查 /etc/xdg/kdeglobals 以获取系统级 KDE 配置

v1.2.5 — 2026-05-23

  • MTR — 嵌入式 My Traceroute:运行 mtr --report,解析文本输出,显示实时表格,包含每跳的丢包率%、RTT 最后/平均/最佳/最差/抖动,按丢包严重程度着色;连续模式;CSV + TXT 导出
  • 速度测试 — 通过 curl + Cloudflare(speed.cloudflare.com)实现无依赖速度测试:下载(25 MB)、上传(10 MB)、 ping 至 1.1.1.1;最多 5 次运行结果持久化存储为 JSON;历史折线图(下载/上传)
  • 防火墙查看器 — 只读规则集查看器:无需 root 解析 /etc/nftables.conf/etc/iptables/*.rules;通过 pkexec nft list ruleset 获取实时规则集;列:表 / 链 / 规则 / 端口 / 动作 / 注释;动作按颜色编码;实时过滤
  • 侧边栏提示 — 每个导航条目现在显示一个微妙的 ? 徽章;悬停时显示描述模块功能的工具提示;在侧边栏和内容区域之间添加了垂直分隔线
  • 国际化 — 所有新模块已翻译为法语、英语和西班牙语

v1.2.0 — 2026-05-22

  • 主题适配 — 所有页面支持运行时亮/暗切换;新增 core/theme.py,包含 is_dark()color_ok()color_err();自定义画家小部件(_Graph_MapWidget)在绘制时读取调色板;所有硬编码的 Catppuccin Mocha 颜色已被替换为语义化的 Qt 调色板角色
  • 子网掩码 — 仪表盘、接口和连接页面现在显示由 CIDR 前缀派生的点分十进制子网掩码(例如 255.255.255.0
  • 带宽监视器 — 明确的开始/停止按钮取代了页面加载时不可靠的自动启动
  • 导出 CSV/TXT — Nmap 和路由追踪页面现在提供导出 CSV 和导出 TXT 按钮(在扫描/追踪完成后出现)
  • 国际化 — 上述所有功能的新翻译键(法语/英语/西班牙语/德语)

v1.1.1 — 2026-05-16

  • SSH 终端 — 使用 pyte (https://github.com/selectel/pyte)(VT100/xterm 模拟器)+ QPainter 渲染器完全重写;2000 行回滚、光标闪烁、256 色支持
  • 可视化路由追踪 — 世界地图(Natural Earth 110m),每跳实时地理定位(ip-api.com),交互式缩放/平移,双解析器(traceroute / tracepath 后备)
  • 带宽监视器 — 每个接口的实时吞吐量,60 秒滑动图表,实时速度,会话总数和峰值
  • Wake on LAN — 纯 Python 魔法包(UDP 广播),持久化主机簿(JSON)
  • IP 扫描器 — 通过 getent/avahi/nmblookup 解析主机名;MAC 地址、厂商(IEEE OUI 39K 条目)、接口列;更新了 CSV/TXT 导出
  • 国际化 — 所有新页面的完整法语/英语/西班牙语/德语翻译

v1.0.0 — 2026-05-14

首次公开发布 — 13 个模块:仪表盘、接口、Wi-Fi、子网计算器、DNS 查询、Ping 监视器、IP 扫描器、端口扫描器、Nmap、Whois、SNMP、SNTP/NTP、SSH。


功能

模块描述
仪表盘本地机器信息、网关、公网 IP、地理定位、DNS 解析器
连接管理器通过 nmcli 管理 NetworkManager 配置文件:列出、过滤、连接/断开/编辑/删除
接口网络接口表格,包含每个接口的详细信息(ip + nmcli
Wi-Fi可用网络、信号强度条、安全性、高亮显示已连接网络
子网计算器根据 CIDR 计算网络/广播/主机范围,最多 4096 条主机表
DNS 查询基于 dig 的查询,支持 A、AAAA、MX、TXT、NS、CNAME、PTR、SOA、ANY
Ping 监视器对多个主机持续 ping,RTT 统计,丢包百分比
IP 扫描器CIDR/范围 ping 扫描,50 线程,主机名(DNS/mDNS/NetBIOS)、MAC 地址、厂商(OUI)、接口、CSV + TXT 导出
端口扫描器TCP 连接扫描,200 线程,服务预设,CSV + TXT 导出
Nmap7 种扫描模式,XML 输出解析,主机/端口/协议/状态/服务表格,CSV + TXT 导出
Whois等宽字体显示原始 whois 输出
SNMPsnmpwalk/snmpget,v1/v2c,10 个 OID 预设,结果表格
SNTP / NTP纯 Python RFC 4330 UDP 客户端,偏移/延迟/层级/参考
SSH嵌入式 PTY 终端(pyte/VT100),保存的连接(JSON),密钥认证,回滚
远程桌面RDP 连接配置文件(分组/子分组);启动 xfreerdp;密码从不存储
VNCVNC 连接配置文件(分组/子分组);启动 vncviewer(TigerVNC);兼容 macOS ARD;密码从不存储
可视化路由追踪在世界地图上逐跳显示路由,实时地理定位(ip-api.com),缩放和平移,CSV + TXT 导出
MTR嵌入式 My Traceroute:每跳的丢包率%、RTT 最后/平均/最佳/最差/抖动,颜色编码,CSV + TXT 导出
防火墙查看器只读的 nftables + iptables/ip6tables 规则集(无需 root);通过 pkexec 获取实时规则;按表/链/动作过滤
速度测试通过 Cloudflare 进行下载/上传/ping;除 curl 外无需外部工具;历史图表(最近 5 次运行)
带宽每个接口的实时吞吐量:60 秒滑动图表,实时速度,会话总数,峰值
Wake on LAN纯 Python 魔法包(UDP 广播),持久化主机簿,无需外部工具
拓扑图通过 nmap -sn 自动发现局域网设备;交互式图形,节点可拖动,缩放/平移,详情面板
设置语言选择(法语、英语、西班牙语、德语),持久化

系统要求

系统工具

大多数在标准的 Linux 安装中已存在:

# 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

可选工具

工具功能
xfreerdp / xfreerdp3远程桌面(RDP)Arch: freerdp · Debian: freerdp2-x11 · Fedora: freerdp
vncviewerVNCArch: tigervnc · Debian: tigervnc-viewer · Fedora: tigervnc
nm-connection-editor从连接管理器编辑连接Arch: nm-connection-editor
traceroute路由追踪的替代方案(默认使用 tracepath)Arch: traceroute

Python

  • Python 3.11+
  • PySide6 6.6+
  • ptyprocess 0.7+
  • pyte 0.8+(pip install pytesudo pacman -S python-pyte

安装

选项 1 — Arch Linux / Manjaro / EndeavourOS(AUR)

yay -S nmlinux

所有依赖项(PySide6、ptyprocess、pyte、nmcli 等)自动处理。

选项 2 — Wheel(所有发行版)

从最新发布页面 (https://github.com/thongor77/nmlinux/releases/latest) 下载 .whl 文件并安装:

pip install nmlinux-1.2.9-py3-none-any.whl
nmlinux

选项 3 — 从源码安装

git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
pip install PySide6 ptyprocess pyte
python3 -m nmlinux.main

选项 4 — 桌面条目(KDE / GNOME 等)

复制 .desktop 文件,使 NMLinux 出现在应用启动器中:

cp data/nmlinux.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/

然后根据需要编辑文件中的 Exec= 路径。


运行

./nmlinux.sh
# 或者,pip 安装后:
nmlinux
# 或者直接:
python3 -m nmlinux.main

项目结构

nmlinux/
  core/
    i18n.py         — 翻译系统(fr/en/es/de),tr(key) 函数
    icons.py        — themed_icon():通过 QSvgRenderer 渲染的 21 个捆绑 Lucide SVG 图标
    settings.py     — AppSettings 数据类,JSON 持久化
    ssh.py          — SshConnection 数据类,SshStore
    rdp.py          — RdpConnection 数据类,RdpStore,find_xfreerdp()
    vnc.py          — VncConnection 数据类,VncStore,find_vncviewer()
    terminal.py     — SshWorker(QThread)+ 通过 ptyprocess 的 PTY,发出原始字节
    cli_bar.py      — CliBar 单例:教学性 CLI 等效命令栏
  pages/
    about.py        — 关于页面(致谢、工具与服务)
    bandwidth.py    — 带宽监视器:每个接口的 60 秒图表,实时统计
    connection_manager.py — 连接管理器:nmcli 配置文件,连接/断开/编辑
    dashboard.py    — 仪表盘
    dns.py          — DNS 查询
    firewall.py     — 防火墙查看器:nftables + iptables 解析器,通过 pkexec 获取实时规则
    interfaces.py   — 网络接口
    ip_scanner.py   — IP 扫描器
    mtr.py          — MTR:mtr --report 解析器,实时跳数统计表,导出
    nmap_scan.py    — Nmap
    ping.py         — Ping 监视器
    port_scanner.py — 端口扫描器
    rdp.py          — 远程桌面:RDP 配置文件,启动 xfreerdp
    settings.py     — 设置页面
    snmp.py         — SNMP
    sntp.py         — SNTP / NTP
    speedtest.py    — 速度测试:curl + Cloudflare,历史图表
    ssh.py          — SSH 页面(连接管理器 + 终端)
    subnet.py       — 子网计算器
    terminal_view.py — TerminalView:pyte VT100 模拟器 + QPainter 渲染器
    topology.py     — 拓扑图:nmap -sn,交互式图形,缩放/平移
    traceroute.py   — 可视化路由追踪:世界地图,地理定位,缩放/平移
    vnc.py          — VNC:连接配置文件,启动 vncviewer
    whois.py        — Whois
    wifi.py         — Wi-Fi
    wol.py          — Wake on LAN:魔法包,持久化主机簿
  assets/
    icons/          — 21 个捆绑的 Lucide SVG 图标(#60a5fa)
    world.geojson   — Natural Earth 110m 国家边界(地图背景)
  window.py         — MainWindow(侧边栏 + QStackedWidget)
  main.py           — 入口点

桌面环境兼容性

自 v1.2.7 起,NMLinux 使用 21 个捆绑的 Lucide (https://lucide.dev) SVG 图标,运行时通过 QSvgRenderer 渲染。应用不再依赖任何系统图标主题(Breeze、Adwaita、Papirus…),在 KDE、GNOME、XFCE 等桌面上都能正确显示。Qt 样式会自动适应运行的桌面环境。


限制

  • 仅限 Linux(依赖于 nmcliipdigping 等子进程工具)
  • 无 root/polkit 集成 — 需要提升权限的工具(某些 Nmap 模式、原始套接字)必须手动使用 sudo 运行
  • SSH 支持密码和密钥认证;尚未实现代理转发

感谢与致谢

  • BornToBeRoot (https://github.com/BornToBeRoot) — 感谢 NETworkManager (https://github.com/BornToBeRoot/NETworkManager),作为原始灵感和功能与用户体验的参考
  • Anthropic (https://www.anthropic.com) — Claude Code,用于构建此项目的 AI 助手
  • 作者,感谢其愿景、测试和方向引领

许可证

GPL-2.0 — 参见 LICENSE

本项目是一个独立的重新实现。未使用或翻译自 NETworkManager 的任何代码。

相似文章

Crosstalk-Solutions/project-nomad

GitHub Trending (daily)

Project N.O.M.A.D. 是一个优先离线运行的服务器,它集成了 AI 聊天、本地知识库、离线版维基百科、可汗学院课程、地图以及其他教育工具,旨在任何基于 Debian 的系统上运行。

NNN Stack: NixOS, Niri, Noctalia

Lobsters Hottest

NNN Stack 结合了 NixOS、Niri 组合器和 Noctalia shell,创建了一个声明式、可滚动且可复现的桌面环境,并邀请用户贡献他们的 dotfiles。

Netfox

Product Hunt

Netfox 是一款用于本地网络流量分析的 macOS 原生网络监控工具。