Arch 桌面工具链配置:Helium 滚动 + Wofi 词典
这篇记录两个在 Arch + Hyprland 环境下实际用起来的小工具配置。
一个是 Helium 浏览器的触控板滚动优化,另一个是基于 wofi 启动器的快速查词流程。
一、Helium 浏览器滚动优化
问题
在 Hyprland + Wayland 下,触控板在终端里的滚动速度是正常的,但到了 Helium 浏览器的网页里,轻轻一滑就滚出很远。
Hyprland 的 scroll_factor = 0.6 确实已经让输入层变慢了,但网页的滚动体验仍然过快。这说明问题不在纯粹的输入层,而是浏览器对高精度触控板 wheel 事件的解释方式。
解决方案
最终采用了“启动参数 + 网页层 wheel 事件减速”的组合方案。
1. 启动包装脚本
新建 ~/bin/helium-wayland:
1exec /home/alice/Applications/Helium.AppImage \
2 --enable-features=UseOzonePlatform,WaylandWindowDecorations \
3 --ozone-platform=wayland \
4 --disable-features=TouchpadOverscrollHistoryNavigation,ElasticOverscroll,TouchpadAndWheelScrollLatching,WindowsScrollingPersonality,PrecisionScrollingPhase \
5 --disable-smooth-scrolling \
6 --disable-zero-copy \
7 --disable-gpu-memory-buffer-video-frames \
8 --load-extension=/home/alice/.local/share/helium-scroll-slow \
9 "$@"
作用:强制 Wayland、禁用一批 Chromium 的 overscroll 相关特性、并加载一个本地扩展来对网页滚动做二次减速。
2. 桌面入口覆盖
修改 ~/.local/share/applications/helium.desktop,让从启动器打开的 Helium 统一走上面的包装脚本。
3. 本地扩展减速
扩展目录:~/.local/share/helium-scroll-slow/
核心在 content.js:
1const SCROLL_FACTOR = 0.18;
扩展会在网页最早阶段注入脚本,捕获 wheel 事件,把原始滚动量换算成像素,按倍率缩小后再用 scrollBy() 手动滚动。
当前配置下,网页实际滚动量约为原始值的 18%。如果想调,改这个数值然后完全退出并重新打开 Helium 即可。
经验参考:
0.08:非常慢0.14:偏慢0.18:当前值,减速明显但不夸张(降低了使用浏览器中vim快捷键的affordance,这个速度适用于在快捷键之外轻微滚动)0.25:温和减速0.30:只做轻度减速
相关文件
- Hyprland 配置:
~/.config/hypr/hyprland.conf - Helium 启动脚本:
~/bin/helium-wayland - 桌面入口:
~/.local/share/applications/helium.desktop - 扩展:
~/.local/share/helium-scroll-slow/
二、Wofi 快速查词流程
目标
在 Hyprland 下搭一套快速查词工具链,要求是:轻量、快速、支持中英、能看到正常的格式化结果。
之前一直用一个自己写的 LLM skill(Oxford-Collins + Early Modern English 专家)来查词。它能结合 Oxford 和 Collins 词典的优点,并且输出很规范:自动标注词频等级(High / Medium / Low / Archaic)、提供英式 IPA 音标、深度例句、还兼容文艺复兴/KJV 古义,查完自动同步到 Anki。但每次查词都要走 LLM,长期下来 token 消耗不可忽视。对于日常高频查词,本地化的方案更经济。
最终形态是两条并行路径:
Alt+D:wofi 输入 → sdcv 查询 → 终端显示清洁后的纯文本Alt+Shift+D:wofi 输入 → 交给 Goldendict-ng 渲染完整的词典条目
分开的原因很简单:sdcv 轻快适合一眼看结果,Goldendict-ng 适合长条目和富格式文本。
安装的组件
wofi— 启动器风格的输入框sdcv— 命令行查词goldendict-ng-git— 带 HTML 渲染的词典浏览器libeb、libzim、xapian-core、qt6-webengine— 依赖
Arch 打包小坑
安装 goldendict-ng-git 时有两个非显性的问题:
-
libeb不在官方仓库,需要先从 AUR 构建它,再构建goldendict-ng-git。 -
上游 tag 格式变为了
v26.5.1-Release.9973c461这种形式,导致 AUR 打包脚本(PKGBUILD)里的版本号提取逻辑失效,生成了无效版本号26.5.1-.r6483.8c76225d5。PKGBUILD 是 AUR 软件包的构建脚本,定义了如何下载源码、编译、打包。当上游 tag 格式变化时,脚本里的
pkgver()函数可能会提取出非法版本号,导致makepkg报错中断。这种情况下需要手动修改 PKGBUILD 中的版本号提取逻辑(或直接将生成的版本号修正为
26.5.1.r6483.8c76225d5),然后重新运行makepkg。
词典数据
词典文件放在 ~/.stardict/dic:
reader.dict ENreader.dict ZHEnglish-中文 (Zhōngwén) FreeDict+WikDict dictionary
来源:
- FreeDict 英汉 StarDict 档案
- reader.dict 英/中 StarDict 档案
- 下载地址:
https://freedict.org/downloads/和https://www.reader-dict.com/download/
验证已安装的词典:
1sdcv -l
sdcv + wofi:解决 HTML 碎片可读性问题
主脚本:~/dotfiles/dotfiles/bin/wofi-dict
行为:
- 用 wofi 弹出输入框
- 英文查询优先走 EN-ZH,中文查询优先走 ZH-ZH
- 捕获 sdcv 输出
- 把带 HTML 碎片的原始结果清理成可读的纯文本
- 复制到剪贴板
- 在 kitty + less 中打开
这解决了 StarDict 原始条目含 HTML 碎片、直接打印到终端无法阅读的问题。
Goldendict-ng 配置
配置文件:~/.config/goldendict/config
核心是加上词典路径:
1<paths>
2 <path recursive="1">/home/alice/.stardict/dic</path>
3</paths>
让 Goldendict-ng 递归扫描整个词典目录。
修改后用 xmllint --noout ~/.config/goldendict/config 验证 XML 是否合法。
Goldendict + wofi 整合
启动脚本:~/dotfiles/dotfiles/bin/wofi-goldendict
行为:wofi 输入 → 调用 goldendict --main-window <word>。
这样保持了快速输入流,渲染则交给 Goldendict-ng。
Hyprland 快捷键
1bind = ALT, D, exec, /home/alice/dotfiles/dotfiles/bin/wofi-dict
2bind = ALT SHIFT, D, exec, /home/alice/dotfiles/dotfiles/bin/wofi-goldendict
修改后如果不生效,运行 hyprctl reload。
为什么保留两套工具
这两条路径不是重复建设,而是针对不同查询模式的专门化设计。
sdcv 的不可替代性在于速度。看到一个生词,按 Alt+D,终端几乎瞬间返回结果,没有 GUI 启动的开销。这是最频繁的查询场景:只需要一眼看到释义,不需要富格式。
Goldendict-ng 的不可替代性在于正确渲染。有些词典条目带复杂的 HTML 格式、音标、例句排版,纯文本下这些信息会丢失或变得难以阅读。当需要深入阅读一个条目时,Alt+Shift+D 调出它是合理的。
如果只用 sdcv,遇到复杂条目体验极差;如果只用 Goldendict-ng,每次查词都等 GUI 弹窗,对"一眼看过"的场景太重。
至于为什么不继续用前面提到的 LLM skill 查词:那个 skill 确实很强,输出格式规范,还有词频标注、KJV 古义、自动 Anki 同步。但没 token。
用 sdcv 的场景:
- 想要最快的一眼结果
- 不需要富格式
- 习惯终端风格阅读
用 Goldendict-ng 的场景:
- 条目带 HTML 格式
- 文章较长
- 想要真正的词典 UI
常用命令
查已安装词典:
1sdcv -l
测试英文查询:
1sdcv --non-interactive --utf8-input --utf8-output hello
测试中文查询:
1sdcv --non-interactive --utf8-input --utf8-output 你好
手动打开 Goldendict:
1goldendict
2goldendict --main-window hello
文件清单
/home/alice/.stardict/dic— 词典数据/home/alice/.config/goldendict/config— Goldendict 配置/home/alice/dotfiles/dotfiles/bin/wofi-dict— sdcv 快捷查词/home/alice/dotfiles/dotfiles/bin/wofi-goldendict— Goldendict 启动器/home/alice/dotfiles/dotfiles/.config/hypr/hyprland.conf— 快捷键绑定
当前状态
已工作:
- StarDict 词典已安装
sdcv查询正常wofi → sdcv快速查词工作Goldendict-ng已安装并配置wofi → Goldendict-ng启动器工作
后续可以做的:
- 调整 Goldendict 中词典的分组和查询优先级
- 添加更多词典源