下班倒计时 · 桌面悬浮挂件
什么时候用这个技能
用户说这些话时触发:
- 「帮我装个下班倒计时」「桌面弄个倒计时挂件」「想要个一直显示在屏幕上的下班提醒」
- 「能不能在我电脑上放个显示还有多久下班的小工具」
- 想要番茄钟、喝水提醒、网速监控这类桌面常驻小组件(可以照这个改)
不适用:用户想要的是浏览器插件、手机 App、网页版,或者只是问"还有多久下班"这种一次性查询。
这个技能产出的东西长什么样
一张 468×214 的圆角半透明小卡片,永久置顶、不抢焦点、可拖动:
| 元素 | 说明 |
|---|---|
| 大数字 | 距离下班还剩几时几分几秒 |
| 进度条 | 今天已经过去的百分比 |
| 小动物 | 卡片右上角探头趴着,会眨眼;快下班时头顶冒思考云朵 |
| 齿轮 / × | 常驻半透明,改设置 / 退出 |
| 贴边隐藏 | 拖到屏幕左/右/上边缘自动收起,鼠标碰一下滑出来 |
环境要求
- Windows 10 / 11,64 位
- Python 3.10 或更高。没有的话先引导用户装:<https://www.python.org/downloads/>
安装时务必勾选 Add Python to PATH。 - 首次安装要联网下载约 73MB 依赖(PySide6)。
标准流程
第 1 步:体检
python scripts/install.py --check
它会检查系统、Python 版本和素材完整性。体检不通过就先解决环境问题,别硬装。
第 2 步:安装
python scripts/install.py
默认装到 %LOCALAPPDATA%\下班倒计时。常用变体:
python scripts/install.py --dir "D:\工具\下班倒计时" # 指定目录
python scripts/install.py --autostart # 顺便设开机自启
python scripts/install.py --no-desktop # 不建桌面图标
python scripts/install.py --no-start # 装完不自动启动
脚本内部做了这些事(出问题时按这个顺序排查):
- 在安装目录下建独立 venv(
runtime/)——不污染对方的全局 Python - 用四个国内镜像依次回退装
PySide6-Essentials==6.9.3 - 复制
countdown.py/avatar.py/ 图标 - 生成无黑框启动器
启动倒计时.vbs - 手写 .lnk 桌面快捷方式(不依赖 win32com,避免 COM 被拦)
- 可选写开机自启注册表项
第 3 步:确认装好了
让用户看屏幕右上角,应该出现小卡片。若没有:
"%LOCALAPPDATA%\下班倒计时\runtime\Scripts\python.exe" "%LOCALAPPDATA%\下班倒计时\countdown.py"
用带控制台的 python.exe(不是 pythonw.exe)跑,报错会直接打出来。
这是排查「双击没反应」最有效的一招。
定制(用户提需求时改这里)
| 用户想要 | 改哪里 |
|---|---|
| 改默认上下班时间 | 安装目录 config.json 的 start / end,或改 assets/countdown.py 里的 DEFAULT_CFG |
| 换配色 / 加新配色 | countdown.py 的 THEMES 列表(只能加不能删,theme 是下标) |
| 改提醒文案 | config.json 的 reminder_texts,每条 13 字左右最舒服,22 字是上限 |
| 改提醒提前量 | config.json 的 reminder_min(分钟) |
| 换动物形象 | avatar.py,目前是兔/虎/龙/狗四个,纯 QPainter 矢量绘制,不依赖图片 |
| 窗口尺寸 | countdown.py 的 W, H = 468, 214,改完必须同步调 CARD_TOP 和 HEAD_CX |
改完代码后删除安装目录的 config.json 再启动,可以让新默认值生效。
常见问题
依赖装不上,四个镜像全失败
公司代理拦截是最常见原因。让用户临时关掉代理,或让助手改用离线 wheel:
先在一台能上网的机器上 pip download PySide6-Essentials==6.9.3 -d wheels,
把 wheels 目录拷过去 pip install --no-index --find-links=wheels PySide6-Essentials。
双击图标没反应
用第 3 步那段 python.exe 命令跑,看真实报错。绝大多数是依赖没装全。
杀毒软件报毒
Python 打包/脚本类程序常被误报。让用户在杀毒软件里把这个目录加入信任。
程序不联网、不读用户文件、不上传任何数据。
卡片跑到屏幕外面找不到了
删掉安装目录的 config.json 重启,会回到默认位置。
想卸载
设置里取消开机自启 → 退出程序 → 删掉整个安装目录。不写注册表其他位置、不留系统垃圾。
维护者须知(改这个技能的人看)
assets/里的countdown.py+avatar.py是完整可运行源码,约 77KB。- 改完源码要重新验证:至少跑一次「装到临时目录 → 启动 → 看到 468×214 窗口」。
install.py里的make_lnk是手写 .lnk 二进制,字段顺序不能乱改
(Header 76 字节 → LinkInfo → StringData 按 NAME/RELPATH/WORKDIR/ARGS/ICON 顺序 → 4 字节 TerminalBlock)。- 依赖版本锁死
PySide6-Essentials==6.9.3,不要用PySide6(那是完整版,多带 100MB+ 的 addons)。 - 发布前先本地
--dry-run:
skills_store_cli.py publish <技能目录> --dry-run