news 2026/9/9 20:31:10

Omarchy 系统品牌化定制指南:Plymouth 开机界面、屏保与 About 页的 Logo、配色与 ASCII 艺术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Omarchy 系统品牌化定制指南:Plymouth 开机界面、屏保与 About 页的 Logo、配色与 ASCII 艺术

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 plymouthomarchy transcode asciiomarchy ascii等命令完成从「图片转 ASCII」到「配色同步」的完整定制流程,并说明其底层的工作原理与适用限制。

读完本文,你将能够:在安装/重置前用预览命令确认开机画面效果;一键把自定义配色与 Logo 同时应用到 Plymouth 开机界面和 SDDM 登录屏并随时还原;通过图形菜单或纯命令行把 PNG/SVG 转成 ASCII 屏保与 About 图案;以及用 Omarchy 自带的 FIGlet 字体把一段文字渲染成 Logo 风格的艺术字。

品牌化资源落在系统的哪三个位置

Omarchy 的「品牌化」不是单一功能,而是一组覆盖系统生命周期不同阶段的视觉入口。官方文档将其归纳为三类,本仓库也对应着三组独立但共享底层工具的命令:

场景触发入口文案存储文件底层命令
开机解锁(Boot unlock)系统启动 / 锁屏前 Plymouthomarchy plymouth set写入主题资源bin/omarchy-plymouth-preview、bin/omarchy-plymouth-set、bin/omarchy-plymouth-reset
屏保(Screensaver)Style > Screensaver菜单~/.config/omarchy/branding/screensaver.txtbin/omarchy-branding-screensaver
About 关于页Style > About菜单~/.config/omarchy/branding/about.txtbin/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 的实现可以看到它的工作方式:

  1. 校验两个颜色值必须是合法的 6 位十六进制#RRGGBB,Logo 文件必须存在;
  2. 把 default/plymouth 下的主题素材拷贝到临时目录,再把你选中的logo.png覆盖进去;
  3. 用 ImageMagick(magick)把bullet.pngentry.pnglock.png统一重染为传入的文字色(+level-colors "#$text_hex","#$text_hex");
  4. 在一块1920×1080的纯背景色画布上,按与真实主题一致的几何布局(Logo 居中、输入框位于 Logo 下方、锁图标与分页圆点按比例计算)合成出最终画面,并把 Logo 等素材的宽高换算成像素位置;
  5. 调用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.scriptWindow.SetBackgroundTopColor / SetBackgroundBottomColor;文字色则通过magick +level-colorsbullet/entry/lock/progress_bar等 PNG 全部重染。SDDM 的Main.qml通过占位符替换(默认深色#1a1b26与文字色#ffffff)获得相同配色,entry-failed.pnglock-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 reset

bin/omarchy-plymouth-reset 实际上只是调用了omarchy-refresh-plymouthomarchy-refresh-sddm两个刷新脚本,让系统从 default/plymouth 与 default/sddm/omarchy 恢复出厂素材。如果你想对照源码了解默认主题的原始构图,可以查看仓库 default/plymouth 目录下的omarchy.plymouthomarchy.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 的品牌化设计把「系统启动到桌面内」几个最容易留下第一印象的画面统一了起来:

  1. 开机解锁:位图级定制,omarchy plymouth previewsetreset三步闭环,配色自动同步 SDDM,且源码层面对颜色校验、素材体积、符号链接与原子发布都有严格防护;
  2. 屏保与 About:纯文本 ASCII 定制,走图形菜单的三个选项最省事,文件直接可编辑、改完即时预览;
  3. 统一转换引擎:无论图片来自哪个入口,都汇入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-asciiomarchy-ascii脚本为参照,即可获得与官方工具完全一致的行为。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 20:30:27

Java集合实战:从零构建图书管理系统的完整复盘

开头先说明一下&#xff1a;这篇内容是我“day 11 练习”的完整复盘。练习内容是用 Java 集合写一个控制台版图书管理系统&#xff0c;重点围绕 ArrayList、HashMap、面向对象分层设计和输入校验展开。适合处于 Java 基础向面向对象过渡阶段的学习者参考&#xff0c;也适合想看…

作者头像 李华
网站建设 2026/9/9 20:28:27

docker compose unpause 使用指南:恢复暂停的 Compose 服务容器

docker compose unpause 使用指南&#xff1a;恢复暂停的 Compose 服务容器 【免费下载链接】compose Define and run multi-container applications with Docker 项目地址: https://gitcode.com/GitHub_Trending/compose/compose docker compose unpause 是 Docker Com…

作者头像 李华
网站建设 2026/9/9 20:26:30

彻底搞懂反向传播与自动求导:从矩阵微积分到PyTorch Autograd

先问大家一个可能被问过无数次的问题&#xff1a;训练神经网络的时候&#xff0c;那一行 loss.backward() 到底是在做什么&#xff1f;很多人的第一反应是“反向传播&#xff0c;算梯度”。但如果继续问“梯度具体是怎么沿着网络一层一层传回去的&#xff1f;”“为什么框架能…

作者头像 李华
网站建设 2026/9/9 20:24:25

0基础快速做出高质量PPT:工具推荐与实操指南

做PPT这件事&#xff0c;我真是被逼出来的。以前在学校当助教&#xff0c;每周都要帮导师做课件&#xff0c;后来自己做了教育博主&#xff0c;又得频繁出内容&#xff0c;加上一年里总要帮学生改几版答辩PPT&#xff0c;前前后后经手了不下几百套。见得多了就发现一个规律&…

作者头像 李华