跳转到内容
omarchyFIELD GUIDE
实用知识 / FIELD GUIDE

锁屏、屏保与保持唤醒:控制正确的空闲行为

为演示和长任务选择临时设置,区分空闲锁屏、睡眠与合盖,最后恢复并验证正常锁屏。

根据公开资料整理,未在实机验证。操作前请核对你的版本与硬件环境。

演示时希望画面持续可用;长时间构建时希望计算继续,但离开座位仍应锁屏。这是不同目标。“保持唤醒”图标不能证明机器永不睡眠,黑屏也不能证明会话锁好了。

本文依据固定 4.0.0.alpha 源码。本快照由 Omarchy Shell 管理空闲屏保与锁屏计时,旧 hypridle.conf 教程不自动适用。先确认安装版本与命令帮助。睡眠、合盖还取决于硬件和系统策略。

1. 分清画面、访问权限和电源

章节:1. 分清画面、访问权限和电源
没有输入 → Shell 空闲检测 → 屏保和/或锁屏期限
手动锁屏 → Shell 会话锁 → 需要认证
睡眠请求 → logind PrepareForSleep → Omarchy 睡眠锁屏服务
合盖事件 → logind 策略 + Omarchy 合盖/显示状态协调
状态/动作 表示什么 不能保证什么
屏保 装饰窗口覆盖桌面 退出时需要认证
会话锁 锁屏限制桌面访问 机器已睡眠
显示关闭 / DPMS 输出黑屏或省电 桌面安全锁定
挂起 睡眠期间计算暂停 特定扩展坞/设备能正常唤醒
保持唤醒 抑制 Shell 空闲锁屏/屏保 阻止全部睡眠或合盖动作
菜单隐藏 Suspend 移除该菜单选项 禁用内核睡眠或 logind 策略

本快照 omarchy-toggle-suspend 只改变菜单可用性,不是长任务的睡眠抑制器。挂起菜单开关

2. 分别查保存意图与运行服务

章节:2. 分别查保存意图与运行服务

临时修改前:

终端窗口
omarchy-toggle-idle status
omarchy-shell idle status
systemctl --user status omarchy-sleep-lock.service --no-pager

第一条读已保存的保持唤醒标志:enabled: true 表示选择了保持唤醒,不是“启用空闲锁屏”。第二条报告正在运行的空闲服务,enabled 指空闲处理,stayAwake 指相反模式。名称对应的对象不同。

已保存开关:enabled=true
运行空闲服务:stayAwake=true,enabled=false

这个示意可以完全一致,不是矛盾。保存与运行状态不同,就查 Shell 是否加载了标志,不要持续按切换键把意图弄乱。标志会持久保存,原本用于演示的设置之后可能仍在。开关源码 · 空闲服务

3. 案例:临时保持演示画面可用

章节:3. 案例:临时保持演示画面可用

记录原状态,盖子保持打开,明确设置:

终端窗口
omarchy-toggle-idle stay-awake

返回的 disabled 指空闲处理已禁用。看咖啡杯图标和运行状态,不要把这个词解释为请求失败。默认 Super + Ctrl + I 切换同一模式;写操作流程时,明确命令比盲切更易判断。

人在场测试:不输入,等待超过配置的空闲期限,确认演示仍可用。应用自身也可能提供空闲抑制器,所以只看视频不黑屏不能证明保存开关正确,还要查状态。

结束后恢复记录值。原本允许正常空闲时:

终端窗口
omarchy-toggle-idle allow-idle

移动鼠标或输入一次,从新的活动周期开始验证。演示结束不代表可以留下未锁的桌面。手动锁屏是另一个操作:

终端窗口
omarchy-system-lock

测试前确认自己能正常认证。本快照锁屏还会把键盘切回第一个布局,并尝试锁定运行中的 1Password。因此与锁前不同的布局,可能让密码输入看起来异常。锁屏流程

4. 案例:任务继续,离开座位仍锁屏

章节:4. 案例:任务继续,离开座位仍锁屏

空闲锁屏通常不停止本地构建,挂起会。先判断问题是画面变化、实际睡眠,还是关闭终端结束了关联任务。

需要为前台任务临时阻止睡眠时,systemd-inhibit 可以在该命令存活期间持有抑制锁。先用无害的一分钟流程测试生命周期:

终端窗口
systemd-inhibit --what=sleep --mode=block \
--who='Task demo' --why='Keep this foreground task running' \
sleep 60

另一个终端运行 systemd-inhibit --list,找到 demo 的 sleep/block 项,一分钟后应消失。它作用于正在运行的命令,不是永久全局修改。适合时再把 sleep 60 换为准确、已经验证的前台任务及参数。包装器若立即把任务放后台并退出,抑制锁也会结束。systemd 抑制器说明

只抑制 sleep,并不请求关闭 Omarchy 空闲锁屏。希望离开座位时锁屏,就保留正常空闲。实际策略和权限需要本机验证:特权动作可覆盖抑制器,物理合盖策略也不普遍受同一个 sleep 锁约束。不能声称这条命令保证无人看管的合盖机器持续运行。

