Show HN:BornToBeRoot 的 NETworkManager 的免费 Linux 适配版
摘要
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¤cy_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 导出 |
| Nmap | 7 种扫描模式,XML 输出解析,主机/端口/协议/状态/服务表格,CSV + TXT 导出 |
| Whois | 等宽字体显示原始 whois 输出 |
| SNMP | snmpwalk/snmpget,v1/v2c,10 个 OID 预设,结果表格 |
| SNTP / NTP | 纯 Python RFC 4330 UDP 客户端,偏移/延迟/层级/参考 |
| SSH | 嵌入式 PTY 终端(pyte/VT100),保存的连接(JSON),密钥认证,回滚 |
| 远程桌面 | RDP 连接配置文件(分组/子分组);启动 xfreerdp;密码从不存储 |
| VNC | VNC 连接配置文件(分组/子分组);启动 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 |
vncviewer | VNC | Arch: 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 pyte或sudo 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(依赖于
nmcli、ip、dig、ping等子进程工具) - 无 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
Project N.O.M.A.D. 是一个优先离线运行的服务器,它集成了 AI 聊天、本地知识库、离线版维基百科、可汗学院课程、地图以及其他教育工具,旨在任何基于 Debian 的系统上运行。
NNN Stack: NixOS, Niri, Noctalia
NNN Stack 结合了 NixOS、Niri 组合器和 Noctalia shell,创建了一个声明式、可滚动且可复现的桌面环境,并邀请用户贡献他们的 dotfiles。
Netfox
Netfox 是一款用于本地网络流量分析的 macOS 原生网络监控工具。
Show HN: Sx – 一个用于AI技能、MCP和命令的开源包管理器
sx 是一个开源包管理器,用于在团队间共享AI技能、MCP配置和命令。它帮助捕获个人AI专业知识,并自动分发给团队成员。
Show HN: Mezz, 一个可通过curl使用的WiFi沙箱,用于物联网渗透测试
Mezz 是一个自包含的WiFi沙箱工具,用于检查物联网设备流量,提供一个隔离网络,带有DNS日志记录和可选的MITM代理,全部可通过Docker部署在具有AP功能的WiFi的Linux主机上。