系统状态监控:Cinnamon 面板上的 2×2 系统监视器

Linux Mint 用久了,想在面板上常驻看一眼上下行速率和内存。conky 当然能配,但为 2×2 四个小格请一尊大佛,不值;系统监视器又要开窗口,瞟一眼的成本太高。

Cinnamon 的面板 applet 本身就是 GJS 写的,读 /proc 和 /sys 属于近水楼台。于是有了这个小程序:不装 Python、不要 root、不起后台进程,装上就能用。

系统状态监控面板效果

数据来源

所有指标直接读内核提供的接口,不经过第三方程序:

指标 来源
上传 / 下载 /proc/net/dev
内存 / Swap /proc/meminfo(MemTotal、MemAvailable、SwapTotal、SwapFree)
CPU 频率 /sys/devices/system/cpu/cpuN/cpufreq/scaling_cur_freq,失败时回退 /proc/cpuinfo
磁盘读写(详情卡) /proc/diskstats,只统计整盘(sdX、nvmeXnY、mmcblkX)

刷新节奏:网络与内存每秒一次,CPU 频率每 2 秒一次。

两个值得说的设计

定宽。 面板组件最招人烦的不是功能少,是刷新时宽度乱抖,把相邻图标推来挤去。这里的做法是所有数值先格式化成固定字符数再上屏,配合固定宽度,刷新时整块宽度不变。

随面板高度自适应。 字号取 floor(面板高度 / 3),图标取面板高度 × 0.34,两行正好铺满;字体不写死,继承面板主题,换主题不用改代码。改面板高度后自动重排。

另外两个小点:虚拟网卡按前缀过滤(lo、virbr*、vnet*、docker*、br-*、veth*、tun*、tap*),不过滤的话,跑着虚拟机时上传数字能翻一倍,监控就成了笑话;悬停详情卡挂在 Clutter stage 上,不参与面板布局,面板怎么变都不会挤到它。

自愈

连续读取失败 3 次会自动重建界面。/proc 偶尔抽风不至于让插件一直白屏,属于花小代价买省心。

实测环境与已知限制

项目 情况
桌面环境 Cinnamon 6.6.9(支持 5.x / 6.x)
操作系统 Linux Mint 22.3(基于 Ubuntu 24.04 LTS)
内核 7.0.0-38-generic(HWE)
会话 X11;Wayland 未适配,Cinnamon 的 applet 接口在 Wayland 下本来就残,不是不想适配
权限 普通用户,无需 sudo

已知限制也摆在这里:只支持 Linux(依赖 /proc、/sys);CPU 频率是调频驱动上报的值,不同平台精度有差异;网卡过滤是前缀列表,用了 wg* 这类接口的话,去 applet.js 的 isRealIface() 里补一项。

安装

1
2
3
git clone https://github.com/LuminDream/system_monitor.git
cd system_monitor
./install.sh

然后打开 系统设置 → 面板 → 添加小程序,选「系统状态监控」,建议放面板左侧。

仓库地址:LuminDream/system_monitor,MIT License。