不要因为有选项就额外加入 handle-lid-switch 或关机抑制。有人看管的测试保持笔记本打开、正常通风。关闭终端或注销后任务是否继续,需要合适的任务/会话管理器;保持唤醒不会保存 Shell 进程。生命周期差异见自启动管理。

5. 调整日常计时,不替换整个 Shell 配置

章节:5. 调整日常计时,不替换整个 Shell 配置

个人 ~/.config/omarchy/shell.json 还有其他设置。用新名称备份已有文件,通过配置菜单编辑已有顶层 idle 对象。下面是要合并的片段,不是完整替换文件:

"idle": {
"screensaver": 120,
"lock": 300
}

只保留一个 idle,注意合法 JSON 与周围逗号。两项都是从最后活动起算的秒数:

最后输入 屏保 锁屏
0 秒 ------------ 120 秒 -------------------- 300 秒
不是从这里再等 300 秒

本源码 0 禁用对应计时动作,不是立即触发。跳过装饰但保留五分钟锁屏,可用 screensaver: 0、lock: 300,或屏保可用性开关。禁用屏保本身不会禁用锁屏;手动启动屏保仍能有意强制运行。计时模型

保存后,有 jq 时查语法:

终端窗口
jq empty ~/.config/omarchy/shell.json
omarchy-shell idle status

语法成功不验证每个设置,继续确认运行的 screensaver 与 lock。Shell 读取新计时,但已开始的空闲周期保留它自己的期限;先输入,再测试新周期,不假设倒计时中修改会重置。锁前退出屏保算作活动,会取消该待执行周期。期限实现

首次实验不要设置极短锁屏时间。正常认证、原文件备份和足够观察时间,比每几秒意外锁一次更有用。

6. 合盖属于另一条策略路径

章节:6. 合盖属于另一条策略路径

本快照盖子关闭且没有外屏时,合盖辅助函数请求锁屏,再协调显示状态。有外屏时,合盖桌面模式可以有意不触发这次锁屏。系统合盖策略仍由 logind 管理;对某些 logind 不识别为扩展坞的外部接口,Omarchy 还有额外抑制。合盖辅助函数 · 扩展坞合盖抑制

保存工作后,分别测试:

测试 观察什么
开盖、无外屏、空闲 计时屏保/锁屏
合盖、无外屏 锁屏和实际挂起/恢复
合盖、有可用外屏 外屏桌面与合盖模式
合盖桌面之后拔外屏 可访问输出、随后合盖/电源动作

保持唤醒标志不会禁用这些合盖函数。不要为一个 Shell 计时偏好直接改全局 logind 配置。硬件睡眠失败时用睡眠排查并记录连接状态;休眠是另一机制,不是演示所需设置。

7. 查睡眠前,确认真的安全锁定

章节:7. 查睡眠前,确认真的安全锁定

Omarchy 睡眠锁屏服务通过延迟抑制器监听 PrepareForSleep,请求 Shell 锁屏;等待受 logind 时间预算限制,锁失败时机器仍可能睡眠。“它挂起了”不足以证明安全锁好。睡眠监听 · 有限锁屏检查

只读证据:

终端窗口
omarchy-shell lock status
omarchy-debug-idle 100
journalctl --user -u omarchy-sleep-lock.service -n 50 --no-pager
journalctl -t omarchy-shell -n 50 --no-pager

锁屏状态区分 requested 和 secure:接受请求不等于完成会话锁。不要为了装饰屏保禁用该服务,也不要把锁着的时候重启 Shell 当普通计时调整;从已认证会话诊断。

现象 缩小调查范围
到时间不锁屏 保持唤醒、运行计时、应用空闲抑制
黑屏回来不认证 显示电源与实际锁屏的区别
长任务期间仍睡眠 抑制锁生命周期、权限、合盖路径
编辑后锁屏时间奇怪 新周期还是旧期限
唤醒直接进入未锁桌面 睡眠锁屏服务与 secure 证据
锁后密码像是不对 第一个键盘布局、认证配置

8. 恢复后走一次正常周期

章节:8. 恢复后走一次正常周期

只恢复改过的计时值,恢复整份备份前比较后续改动。屏保开关和保持唤醒回到记录状态。让演示抑制器自行结束;放弃测试时只停止自己的 demo,确认对应项消失,不移除其他应用的抑制器。

查运行值,产生一次输入,人留在现场等待正常空闲周期,并成功认证。单独测试手动锁屏。修改长任务流程后,确认桌面锁定时任务仍运行,且前台任务结束后抑制锁消失。

记录准确目标:“演示时避免空闲打断”,或“这次任务阻止睡眠、保留离座锁屏”。区分目标,能避免临时修复积累成永久安全/电源改动。继续看多屏规划和Shell 配置。本文核对了源码;实际锁屏、睡眠和恢复仍需真实系统测试。