Repository navigation
v1.0.3
修掉「没有 .inf 的光标包导入后缺 3 个角色」,重画了应用图标,
并补上两个能省时间的生成脚本(演示视频、图标)。
修复:没有 .inf 的包,17 个角色里会漏掉 3 个
Windows 光标包分两类:用安装器打包的带 install.inf,手工拼的没有。
有 .inf 时它的 [Strings] 段就是微软官方的角色映射,属于权威数据;
没有就只能按文件名猜。
实测:拿一个真实包(ZUTOMAYO)把 .inf 抽掉再导入 ——
修复前 14 / 17
漏掉 Diagonal1.ani、Diagonal2.ani、Horizontal.ani
修复后 17 / 17
根因很直接:关键词表里写的是 diag1 和 horz,但
diag1不是diagonal1的子串horz不是horizontal的子串
而原来的实现是纯子串匹配,所以这三个永远猜不出来。
反过来还有误判风险:Small.ani 会因为含 all 被猜成"移动"。
现在改成三层匹配(从严到宽)
① 与 .inf 键名归一化后完全相同 diagonal1 == diagonal1
② 与任一关键词归一化后完全相同 working == working
③ 关键词子串匹配,最长优先 precision ⊃ precise
三个字母以内的弱关键词只许整词命中
归一化是这次的关键:Diagonal-1 / diagonal_1 / Diagonal 1 / Diagonal1
现在都归一成 diagonal1;SizeNWSE 会按 camelCase 切成 size + nwse。
弱关键词(ns / we / up / all / alt / pen / no)必须整词命中,
否则 Small.ani 含 all、Normal.ani 含 no,会被硬拽到错误的角色上。
关键词表同时扩到覆盖三套命名习惯:
| 命名习惯 | 例子 |
|---|---|
| 微软官方方案 | Normal Working Precision Handwriting Horizontal Diagonal1 Pin |
| X11 习惯 | SizeNS SizeWE SizeNWSE SizeAll xterm crosshair left_ptr |
| 中文 | 正常选择 文本选择 水平调整 手写 移动 |
猜不出来时
不会乱填 —— 认不出的角色保持空缺,由系统回落到默认光标,
同时在导入结果里明确提示:
这个包没有 .inf:17 个角色里 N 个没能从文件名认出来,会继承系统默认外观。
想要精确映射,把 .inf 放进包里重新导入一次(很多包的 .inf 是通用的,也可以手工写一个)
想精确控制的话,往包里放一个最小的 install.inf 就行(左边键名固定不能改):
[Version]
signature="$CHICAGO$"
[Strings]
SCHEME_NAME = "My Cursor"
pointer = "Normal.ani"
help = "Help.ani"
work = "Working.ani"
busy = "Busy.ani"
cross = "Precision.ani"
text = "Text.ani"
hand = "Handwriting.ani"
unavailable = "Unavailable.ani"
vert = "Vertical.ani"
horz = "Horizontal.ani"
dgn1 = "Diagonal1.ani"
dgn2 = "Diagonal2.ani"
move = "Move.ani"
alternate = "Alternate.ani"
link = "Link.ani"
loc = "Pin.cur"
person = "Person.cur"顺带一个很多人不知道的点:微软光标方案的 17 个文件名是固定的,
所以两个都用标准名的包,.inf是可以直接互借的,连文件名都不用改。
修复:图标尺寸档错配
install.sh 里原来有这么一行:
cp -f "$HERE/icons/cursor-manager.png" "$HICOLOR/256x256/apps/cursor-manager.png"cursor-manager.png 是 512px 的,塞进 256x256/ 目录会让图标加载器拿到
尺寸不符的位图,也覆盖掉了上面刚写的回退逻辑。现在每档只进自己的目录。
另外 install.sh 和 PKGBUILD 都只装 5 档(32/48/64/128/256),
缺 512(现代桌面会找它)。两处都补上了。
install.sh 还加了:清掉不属于当前档位的旧文件 + 刷新图标缓存 ——
不然换了图标可能还显示老的。
新图标
旧图标是一个深色底上的光标箭头,比较平。新的是圆角方块 + 蓝紫渐变底,
白色箭头占画布 62%,底部三个色点当主题色板。
尺寸档 32/48/64/128/256/512 全部由脚本生成,改设计跑一遍就行:
make icon # 重新生成 6 个尺寸档
make icon-preview # 只出预览图(含 32/48/64 放大 4 倍的像素对照)新增:两个生成脚本
| 脚本 | 作用 |
|---|---|
tools/make-demo.py |
make demo 自动生成演示视频(真跑命令、真解码光标,不需要录屏和剪辑软件) |
tools/make-icon.py |
make icon 重新生成应用图标(6 个尺寸档) |
两个脚本都进了源码包(MANIFEST.in 里 recursive-include tools *.py),
克隆下来就能跑。生成的 demo/*.mp4 和 icons/_preview.png 是构建产物,不进仓库。
另外新增了 docs/VIDEO-SCRIPT.md —— 想自己录介绍视频的话有分镜表和完整旁白稿。
从 v1.0.2 升级
sudo pacman -U cursor-manager-1.0.3-1-any.pkg.tar.zst已经导入过不带 .inf 的光标包的,建议重新导入一次才能拿到修好的角色映射:
cursor-manager --import <原来的包> --name <原来的名字> --overwrite下载哪个
| 文件 | 用途 |
|---|---|
cursor-manager-1.0.3-1-any.pkg.tar.zst |
Arch Linux:sudo pacman -U <文件> |
cursor-manager-1.0.3.tar.gz |
通用源码包,解包即用,也能被 pip install |
cursor_manager-1.0.3-py3-none-any.whl |
Python wheel,配合 pipx install |
SHA256SUMS |
上面三个文件的校验和 |
安装
Arch Linux
sudo pacman -U cursor-manager-1.0.3-1-any.pkg.tar.zst其他发行版(源码包,解包即用)
tar -xzf cursor-manager-1.0.3.tar.gz
cd cursor-manager-1.0.3
./cursor-manager # 直接跑
./install.sh # 或装到 ~/.local(含桌面入口和图标)pipx
pipx install cursor_manager-1.0.3-py3-none-any.whlPyGObject 无法用 pip 可靠安装,需要走发行版包管理器
(它只影响图形界面,命令行功能都不需要它)。
校验下载
sha256sum -c SHA256SUMS自检
make test # 导入器 55 + 删除 24 + 检查更新 25 + GUI 42 项四套自检都不需要人看图,退出码非 0 即失败。
这次新增的 test_guess_roles() 专门钉住角色猜测:36 个正向用例
(标准名 / X11 名 / 分隔符变体 / 中文)、7 个反向用例(无关文件名不许误判)、
一个无 .inf 的 17 角色端到端包(并断言对角线、水平/垂直没有搞反)。
已知限制
- Arch 包是按当前 Python 版本编译的(3.14)。Arch 换 Python 大版本后需等重新构建;
源码包不受影响 apply覆盖 niri / DMS / GTK / XWayland / gsettings;KDE 的kcminputrc未处理- 导入功能对 RLE 压缩的老式光标仍依赖 Pillow
- 角色映射还不能在图形界面里手动指定 —— 猜不出来只能靠补
.inf或改文件名