Skip to content

Repository files navigation

PyTray

English | 中文

Platform Python License

热键把任意窗口收进系统托盘的小工具,RBTray 的 Python 精简复刻。带现代深色设置界面, 支持中文 / English 切换、热键自定义、已收起窗口管理。

screenshot

致敬

本项目致敬经典开源工具 RBTray —— 1998–2010 年由 Nikolay Redko 与 J.D. Purcell 创作、2015 年起由 Benbuck Nason 维护的"窗口收托盘"鼻祖(SourceForge 原项目)。 PyTray 的核心行为(热键收窗口、托盘图标恢复、退出时恢复全部窗口、使用窗口自身图标等) 均以 RBTray 为蓝本,用 Python 独立重写,未使用其任何代码。向原作者致敬。

功能

  • 热键收窗口:默认 Alt+Shift+F9 把前台窗口收进托盘,任务栏无残留, 托盘显示该窗口自己的图标和标题
  • 恢复 / 关闭:单击托盘图标恢复;主界面列表实时显示所有已收起窗口, 每行可一键恢复或关闭
  • 自定义热键:点"修改热键"按下新组合即可,自动保存;启动时自动检测 RegisterHotKey 类占用(如 RBTray、显卡驱动)
  • 临时标记:收起的窗口可改临时显示名、加 12 色色环/色标(支持 #RRGGBB / RGB 自定义)。标记为粘性——恢复后再收起仍保留, 窗口关闭或手动「清除标记」才消失
  • 双语界面:中文 / English 一键切换,偏好自动保存
  • 自身也收托盘:主窗口最小化或点 × 均收进托盘,单击托盘图标唤回
  • 安全退出:退出时自动恢复所有被收起的窗口,不丢窗口
  • 单实例防多开;窗口自行退出或重新显示时自动清理对应托盘图标

安装

方式一:发布版(推荐)

从 Releases 下载 PyTray.exe,双击即用,无需安装 Python。 PyTray.exe 与 PyTray.ico(可选,用于窗口图标)放同一目录即可。

方式二:源码运行

双击 setup.bat     # 建 venv + 装依赖 + 检测默认热键
双击 start.bat     # 启动

或手动:

python -m venv venv
venv\Scripts\pip install -r requirements.txt
venv\Scripts\pythonw.exe pytray.py

使用

操作 方式
收起窗口 前台窗口按热键(默认 Alt+Shift+F9)
恢复窗口 单击托盘图标 / 主界面列表"恢复"
关闭窗口 右键托盘图标 → 关闭窗口 / 主界面列表"关闭"
修改热键 主界面"修改热键"→ 按下新组合(Esc 取消)
重命名 / 色标 列表行 ✎ 按钮,或托盘右键 → 重命名 / 标记(粘性:恢复后再收起仍保留;关闭窗口或「清除标记」才消失)
切换语言 主界面右上角 中文 / English
唤回主界面 单击托盘 PyTray 图标
退出 托盘右键 → 退出 PyTray(恢复全部窗口)

热键写法:修饰键+修饰键+主键,如 alt+shift+f9、ctrl+alt+down、ctrl+alt+t。

命令行临时指定热键(一次性,不写入配置):PyTray.exe ctrl+alt+t

探测局限:能检出 RegisterHotKey 类占用;AutoHotkey 等低级键盘钩子类热键 无法被任何 Windows API 枚举,只能实际按键观察有无双重响应。

构建打包版

venv\Scripts\pip install pyinstaller
build.bat

产物为 dist\PyTray.exe(单文件、无控制台、内嵌图标)。

CI 自动构建与发版指南

仓库同时托管在 GitHub 与 CNB(origin 双推送), 不依赖任何自托管 Runner。换人维护请按本节操作。

架构(为什么要这样)

PyInstaller 只能在 Windows 上出 .exe,CNB 官方构建节点是 Linux,因此:

平台 配置文件 职责
GitHub .github/workflows/build.yml 在 windows-latest 上跑单测并真正打包 PyTray.exe
CNB .cnb.yml 打 v* 标签时,从 GitHub Release 取下 exe,再发到 CNB Release

日常:只改代码

git add -A
git commit -m "说明改了什么"
git push origin main

自动发生:

  • GitHub Actions:单测 + 打包出 PyTray.exe(在 Actions 运行记录的 Artifacts 里可下载)
  • CNB 云原生构建:语法检查

不会生成正式 Release——避免每改一行就发一个版本。

发版:给用户下载

在代码已推到 main 的前提下:

git tag v1.2.2
git push origin main --tags

(或分开:git push origin main 再 git push origin v1.2.2)

自动发生:

  1. GitHub:重新跑测试和打包 → 创建 Release v1.2.2 → 挂上 PyTray.exe
  2. CNB:流水线等待 GitHub 出包(约 30 分钟内轮询)→ 创建 CNB Release → 挂上同一 exe

完成后两边都有可下载的 PyTray.exe。

标签请用 v + 语义化版本(v1.2.2)。CNB 流水线用 v* 匹配; 不带 v 的标签(如 1.0.0)不会触发 CNB 发版流水线。

发版后检查清单

检查项 位置 期望
GitHub Actions Actions build 绿勾
GitHub Release Releases 有目标版本与 PyTray.exe
CNB 构建 仓库 → 云原生构建 tag_push 那条成功(v*)
CNB Release 仓库 → Release 有同一版本与 PyTray.exe

常见问题(CI)

  • CNB 有构建记录但没有 Release:看 tag_push 日志。若停在 download exe from GitHub release, 是 GitHub 还没打完包或 Actions 失败——先确认 GitHub Release 里有没有 exe,再在 CNB 重跑该流水线
  • 打标签后 CNB 完全没反应:确认标签是 v1.x.x(要匹配 v*),且标签已推到 CNB(git push origin <tag>)
  • 只想本地出包:build.bat,见上一节

开发与测试

venv\Scripts\python.exe tests\test_units.py
venv\Scripts\python.exe tests\smoke_test.py

单元测试覆盖热键解析与色标颜色解析;冒烟测试覆盖启动、主窗口显示、最小化自收托盘、热键收起目标窗口。

常见问题

  • 托盘看不到图标:Win11 会把新图标收进溢出区——点任务栏右下角 ^ 展开, 或在 任务栏设置 → 其他系统托盘图标 中开启
  • 启动后热键没反应:主界面状态行会说明组合被占用,点"修改热键"换一个
  • 字体版权:界面按名称引用 Windows 系统自带 Segoe UI Variable, 不分发、不内嵌任何字体文件,无版权问题
  • 彻底卸载:退出程序后删除 PyTray.exe / 项目文件夹即可,不写注册表、无残留

许可

MIT。本项目未使用 RBTray 的任何代码;向其作者致敬(见致敬)。

About

Hotkey-based minimize-to-tray utility for Windows — a lightweight Python reimagining of RBTray with a modern dark UI. | 热键收窗口到托盘

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages