Skip to content

Repository files navigation

🎮 GpuMonitor

一个基于 .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 (图标处理)

🚀 使用方法

  1. 启动应用:运行 GpuMonitor.exe
  2. 配置 SSH
    • 首次运行会自动弹出设置面板。
    • 填写远程主机的 IP/域名用户名密码端口
    • 点击 测试连接 验证,成功后点击 保存
  3. 开启监控
    • 点击标题栏的 📺 按钮,或按 Ctrl + Shift + G
    • 覆盖层将出现在屏幕边缘,实时显示 GPU 数据。
  4. 自定义覆盖层
    • 点击 设置按钮,在“监控覆盖层设置”中调整:
      • 停靠:右侧、左侧、顶部、底部。
      • 排版:勾选“紧凑单行”以节省空间。
      • 透明度:90% ~ 30%。
      • 对齐:居中、左对齐、右对齐。
    • 修改后点击 保存,覆盖层会自动重启并应用新设置。
  5. 最小化
    • 点击 关闭主窗口,程序将最小化到系统托盘。
    • 右键托盘图标可显示主窗口、切换覆盖层或退出程序。

📁 项目结构

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 实现点击穿透,不影响鼠标操作。

📄 License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages