☰
Omarchy 桌面 Toggles、空闲锁定与 ASCII 屏保完全指南
2026/10/24 15:03:48 网站建设 项目流程

Omarchy 桌面 Toggles、空闲锁定与 ASCII 屏保完全指南

【免费下载链接】omarchyBeautiful, Modern & Opinionated Linux项目地址: https://gitcode.com/GitHub_Trending/om/omarchy

导读

Omarchy 将"夜灯、免打扰、保持清醒、屏保开关"这类日常临时状态抽象为统一的Toggle(切换)机制:每个开关同时具备热键、菜单入口和 CLI 命令三种触发方式,最终命中同一个状态开关,你不需要关心状态存储在哪里。本文以 manual/13-toggles-idle-screensaver.md 为主线,结合仓库中的按键绑定、菜单定义、Hyprland 配置与 shell 配置源码,完整讲解 Toggle 菜单、omarchy toggle命令、状态文件与指示器、夜灯、免打扰、空闲计时(idle)、ASCII 屏保以及锁屏机制——读完你可以独立配置这些模式,并理解其底层实现位置。

提示:本指南涉及的用户配置文件(~/.config/...与~/.local/state/...)在仓库中均有对应的"出厂默认/示例"版本(见下文"源码中的实现证据"一节),便于对照学习。


一、Toggle:Omarchy 的统一"模式开关"模型

日常使用中,很多调整并非永久"设置",而是一种临时模式——加班时的夜灯、演示时的免打扰、看视频时的"保持清醒"。Omarchy 将这些统称为toggles,它们的行为方式完全一致:一个热键、一个菜单入口、一条命令,全部命中同一个开关。

这正是与普通设置项的本质区别:你不需要记住状态存于何处,只用同一个动作翻转它,再翻转回来。

1.1 触发菜单入口

  • Super + Ctrl + O:直接打开Trigger > Toggle切换菜单;
  • 也可以从 Omarchy 主菜单(Super + Space)逐级导航到该列表。

在仓库的按键绑定 default/hypr/bindings/utilities.lua 中可以看到这两条映射:

o.bind("SUPER + CTRL + O", "Toggle menu", "omarchy-menu toggle toggle") o.bind("SUPER + CTRL + H", "Hardware menu", "omarchy-menu toggle hardware")

菜单中的每一项实际对应 default/omarchy/omarchy-menu.jsonc 中trigger.toggle.*与trigger.hardware.*这些键,每个条目都带有图标、标签与可执行动作。

1.2 命令行入口

终端里同样的开关写作omarchy toggle <thing>:

  • 只运行omarchy toggle(不带参数)即可看到整个 toggle 分组列表;
  • 每个子命令都对应一个独立脚本/动作,例如omarchy-toggle-nightlight、omarchy-toggle-idle等,在菜单 jsonc 的action字段中被引用。

1.3 完整开关总览

下面是本指南涉及的完整开关列表(与原文档一致,可直接当作速查表):

Toggle热键命令
Night light(夜灯)Super + Ctrl + Nomarchy toggle nightlight
Silence notifications(静默通知)Super + Ctrl + ,omarchy toggle notification silencing
Stay awake(保持清醒,禁用空闲锁定)Super + Ctrl + Iomarchy toggle idle
Crash capture(崩溃捕获)—omarchy toggle crash-capture
Screensaver(空闲屏保)—omarchy toggle screensaver
Menu bar(顶栏)Super + Shift + Spaceomarchy toggle bar
Touchpad(触摸板)XF86TouchpadToggleomarchy toggle touchpad
Touchscreen(触摸屏)—omarchy toggle touchscreen
Suspend(挂起入口)—omarchy toggle suspend
Hybrid GPU(混合显卡)—omarchy toggle hybrid gpu

其中触摸板、触摸屏和混合显卡开关被放在Trigger > Hardware(Super + Ctrl + H)下,而不是 Toggle 分组中——因为这些开关只在硬件真实存在时出现。菜单 jsonc 中可见对应的条件守卫:

"trigger.hardware.touchpad": { "icon": "…", "label": "Touchpad", "when": "omarchy-hw-touchpad", "action": "omarchy-toggle-touchpad" }, "trigger.hardware.touchscreen": { "icon": "…", "label": "Touchscreen", "when": "omarchy-hw-touchscreen", "action": "omarchy-toggle-touchscreen" }, "trigger.hardware.hybrid-gpu": { "icon": "…", "label": "Hybrid GPU", "when": "omarchy-hw-hybrid-gpu", "action": "… omarchy-toggle-hybrid-gpu" }

when守卫(如omarchy-hw-touchpad)正是用来探测硬件是否存在;没有对应硬件的机器上,这些条目根本不会出现在菜单中。

