Omarchy 系统品牌化定制指南:Plymouth 开机界面、屏保与 About 页的 Logo、配色与 ASCII 艺术
【免费下载链接】omarchyBeautiful, Modern & Opinionated Linux项目地址: https://gitcode.com/GitHub_Trending/om/omarchy
Omarchy 内置了一套「品牌化(Branding)」机制,允许你把公司 Logo 或个人图片同时用于开机解锁界面(Boot unlock / Plymouth)、屏保(Screensaver)和About 关于页三处系统入口。本指南以官方手册 manual/41-branding.md 为主线,结合仓库中 bin 目录的真实实现脚本,逐步讲解如何用omarchy plymouth、omarchy transcode ascii、omarchy ascii等命令完成从「图片转 ASCII」到「配色同步」的完整定制流程,并说明其底层的工作原理与适用限制。
读完本文,你将能够:在安装/重置前用预览命令确认开机画面效果;一键把自定义配色与 Logo 同时应用到 Plymouth 开机界面和 SDDM 登录屏并随时还原;通过图形菜单或纯命令行把 PNG/SVG 转成 ASCII 屏保与 About 图案;以及用 Omarchy 自带的 FIGlet 字体把一段文字渲染成 Logo 风格的艺术字。
品牌化资源落在系统的哪三个位置
Omarchy 的「品牌化」不是单一功能,而是一组覆盖系统生命周期不同阶段的视觉入口。官方文档将其归纳为三类,本仓库也对应着三组独立但共享底层工具的命令:
| 场景 | 触发入口 | 文案存储文件 | 底层命令 |
|---|---|---|---|
| 开机解锁(Boot unlock) | 系统启动 / 锁屏前 Plymouth | 由omarchy plymouth set写入主题资源 | bin/omarchy-plymouth-preview、bin/omarchy-plymouth-set、bin/omarchy-plymouth-reset |
| 屏保(Screensaver) | Style > Screensaver菜单 | ~/.config/omarchy/branding/screensaver.txt | bin/omarchy-branding-screensaver |
| About 关于页 | Style > About菜单 | ~/.config/omarchy/branding/about.txt | bin/omarchy-branding-about |
屏保与 About 的文案都是纯文本形式的 ASCII 艺术,存放在用户目录~/.config/omarchy/branding/下;而开机界面的 Logo 是真正的位图,写入 Plymouth/SDDM 系统主题目录。三类内容共享同一个图片转码引擎omarchy transcode ascii,这保证了你在屏保里看到的图案精度与 About 页完全一致。
定制开机解锁界面(Plymouth + SDDM)
开机界面是整个系统最早向用户(或客户)呈现的画面。Omarchy 允许你为它指定背景色、文字色和 Logo PNG,并且把同样的配色与 Logo 自动同步给 SDDM 登录屏——因为从源码看,两者由同一套主题资源驱动(详见后文)。
先预览再应用:omarchy plymouth preview
在真正改动系统主题前,官方强烈建议先用预览命令验证效果。它接收四个参数:背景色(#RRGGBB)、文字色(#RRGGBB)、Logo PNG 路径,以及预览图输出路径:
omarchy plymouth preview '#1d2021' '#ebdbb2' logo.png preview.png从 bin/omarchy-plymouth-preview 的实现可以看到它的工作方式:
- 校验两个颜色值必须是合法的 6 位十六进制
#RRGGBB,Logo 文件必须存在; - 把 default/plymouth 下的主题素材拷贝到临时目录,再把你选中的
logo.png覆盖进去; - 用 ImageMagick(
magick)把bullet.png、entry.png、lock.png统一重染为传入的文字色(+level-colors "#$text_hex","#$text_hex"); - 在一块1920×1080的纯背景色画布上,按与真实主题一致的几何布局(Logo 居中、输入框位于 Logo 下方、锁图标与分页圆点按比例计算)合成出最终画面,并把 Logo 等素材的宽高换算成像素位置;
- 调用
imv -f打开合成结果,让你在应用前直观地看到效果。
因此该命令不需要 sudo,纯粹是离线渲染一张 PNG 给你看。
真正落地:omarchy plymouth set
预览满意后执行:
omarchy plymouth set '#1d2021' '#ebdbb2' logo.png这条命令同时完成三件事:更新 Plymouth 开机主题的颜色与 Logo、把同样的颜色与 Logo 同步到 SDDM 登录屏、并重建 initramfs 使新主题在下次启动时生效。
bin/omarchy-plymouth-set 的实现揭示了不少值得注意的安全与工程细节:
- 必须以普通用户运行,而不是 sudo 运行:脚本开头就检查
EUID,若检测到以 root 执行会直接报错退出。整个提权写入动作由脚本内部通过一个「root 事务」完成。 - Logo 必须是非符号链接的普通文件:脚本在提权前就以当前用户身份打开该文件(
exec {logo_fd}<"$logo_path"),防止 sudo 之后跟随一个指向受保护文件的替换符号链接(symlink 攻击防护),并限制素材体积上限为 64 MiB。 - 颜色同步的实现:背景色被转换成 0~1 浮点写入
omarchy.script的Window.SetBackgroundTopColor / SetBackgroundBottomColor;文字色则通过magick +level-colors把bullet/entry/lock/progress_bar等 PNG 全部重染。SDDM 的Main.qml通过占位符替换(默认深色#1a1b26与文字色#ffffff)获得相同配色,entry-failed.png、lock-failed.png两个失败态图标则固定重染为红色#f7768e。 - 所有发布动作都是原子的:素材先在 root 拥有的临时目录中构建、校验来源目录自 root 向上全部为 root 所有且不可组/他写,再以「临时文件 +
mv」的方式逐个替换到/usr/share/plymouth/themes/omarchy与/usr/share/sddm/themes/omarchy。 - 结尾自动执行
sudo plymouth-set-default-theme omarchy,并通过limine-mkinitcpio(或回退到mkinitcpio -P)重建 initramfs。
所以如果你希望切换回出厂默认 Omarchy 主题,只需执行:
omarchy plymouth resetbin/omarchy-plymouth-reset 实际上只是调用了omarchy-refresh-plymouth与omarchy-refresh-sddm两个刷新脚本,让系统从 default/plymouth 与 default/sddm/omarchy 恢复出厂素材。如果你想对照源码了解默认主题的原始构图,可以查看仓库 default/plymouth 目录下的omarchy.plymouth、omarchy.script等文件。
给屏保换上你自己的 ASCII Logo
屏保是品牌化中最常被用来展示「个人印记」的地方——它显示的是一个 ASCII Logo,也就是说它本身是纯文本。修改入口在Style > Screensaver菜单,菜单里共有三个选项:
- Edit Text:在你的编辑器中打开
~/.config/omarchy/branding/screensaver.txt。你可以输入或粘贴任何内容——ASCII 艺术、你的名字、一句标语都可以。保存退出后屏保会立即触发一次,让你马上看到效果。 - Set From Image:弹出文件选择器挑选一张 PNG 或 SVG,自动转成 ASCII 并展示结果。注意:轮廓清晰的 Logo 远比照片效果好——因为该功能本质上是二值化处理(见下文阈值参数),照片的中途灰阶很容易糊成一团。
- Restore Default:把默认的 Omarchy Logo 放回去。
这三个选项在底层对应 bin/omarchy-branding-screensaver:image分支通过omarchy-file-select选择文件后调用omarchy-transcode-ascii(使用默认 80×26 尺寸),然后以force参数唤起屏保展示;text分支是打开编辑器后同样强制唤起;reset分支则直接拷贝仓库根目录的 logo.txt 作为默认文案。仓库根目录的 logo.txt 与 icon.txt 分别是官方 Omarchy 字标与图标对应的 ASCII 版本。
About 关于页:一样的三个选项,更小的画幅
About 页是你在 Omarchy 菜单里打开「About」窗口时见到的画面。它的定制入口是Style > About,提供与屏保完全一样的三个选项(Edit Text / Set From Image / Restore Default),行为也一致:
- 文案文件是
~/.config/omarchy/branding/about.txt; - 每次修改后 About 窗口会自动弹出展示新结果;
- 由于 About 是一扇窗口而不是铺满屏幕,转码时会被压缩到比屏保更小的尺寸——从 bin/omarchy-branding-about 可以看到,它调用的转换命令显式传入了
--width 54 --height 26,而屏保使用默认的 80 列宽度。
About 窗口上的「掠光」动画是怎么工作的
当 About 窗口打开时,你会看到一道绿光(注:实际颜色随主题变化)每隔几秒从 ASCII 艺术上斜斜掠过,然后恢复静止。这份「自己的艺术也能享受」的待遇是有前提的:文案中每个字符必须是恰好一列宽(single-width)。任何由Set From Image生成的图案都满足该条件。
如果文案包含 emoji 或双字节宽字符,动画就会保持静止而不是滑动——这是引擎主动避让而非渲染失败。背后的原因值得展开:bin/omarchy-branding-about-animation(被作为 helper 源码引入,不要直接运行)对每一行做字符切片并重绘高亮带,它的sheen_build明确要求「一个字符必须占据一个终端单元」,并且显式拒绝包含$(会被主题渲染器当作颜色替换占位符)、制表符、转义序列或宽字符的文案。带体(SHEEN_BAND)使用高亮白色(ESC[1m ESC[97m),倾斜量每行 2 列,从而在屏幕上呈约 45 度斜掠,帧与帧间隔 0.025 秒、每 8 帧休息一次,所有帧在动画开始前一次性预计算以维持帧率。
同理,如果你自己维护了一份 fastfetch 配置(About 页会顺带展示系统信息),那么即使 Logo 是单宽字符,整个 About 画面也会保持静止——因为动画无法在保留你自定义 fastfetch 输出的前提下可靠定位行,静止是动画「让路」而不是故障。
自己动手转码:omarchy transcode ascii
屏保与 About 的两个Set From Image选项,本质上都只是在调用同一条底层命令:
omarchy transcode ascii ~/logo.svg ~/.config/omarchy/branding/screensaver.txt --width 100如果你需要控制转换细节(比如屏保想要更高的精度、或者图片识别成了一个色块),可以直接运行它。完整的参数如下(源自 bin/omarchy-transcode-ascii 的 usage 与实际默认值):
| 参数 | 说明 | 默认值 |
|---|---|---|
-w, --width <columns> | 输出最大宽度,单位是终端列数 | 80 |
-H, --height <rows> | 输出最大高度,单位是终端行数 | 26 |
-m, --mode <braille\|block> | 输出风格 | braille |
-t, --threshold <percent> | 判定哪些像素算作「Logo 前景」的阈值百分比(0-100) | 50 |
--invert | 当 Logo 是浅色底深色图案(亮底)时使用 | 关闭 |
--no-trim | 保留图片四周的空白/背景,不做自动裁边 | 关闭(默认自动裁边) |
--help | 显示帮助 | — |
两条转换模式分别面向不同的细腻度诉求:
braille(默认):每个终端字符单元对应2×4的像素网格,把点阵映射到 Unicode 盲文字符(U+2800 起),因此同样尺寸下能表达远为细腻的轮廓,适合 Logo 与精细图形。block:每个单元对应 2×2 像素,用█ / ▀ / ▄四个块字符表达上下半块,风格更粗犷、行数更少。
从实现看,转换流程会先用 ImageMagick 读取图像的 alpha 通道判断是否为透明背景图片:若带透明通道则取 alpha 作掩膜(必要时--invert反相),否则转灰度并按--invert决定「亮像素是 Logo」还是「暗像素是 Logo」;随后默认以黑色边界做一次-trim裁边,再缩放到宽度×2 / 高度×4(braille)或宽度 / 高度×2(block)的像素画布,用-threshold二值化后交给 awk 逐块编码,最后把输出写回指定文件并打印Wrote ASCII art to ...。
实战提示:如果一次转换出来的结果是一个「大色块 / blob」,文档明确指出
--threshold通常就是需要调节的那个旋钮——把阈值调高或调低,二值化的分界点随之移动,Logo 的轮廓与留白比例就会被重新切分。
不用图片:用omarchy ascii把文字画成字标
有时候你并不想放图片,只想让屏保「说一句话」。omarchy ascii就是为此准备的——它用Delta Corps Priest 1(Omarchy 字标本身所用的那套 FIGlet 字体)把文字渲染成 ASCII 艺术。例如:
omarchy ascii "Back in five" > ~/.config/omarchy/branding/screensaver.txt其参数规则如下(见 bin/omarchy-ascii):
- 直接以参数形式传入要渲染的文字;不传参数时则从管道(stdin)读取输入;
- 该字体只包含字母与空格——它被设计出来时就没有数字和标点符号的字形。因此输入中的数字、标点会被跳过,并且被跳过的字符会逐个列出并输出到 stderr(例如
Skipped, no glyph in Delta Corps Priest 1: 1 2 3),而不是被悄悄吞掉。控制字符则会以\xNN的形式转义命名,避免把控制序列直接打到终端上。
实现上,脚本把字体的flf2a头、字形表和所有渲染逻辑内嵌在 awk 程序中,并对相邻字形做字距收缩(kerning):两个字形会互相靠拢直到行间空白最小的那一行即将接触,使「Omarchy」这样的字标看起来紧凑连贯而非等宽松散。渲染后会把图元里用作硬空格的$还原成真正的空格。仓库根目录的 logo.txt 正是 Omarchy 字标的成品样例,可用于对照检查你自己的渲染效果。
结语:三处入口、一条命令链
Omarchy 的品牌化设计把「系统启动到桌面内」几个最容易留下第一印象的画面统一了起来:
- 开机解锁:位图级定制,
omarchy plymouth preview→set→reset三步闭环,配色自动同步 SDDM,且源码层面对颜色校验、素材体积、符号链接与原子发布都有严格防护; - 屏保与 About:纯文本 ASCII 定制,走图形菜单的三个选项最省事,文件直接可编辑、改完即时预览;
- 统一转换引擎:无论图片来自哪个入口,都汇入
omarchy transcode ascii(braille/block、阈值、反相、裁边),而纯文字场景则交给omarchy ascii+ Delta Corps Priest 1 字标字体。
如果你需要进一步了解主题与这些品牌化资源如何联动,可继续阅读同目录的 06-themes.md(主题系统)与 13-toggles-idle-screensaver.md(屏保触发机制);想深度定制时,直接以 bin 目录下的omarchy-plymouth-*、omarchy-branding-*、omarchy-transcode-ascii与omarchy-ascii脚本为参照,即可获得与官方工具完全一致的行为。
【免费下载链接】omarchyBeautiful, Modern & Opinionated Linux项目地址: https://gitcode.com/GitHub_Trending/om/omarchy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考