# itgeeker_gpu_widgets
**Repository Path**: itgeeker/itgeeker_gpu_widgets
## Basic Information
- **Project Name**: itgeeker_gpu_widgets
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-20
- **Last Updated**: 2026-07-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Widget
## README
# 🖥️ itgeeker-gpu-widgets
**一款把多块 GPU "塞进" Windows 桌面的开源浮窗监控插件**
[](LICENSE)
[](itgeeker-gpu-widgets_更新日志_2026-07-26.md)
[](https://www.python.org/)
[]()
[]()
[](https://doc.qt.io/qtforpython-6/)
> 把 GPU 状态,以最不打扰的方式,放在你最需要它的地方。
---
## 📖 项目简介
跑 LLM 微调、做大模型推理、玩 4K 光追游戏的时候,你有没有反复切窗口、敲 `nvidia-smi` 才能确认显存没爆?
**itgeeker-gpu-widgets** 是一个轻量级的 GPU 桌面浮窗监控插件。它安静地趴在屏幕角落,**默认置顶但不抢焦点**,用最不打扰的方式,把本机和远程 GPU 的关键指标实时呈现给你——看一眼,余光扫一下,就能掌握每一块显卡的状态。
它不是"看起来啥都有"的大而全平台,而是**把"盯着 GPU"这一件事做到极致**的小工具:深色科技风半透明浮窗、智能变色告警、Windows Toast 通知、SSH 免密远程监控、历史趋势曲线、Top 进程列表……该有的都有,不该有的绝不打扰你。
如果你既想要桌面上"看着就很专业"的科技感,又想真正掌握每一块 GPU 的状态,这个开源小浮窗就是为你准备的。
---
## ✨ 核心特性
- 🎯 **多源一屏监控** —— 同时支持**本机 NVIDIA**、**远程 NVIDIA Ubuntu(SSH + nvidia-smi)**、**远程 Intel Arc Ubuntu(SSH + intel_gpu_top)** 三类数据源并排显示。
- 🔐 **SSH 免密远程接入** —— 远程机器配一次 SSH 密钥,浮窗自动盯上;远程机重启后一键秒级重连。
- 🎨 **深色科技风浮窗** —— `#1a1a2e` 深邃底色 + `#00ff88` 荧光绿 + `#00d4ff` 荧光蓝,**置顶但不抢焦点**,写代码、看文档、刷浏览器它都在。
- 🚨 **智能变色告警** —— 温度 > 85°C、显存 > 90%、GPU 利用率打满?数字立刻变红,余光一扫就知道"不对劲"。
- 🔔 **Windows Toast 通知 + 60 秒防骚扰** —— 开会时不用盯屏幕,右下角弹窗告诉你哪台机器在冒烟;同类告警 60 秒内不重复。
- 🧊 **系统托盘 + 开机自启** —— 自绘 GPU 芯片小图标,右键菜单齐全;设置里勾一下,写入 `HKCU\...\Run`,开机后台默默启动。
- 📈 **1 小时历史趋势曲线** —— 720 个采样点的环形缓冲,pyqtgraph 绘制,丝滑滚动。
- 🏆 **Top 进程列表** —— 本地 NVIDIA 列出显存占用 Top 3 进程,远程 Intel Arc 列出最繁忙的客户端。
- 🖱️ **边缘自动吸附** —— 鼠标拖到屏幕边缘,自动靠边隐藏,不遮挡你的工作区。
- 📦 **PyInstaller 单文件 EXE** —— 不装 Python 也能跑,双击即用,企业内分发无门槛。
- 🧩 **模块边界清晰** —— `collectors / controller / models / services / ui` 五层结构,二次开发门槛极低。
---
## 🎬 效果演示
> _以下为占位图,建议替换为实际截图或 GIF_

浮窗示意(ASCII 预览):
```
┌─────────────────────────────────┐
│ NVIDIA RTX 4090 (本机) │
│ GPU : 78.3% │
│ VRAM : 18.2 / 24.0 GB │
│ Temp : 71°C │
│ Fan : 45% │
│ Power: 285 W │
│ ───────────────────────────── │
│ DGX Server (远程 SSH) │
│ GPU : 92.1% │
│ VRAM : 76.0 / 80.0 GB │
│ Temp : 84°C │
│ ... │
└─────────────────────────────────┘
```
---
## 🚀 快速上手
### 一、环境准备
| 项目 | 要求 |
| ---------- | ----------------------------------------------------------------- |
| 操作系统 | **Windows 10 / Windows 11**(64 位) |
| Python | **>= 3.12**(仅源码运行需要;下载 EXE 版本无需) |
| 显卡 | 本机监控需 NVIDIA GPU;远程监控通过 SSH 接入,**本机无需独显** |
| 网络 | 远程节点需可 SSH 登录(推荐密钥免密) |
| 远程节点 | Ubuntu + NVIDIA(`nvidia-smi`)**或** Ubuntu + Intel Arc(`intel_gpu_top`) |
> 💡 **Windows only?** 浮窗本体依赖 PySide6 + Win10toast,**仅在 Windows 上运行**。但远程节点可以是任意 Linux 发行版。
### 二、安装步骤
#### 🟢 方式一:小白版(下载 EXE,5 秒上手)
前往 [Releases](../../releases) 页面,下载最新的 `itgeeker-gpu-widgets.exe`,**双击即用**——无需 Python 环境,无需任何依赖。
#### 🔧 方式二:开发者版(从源码运行)
```bash
# 1. 克隆仓库
git clone https://github.com//itgeeker-gpu-widgets.git
cd itgeeker-gpu-widgets
# 2. 创建并激活虚拟环境(推荐)
python -m venv .venv
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows CMD
.venv\Scripts\activate.bat
# 3. 安装依赖(含开发依赖)
pip install -e ".[dev]"
```
> 如果使用 `uv`:`uv sync --extra dev` 亦可。
### 三、使用示例
#### ▶️ 启动应用
```bash
python main.py
```
启动后,浮窗会出现在屏幕右上角(上次保存的位置),同时系统托盘会出现 GPU 芯片图标。
#### ⌨️ 常用操作
| 操作 | 效果 |
| ----------------------------- | --------------------------------- |
| **双击托盘图标** | 显示 / 隐藏浮窗 |
| **右键托盘图标** | 打开菜单:显示、设置、自启、退出 |
| **拖动浮窗到屏幕边缘** | 自动吸附 |
| **点击浮窗右上角 ↻** | 一键重连所有远程节点 |
| **托盘菜单 → 打开设置** | 编辑 SSH 主机、告警阈值、刷新频率 |
#### 🧪 运行测试
```bash
pytest # 跑全部测试
pytest --cov # 生成覆盖率报告
ruff check . # 代码风格检查
mypy . # 静态类型检查
```
项目使用 **pre-commit** 维护提交质量:
```bash
pre-commit install # 安装 git hooks(仅需一次)
pre-commit run --all-files
```
---
## ⚙️ 配置说明
浮窗启动后,所有配置均通过 **设置窗口(托盘菜单 → 打开设置)** 完成,配置保存在用户目录下:
```
%USERPROFILE%\.itgeeker-gpu-widgets\config.json
```
### 主要配置项
| 配置项 | 说明 | 默认值 |
| ------------------ | --------------------------------------------------------------- | -------------------------- |
| `refresh_interval` | 数据刷新周期(秒) | `2` |
| `ssh_hosts` | 远程节点列表,每项含 `name / host / user / port / key_path` | `[]` |
| `alert_thresholds` | 告警阈值:`temp_c / vram_pct / gpu_pct` | `85 / 90 / 95` |
| `alert_cooldown_s` | 同一类告警的最小重复间隔(秒) | `60` |
| `autostart` | 是否开机自启(写入 `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`) | `false` |
| `window_geometry` | 浮窗位置与大小 | 屏幕右上角默认位置 |
| `always_on_top` | 浮窗是否置顶 | `true` |
### SSH 密钥免密(远程节点必做)
```powershell
# 1. 生成本机密钥(如已有可跳过)
ssh-keygen -t ed25519
# 2. 把公钥复制到远程 Ubuntu 节点
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
# 3. 在浮窗设置中添加远程节点:
# name = "DGX Server"
# host = 192.168.1.100
# user = your_user
# port = 22
# key_path = C:\Users\you\.ssh\id_ed25519
```
### 环境变量(高级)
| 变量名 | 说明 |
| ------------------------------- | ------------------------------------------ |
| `ITGEEKER_GPU_WIDGETS_CONFIG` | 自定义配置文件路径(覆盖默认位置) |
| `ITGEEKER_GPU_WIDGETS_LOG_LEVEL`| 日志级别:`DEBUG` / `INFO` / `WARNING` |
---
## 🤝 贡献指南
欢迎任何形式的贡献——Bug 反馈、功能建议、文档改进、代码 PR 都值得感谢 🙌。
### 提 Issue
- **Bug**:请附带系统版本、Python 版本、复现步骤、相关日志;
- **新功能**:先描述使用场景,再讨论实现方案,避免方向不一致的无效 PR。
### 提 Pull Request
```bash
# 1. Fork 本仓库并克隆你的 Fork
git clone https://github.com//itgeeker-gpu-widgets.git
cd itgeeker-gpu-widgets
# 2. 创建特性分支(feat/、fix/、docs/ 前缀)
git checkout -b feat/support-amd-gpus
# 3. 安装开发依赖
pip install -e ".[dev]"
pre-commit install
# 4. 编写代码 + 测试(tests/ 目录下)
# 新功能请同步更新 docs 与 CHANGELOG
# 5. 本地验证
ruff check .
mypy .
pytest --cov
# 6. 提交(commit 信息遵循 Conventional Commits)
git commit -m "feat: add AMD GPU monitoring via rocm-smi"
# 7. 推送并创建 PR
git push origin feat/support-amd-gpus
```
### 代码风格
- 遵循 [`pyproject.toml`](pyproject.toml) 中的 **ruff** + **mypy** 配置;
- UI 代码集中在 `ui/`,业务逻辑收敛到 `services/`,数据采集放到 `collectors/`;
- 提交前请确保 `pre-commit run --all-files` 通过。
> 💡 **重大变更**(架构调整、新增数据源、协议变更)请先开 Issue 讨论,再写代码。
---
## 📜 开源协议
本项目采用 **[木兰宽松许可证,第 2 版 (MulanPSL-2.0)](LICENSE)** 开源。
> 您可以自由地复制、使用、修改、分发本软件,包括用于商业用途;只需保留版权声明和许可声明。
> 完整条款请参见 [LICENSE](LICENSE) 文件。
---
## 🙏 致谢
- [PySide6](https://doc.qt.io/qtforpython-6/) —— 现代化的 Qt for Python 绑定;
- [NVIDIA Management Library (NVML)](https://developer.nvidia.com/nvidia-management-library-nvml) —— 本机 GPU 数据源;
- [pyqtgraph](https://pyqtgraph.org/) —— 高性能实时绘图;
- [paramiko](https://www.paramiko.org/) —— 纯 Python SSH 实现;
- 所有 [Contributors](../../graphs/contributors) 与 Issue 反馈者。
---
如果这个项目对你有帮助,欢迎 ⭐ **Star** 支持一下,也欢迎分享给身边需要的朋友!
**itgeeker-gpu-widgets** · Made with ❤️ for GPU enthusiasts