值得注意的实现细节:触摸板、触摸屏开关在 Hyprland reload(重载配置)之后依然保持生效——被禁用的设备名会被保存到一个小的状态文件中,Hyprland 启动时读取该文件并再次禁用该设备。

1.4 挂在 Toggle 菜单下的"非 toggle"项

Toggle 菜单里还携带了几项并非omarchy toggle命令、但行为一致的开关:顶栏电池百分比、工作区布局(Super + L)、窗口间距(Super + Shift + Backspace)、1:1 方形窗口比例(Super + Ctrl + Backspace)。在按键绑定文件中可以看到后两者的实际实现入口:

o.bind("SUPER + SHIFT + BACKSPACE", "Toggle window gaps", "omarchy-hyprland-window-gaps-toggle") o.bind("SUPER + CTRL + BACKSPACE", "Toggle single-window square aspect", "omarchy-hyprland-window-single-square-aspect-toggle")

它们被归入同一菜单是为了"心智模型"统一:需要临时翻转的状态都聚在同一个地方找。


二、状态存储与脚本查询:flag 文件与omarchy-toggle-enabled

绝大多数 toggle 的本质只是一个flag 文件,存放在:

~/.local/state/omarchy/toggles/

flag 以"关闭态"命名——文件存在即表示该功能被关闭,例如screensaver-off、suspend-off、bar-off。这一点与直觉相反,使用时务必注意:看到suspend-off存在,表示挂起入口被禁用。

如果想在脚本里根据开关状态分支处理,不需要自己去找文件、解析内容,直接使用omarchy-toggle-enabled,它以退出码(exit code)的方式返回结果:

omarchy-toggle-enabled screensaver-off && echo "screensaver is off"

当screensaver-off状态开启(即屏保被关闭)时,命令退出码为 0,&&之后的 echo 才会执行——脚本写法非常干净。

从源码结构看,仓库中 default/hypr/toggles/ 目录即"永久性配置开关 flag"的存放地,flags.lua 的文件头注释明确写道:"This directory is intended for permanent config toggle flags. Do not remove this file; the directory always needs at least one file."(该目录专用于永久配置切换标记;请勿删除本文件,目录始终需要至少一个文件。)而同目录下的window-no-gaps.lua与single-window-aspect-ratio.lua对应上文提到的窗口间距/方形比例开关。

这些 toggle 模块会在 Hyprland 配置加载的最后阶段被引入——见 default/hypr/hyprland.lua:

-- 个人覆盖配置之后加载 require("hypr.monitors") require("hypr.input") require("hypr.bindings") require("hypr.looknfeel") require("hypr.autostart") -- Toggle config flags dynamically. require("default.hypr.toggles")

即:先加载 Omarchy 默认值,再加载个人覆盖,最后才应用 toggle 动态标记——保证 toggle 的实时状态不会被后续配置覆盖。


三、顶栏指示器(Indicators):模式一望即知

当某个模式处于开启状态时,顶栏中间、时钟旁边会出现一个小图标(glyph)。这就是indicators(指示器)组件,它负责承载:听写(dictation)、屏幕录制、待处理提醒、夜灯、免打扰、保持清醒(stay awake)。

指示器的交互设计:

  • 未激活的指示器默认隐藏;
  • 鼠标悬停在该区域时,未激活的指示器会以变暗(dimmed)状态淡入,你可以直接点击某个图标把它打开,而无需记住对应的热键;
  • 点击一个已激活的指示器,则把它关掉。

如果你希望所有指示器始终可见,需要修改 shell 配置文件(位于~/.config/omarchy/shell.json),把omarchy.indicators条目上的alwaysShow设为true:

"alwaysShow": true // 设置到 omarchy.indicators 条目上

顶栏组件(包括位置、顺序与 anchors)的完整配置方式参见 manual/05-the-top-bar.md。仓库中的 shell 配置示例 config/omarchy/shell.json 展示了默认布局:指示器(omarchy.indicators)正好位于时钟(omarchy.clock,centerAnchor)之前,位于中间区域:

"center": [ { "id": "omarchy.indicators" }, { "id": "omarchy.clock", "format": "dddd HH:mm", … } ]

四、夜灯(Night light):4000K/6500K 切换

  • 热键Super + Ctrl + N:将屏幕色温调暖至4000K;
  • 再次按下同一热键:恢复为6500K。

夜灯由hyprsunset驱动,toggle 在需要时会替你把它启动起来(如果它尚未运行的话)。

4.1 默认:身份配置文件

默认情况下,hyprsunset 对你的屏幕不做任何改变。这是有意的设计——~/.config/hypr/hyprsunset.conf出厂自带一个identity profile(身份配置),保证屏幕在你主动请求暖色之前始终保持原样:

