Hyprland:锁屏、空闲与配套服务
本页目录
完整桌面需要在用户离开时锁定会话,在适当时候关闭显示输出,并在唤醒后恢复。锁屏、熄屏和系统休眠是三个不同动作,应分别验证,不能用“屏幕黑了”判断会话已经安全锁定。
先确定策略由谁管理
| 动作 | 作用 | 不代表什么 |
|---|---|---|
| 锁屏 | 通过认证界面限制交互 | 显示器不一定关闭 |
| DPMS off | 关闭显示输出 | 会话不一定锁定,进程继续运行 |
| 系统休眠 | 进入系统级低功耗状态 | 不保证锁屏已完成 |
当前实例由 Caelestia 处理空闲与锁屏;早期组合使用 hypridle 和 hyprlock。两套策略不应同时运行,否则可能重复锁屏、反复切换 DPMS 或使用不同超时。
当前实例的空闲策略
Caelestia v2.4.0 的 shell.json 中,相关设置位于 general.idle。下面是这一字段的片段,应合并到完整 JSON 中:
这表达两个不同策略:锁屏动作尊重抑制条件,较晚的熄屏动作不尊重它们;有活动返回时恢复显示。超时从各自的空闲判定计算,不能简单解释成“锁屏完成后再等 300 秒”。若锁屏被抑制而 DPMS 没有被抑制,就可能发生熄屏时仍未锁定的情况。
因此,实际选择超时和抑制规则时,要先明确是否允许这种状态。需要“熄屏前必须锁定”时,应设计并验证动作顺序,而不是只调整两个数字。Caelestia 配置
抑制器为什么影响行为
播放器或浏览器可以表达“当前播放不希望进入空闲”的请求。不同程序可能通过 Wayland idle inhibit、D-Bus 或 systemd/logind 机制表达,这些不是一张完全相同的清单。
下面可以查看 logind 抑制锁:
没有条目不能证明不存在 Wayland 层抑制。应结合外壳日志、播放器状态和对应协议观察,避免仅凭“浏览器打开着”就断定是某种 D-Bus 锁不断重置计时器。
如何验证锁屏与熄屏
先保存工作,保留可恢复的输入与登录方式。按顺序测试:
- 手动锁屏,确认确实要求认证后才能进入桌面。
- 解锁后检查键盘布局、输入法和多屏显示是否正常。
- 在无播放、无抑制的情况下测试空闲超时。
- 分别播放音频和视频,观察哪些动作被抑制。
- 测试 DPMS 关闭与输入返回,确认显示恢复且锁定状态符合预期。
- 最后测试系统休眠与唤醒,核对锁屏是否在进入休眠前完成。
调试时可临时缩短超时,但测试结束要还原,并记录每个事件的时间。只测黑屏不测认证与恢复,会遗漏重要状态。
hypridle / hyprlock 的替代方案
不使用外壳内置空闲管理时,可以由 hypridle 监听空闲并调用 hyprlock。其配置需要明确锁屏命令、休眠前动作、显示恢复和抑制策略,具体字段以所用版本的 hypridle 文档为准。
早期配置为了区分锁屏与熄屏的抑制策略,启动两个 hypridle 实例。这个历史方案不应直接移植到当前 Caelestia 环境;现代版本的逐 listener 或外壳策略可能已经足够。选择方案后验证实际进程数量和策略归属。
loginctl lock-session 是锁定请求,需要会话中有组件响应;它与直接启动某个锁屏程序的路径不同。查询对应日志并验证认证界面确实出现,不能只看命令退出码。
其他配套组件的分工
启动器负责查应用与执行动作,剪贴板历史负责保存与选择文本,输入法负责预编辑与候选,壁纸组件负责各屏输出。完整外壳可能已经包含其中部分功能。
| 功能 | 独立组件示例 | 接入时检查 |
|---|---|---|
| 启动与选择 | Fuzzel、Walker | 是否与外壳启动器重复,命令是否可找到 |
| 剪贴板历史 | cliphist、wl-clipboard | 是否已启动监听,文本/图片是否符合预期 |
| 输入法 | Fcitx5 | GTK、Qt、Wayland/XWayland 应用分别测试 |
| 壁纸 | hyprpaper 或外壳内置背景 | 是否存在两个组件同时写同一屏幕 |
| 电源菜单 | wlogout 或外壳会话菜单 | 每个按钮实际调用的动作 |