一个基于 .NET WPF 的悬浮窗应用,用于通过 SSH 远程监控工作站的显卡状态。
- 🔗 SSH 远程连接:使用
SSH.NET库通过密码认证连接远程 Linux 工作站。 - 📊 实时数据解析:自动解析
nvidia-smi输出,获取温度、利用率、显存、功耗、风扇转速等核心指标。 - 📺 监控覆盖层 (Overlay):
- 类似 Steam 帧率显示的悬浮窗,点击穿透,总在最前。
- 支持 紧凑单行模式,减少屏幕占用。
- 可自定义 停靠位置(上/下/左/右)、文字对齐、背景透明度。
- 💻 系统托盘:主窗口最小化到托盘,支持右键菜单操作。
- ⌨️ 全局快捷键:
Ctrl + Shift + G快速切换覆盖层开关。 - 🎨 暗色主题:精心设计的暗色 UI,数据颜色随状态变化(温度/利用率/风扇)。
- 💾 配置持久化:自动保存 SSH 信息和覆盖层设置。
- 框架: .NET 10.0 (WPF)
- 语言: C#
- 依赖:
SSH.NET(远程 SSH 连接)System.Drawing.Common(图标处理)
- 启动应用:运行
GpuMonitor.exe。 - 配置 SSH:
- 首次运行会自动弹出设置面板。
- 填写远程主机的 IP/域名、用户名、密码、端口。
- 点击 测试连接 验证,成功后点击 保存。
- 开启监控:
- 点击标题栏的 📺 按钮,或按
Ctrl + Shift + G。 - 覆盖层将出现在屏幕边缘,实时显示 GPU 数据。
- 点击标题栏的 📺 按钮,或按
- 自定义覆盖层:
- 点击 ⚙ 设置按钮,在“监控覆盖层设置”中调整:
- 停靠:右侧、左侧、顶部、底部。
- 排版:勾选“紧凑单行”以节省空间。
- 透明度:90% ~ 30%。
- 对齐:居中、左对齐、右对齐。
- 修改后点击 保存,覆盖层会自动重启并应用新设置。
- 点击 ⚙ 设置按钮,在“监控覆盖层设置”中调整:
- 最小化:
- 点击 ✕ 关闭主窗口,程序将最小化到系统托盘。
- 右键托盘图标可显示主窗口、切换覆盖层或退出程序。
GpuMonitor/
├── MainWindow.xaml # 主窗口 UI
├── MainWindow.xaml.cs # 主逻辑、托盘、快捷键、配置管理
├── MonitorWindow.xaml # 覆盖层 UI
├── MonitorWindow.xaml.cs # 覆盖层逻辑、点击穿透、数据渲染
├── SshService.cs # SSH 连接与 nvidia-smi 解析
├── GpuInfo.cs # GPU 数据模型
├── icon.png # 应用图标
└── GpuMonitor.csproj # 项目文件
# 还原依赖
dotnet restore
# 构建
dotnet build
# 运行
dotnet run- 确保远程工作站已安装
nvidia-smi且 SSH 服务正常运行。 - 配置文件存储在
%LocalAppData%\GpuMonitor\config.json。 - 覆盖层使用 Windows API 实现点击穿透,不影响鼠标操作。
MIT