# Makes hyprsunset do nothing to the screen by default # Without this, the default applies some tint to the monitor profile { time = 07:00 identity = true }

仓库中的 config/hypr/hyprsunset.conf 与此完全对应,文件注释说明了设计动机:如果没有这个 identity profile,hyprsunset 默认会给显示器施加某种色调。

4.2 想要按时间自动切换?

如果你希望夜灯根据时钟自动切换,把身份配置替换为时间(time)配置即可:

profile { time = 20:00 temperature = 4000 }

并在~/.config/hypr/autostart.lua中加入一行,让 hyprsunset 随登录启动:

o.launch_on_start("hyprsunset")

hyprsunset.conf 的注释同样给出了这一用法:

# To enable auto switch to nightlight, add to your .config/hypr/autostart.lua: # o.launch_on_start("hyprsunset") # and use the following: # profile { # time = 20:00 # temperature = 4000 # }

4.3 关于温度取值

toggle 使用的 4000K/6500K 这对数值是固定的,所以如果你想用其他色温,改配置文件的 place 就在hyprsunset.conf——而不是某个 toggle 参数。热键只需负责"暖 ↔ 正常"的来回切换。


五、免打扰(Do not disturb):静默但不丢消息

  • 热键Super + Ctrl + ,:静默通知(按键绑定 default/hypr/bindings/utilities.lua 中的notification-silencingtoggle)。

开启后,通知 toast 不再弹出,顶栏中会出现一个带斜杠的铃铛(crossed-out bell)图标,提醒你为什么桌面安静了下来。

没有任何消息会丢失:被静默的通知会被直接写入通知历史(notification history)——这正是你回来后回顾"刚才错过了什么"的完整记录。用Super + Shift + Alt + ,打开通知历史。通知机制的其余部分参见 manual/10-notices.md。

两种消息依然会穿透免打扰:

  1. Omarchy 自身的确认 toast(如 "Theme changed"、"Screenshot saved")——针对你刚做的操作;
  2. 从命令行发送的critical 级告警。

值得强调的是:把一切消息都标成 critical 以强行打扰你的聊天类 App,并不属于穿透之列——系统只信任真正的 critical 来源。


六、空闲管理(Idle):计时、取消与"保持清醒"

Omarchyshell 完全掌控空闲(idle)行为,计时参数是~/.config/omarchy/shell.json中顶层的idle块:

{ "version": 1, "idle": { "screensaver": 150, "lock": 300 } }

仓库中的示例配置 config/omarchy/shell.json 与此完全一致。含义需要精确理解:

  • 两个数字都是从你开始空闲的那一刻算起的秒数,而不是"从上一个事件算起"——两者相互独立计时;
  • 默认值下:空闲150 秒(两分半)后屏保出现;空闲300 秒(5 分钟)后锁屏接管——无论屏保是否运行过,锁屏都会在 5 分钟到达时出现;
  • 保存文件后,shell 会立刻采用新的计时,无需重启或重载会话。

6.1 提前解除屏保 = 取消待定锁屏

如果你在锁屏截止时间之前把屏保关掉(比如动了鼠标键盘),这次交互会被记为"活动",待定的锁屏即被取消。也就是说:你不会因为只是瞥一眼屏幕就被锁在外面。

6.2 Stay awake(保持清醒)

想要彻底停止"空闲即锁屏",按Super + Ctrl + I,或运行omarchy toggle idle:

  • 开启后,顶栏出现咖啡杯图标(这就是前文"指示器"所承载的 stay awake 状态);
  • 这是长报告演示、或盯着一个长时间构建时的首选开关;
  • 再次按下同一热键即恢复正常空闲锁定行为。

脚本场景下可用如下命令获取当前状态:

omarchy toggle idle status

它会以 JSON 格式打印当前状态。

6.3 边界:只管锁定与屏保,不管电源

再次强调:idle 机制只关乎锁屏与屏保,与电源管理无关。挂起(suspend)与休眠(hibernation)有自己独立的设置,参见 manual/36-system-sleep.md。


七、屏保(Screensaver):ASCII 艺术 + 随机文字特效

Omarchy 的屏保是运行在随机文字特效(random text effects)中的 ASCII 艺术,每个显示器各运行一个实例。任意按键或鼠标移动都会退出屏保。

7.1 手动启动

需要立即呼出屏保时:

  • 菜单路径System > Screensaver,热键Super + Esc;
  • 该入口强制拉起屏保——即使你已经关掉了"空闲自动屏保",手动启动依然有效;
  • 注意:系统默认没有为屏保绑定独立热键(Super + Esc实际打开的是 System 菜单)。

