跳转至

阅读指南

这套拆解既可以从头读,也可以当作故障地图。最省时间的办法,是先确定你正在追哪一种状态变化。

先用三个问题定位

  1. 谁在执行? root、普通用户、图形会话中的用户,还是 Quickshell 进程?
  2. 状态写到哪里? /etc、~/.config、~/.local/state,还是 $XDG_RUNTIME_DIR?
  3. 它是声明还是副作用? JSON/QML/Lua 描述“应该是什么”,Bash 命令真正修改系统。

这三个问题能解释 Omarchy 中大部分看似重复的入口。例如系统安装完成,不代表用户级 systemd、DConf、音频或通知已经可用;因此 omarchy-apply-system、omarchy-provision-user 与 omarchy-first-run 必须分开。

按目标选择路径

你的目标 建议章节 最终应该能回答
理解全局架构 01 → 02 → 03 → 18 一次安装如何变成可交互桌面
增加一条命令 05 → CLI 命令全集 元数据、快速路由和帮助如何协作
修改 Hyprland 默认值 04 → 06 默认模块与用户模块谁覆盖谁
写 Shell 插件 07 → 08 何时加载、如何启用、哪些路径不可信
扩展菜单 09 → 06 dotted ID 如何合并,guard 如何求值
制作主题 10 → 15 主题如何编译、原子切换、过滤代码
排查更新失败 13 → 15 → 18 锁、快照、事务屏障、迁移标记在哪里
适配新硬件 14 → 17 探测器、幂等脚本与验收边界
理解旧版升级 16 → 02 → 13 如何从 git 布局切到 package 布局

阅读每章时看什么

每章中的图有三种语义:

  • 实线箭头表示直接调用或数据读取;
  • 状态节点表示进程之间共享的持久事实;
  • 边界节点表示权限、信任或生命周期发生变化。

源码链接固定到同一个 commit。链接中的行号是导航提示;如果 GitHub 后续改变渲染,文件内容仍由 commit 保证一致。

不要把目录名当成运行顺序

install/、default/、config/ 与 bin/ 是责任分区,不是生命周期顺序。真正的顺序要从入口脚本的 source、exec、systemd unit、UWSM 环境和 IPC 路由还原。

四个贯穿全文的对象

OMARCHY_PATH

“当前使用哪一份 Omarchy 程序和资源”的统一答案。生产环境通常是 /usr/share/omarchy;开发环境可通过 /etc/omarchy.conf 指向 checkout。

~/.local/state/omarchy/current

生成状态的活动视图。当前主题、动态 Hyprland 模块等都在这里;它不是用户手写配置。

done / migration marker

两种不同的完成事实。done marker 记录一次性生命周期动作,migration marker 记录某个版本迁移是否已成功执行。

Quickshell IPC

CLI 与常驻桌面进程之间的窄桥梁。命令只转发,不负责偷偷启动 Shell;因此“Shell 未运行”会作为真实失败暴露出来。

本文的边界

本文解释源码中可以证明的行为,不替代官方安装手册,也不假设所有硬件都已覆盖。视觉效果、GPU 行为和图形会话时序仍需要在真实或可丢弃虚拟机中验收。具体范围见 版本与范围。

下一章从最重要的心智模型开始:01 · 全景与心智模型。