菜单定义在 default/omarchy/omarchy-menu.jsonc:

"system.screensaver": { "icon": "…", "label": "Screensaver", "action": "omarchy-launch-screensaver force" }

注意 action 中的force参数——这正是"即使空闲屏保已关闭也能强制运行"的实现关键。

7.2 关闭"空闲屏保"

omarchy toggle screensaver用于关闭空闲自动屏保——如果你希望"从工作状态直接跳到锁屏"(屏保模式完全不需要)。

该命令需要一个它知道如何配置的终端,支持列表为:Alacritty、Foot、Ghostty、Kitty。如果你的默认终端不在其中,命令会明确告诉你无法继续。

7.3 屏保窗口规则

从源码可见屏保进程的窗口特征。在 default/hypr/apps/system.lua 中,屏保窗口被配置为全屏、浮动并带有滑入动画:

-- Fullscreen screensaver. o.window("org.omarchy.screensaver", { fullscreen = true }) o.window("org.omarchy.screensaver", { float = true }) o.window("org.omarchy.screensaver", { animation = "slide" })

由此可以推断,Omarchy 的屏保以 WM_CLASS 为org.omarchy.screensaver的窗口形态呈现,"每个显示器一个实例"以及"按任意键/移动鼠标退出"均由 shell 层负责。

7.4 更换屏保 Logo

屏保绘制的 logo归你所有、可自由更换:

  • 路径:Style > Screensaver;
  • 上传一张png 或 svg,Omarchy 会把它转换为 ASCII 再绘制。

菜单 jsonc 中对应条目也印证了这一点:

"style.screensaver.text": { "action": "omarchy-branding-screensaver text" }, "style.screensaver.image": { "action": "omarchy-branding-screensaver image" }, "style.screensaver.default":{ "action": "omarchy-branding-screensaver reset" }

(支持编辑文本、从图片设置、恢复默认三种操作。)完整的品牌定制方法参见 manual/41-branding.md。


八、锁屏(Lock screen)

  • 热键Super + Ctrl + L立即锁定机器。

该操作由 Omarchy shell 的锁屏负责,并顺带完成四件事:

  1. 运行 shell 锁屏界面;
  2. 熄灭/黑屏显示(blanks the display);
  3. 把键盘布局重置为第一个布局——确保你输密码时不是在使用错误的字母表(例如误留在其他语种布局上);
  4. 若 1Password 正在运行,则在离开时一并锁定它。

认证方面:锁屏接受密码;一旦你配置好指纹,它也接受指纹解锁。指纹及其他认证方式的配置参见 manual/37-hardware-authentication.md。


九、源码中的实现证据速览

为了便于你继续深挖,将上述机制在仓库中的落点汇总如下:

机制仓库位置说明
热键绑定default/hypr/bindings/utilities.luaSUPER + CTRL + O/H/N/I/comma、bar/gaps/方形比例等绑定
菜单定义default/omarchy/omarchy-menu.jsonctrigger.toggle.*、trigger.hardware.*、system.screensaver、style.screensaver.*
运行时 toggle 模块default/hypr/toggles/flags.lua、window-no-gaps.lua、single-window-aspect-ratio.lua
Hyprland 加载顺序default/hypr/hyprland.lua默认配置 → 个人覆盖 →require("default.hypr.toggles")
屏保窗口规则default/hypr/apps/system.luaorg.omarchy.screensaver全屏/浮动/slide
空闲计时与顶栏布局示例config/omarchy/shell.jsonidle.screensaver/lock、center中的omarchy.indicators
hyprsunset 默认配置config/hypr/hyprsunset.confidentity profile 与 time profile 示例

结语:一套心智模型贯穿日常模式

Omarchy 把"夜灯、免打扰、保持清醒、屏保开关"这类半衰期以小时计的状态收敛为同一个 Toggle 模型——菜单入口、热键、CLI 命令三路同源,flag 文件一锤定音;配合顶栏指示器与脚本友好的omarchy-toggle-enabled/omarchy toggle <x> status,既适合人肉操作,也适合写进自动化脚本。而空闲(idle)机制则被 shell 集中管理,以shell.json的idle块给出"屏保、锁屏"两条独立的时间线,配合"提前解除即取消锁屏"的行为,避免误锁;屏保与锁屏职责分明,前者负责美学与屏保 logo 定制,后者负责安全认证(密码与指纹)。理解这套模型后,无论是日常快速切换,还是写一个"演示前自动进入 stay awake"的小脚本,都能信手拈来。

【免费下载链接】omarchyBeautiful, Modern & Opinionated Linux项目地址: https://gitcode.com/GitHub_Trending/om/omarchy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询