距离上次omarchy的文章已经快一年多了,新版的omarchy 4 出来了,很多地方有些不一样了,记录下。 官方有了专门的网站来做插件和主题的管理
插件
新版的omarchy基于quick shell做了很多插件,下面是我推荐的几个
- omarchy-keyboard-indicator 键盘布局显示和切换小插件
- omarchy-tray 托盘图标插件
dock
omarchy plugin add https://github.com/Davedes83/animated-dock.git --enable
Tray Panel
omarchy plugin add https://github.com/omakits-x/omarchy-tray-panel.git --enable --yes
Omarchy Workspace Gallery
omarchy plugin add https://github.com/manateelazycat/omarchy-workspace-gallery.git --enable --yes
~/.config/omarchy/plugins/io.github.manateelazycat.workspace-gallery/scripts/gestures install
设置
默认浏览器
vivaldi不支持默认的omarchy-defaultbrowser报错
omarchy-default-browser vivaldi
Usage: omarchy-default-browser <chromium|chrome|brave|brave-origin|edge|firefox|zen>
实际可以用
env -u BROWSER xdg-settings get default-web-browser vivaldi-stable.desktop
中文输入法
安装相关的包
paru -S fcitx5 fcitx5-configtool fcitx5-qt fcitx5-gtk fcitx5-rime
推荐使用我的aur包 snout-bin,然后一键安装(万象输入法,国内用户记得开启镜像模式),这样会自动使用cnb的镜像进行下载。如果rime没自动加入到输入引擎,程序会提示并自动加入,可能需要重启才能生效。
语音输入法
omarchy对于语音输入法的支持也不错,安装 voxtype-bin 后,先通过程序里面的配置设置好模型,然后 voxtype setup model 下载相应的模型,再到配置程序启动daemon程序。参考 https://omarchy.iamcheyan.com/zh/11-text-extraction-dictation/
遇到的一些坑
Vivaldi 在 Omarchy + NVIDIA + Wayland 下页面闪烁的排查与修复
现象
在 Omarchy 的 Hyprland 桌面中使用 Vivaldi 浏览网页时,整个浏览器窗口可能频繁闪烁。调整显卡环境变量后,现象会发生变化:原来整个窗口闪烁,设置 LIBVA_DRIVER_NAME=iHD 后,主要剩下网页内容闪烁,而且图片较多的页面更容易触发。改回 LIBVA_DRIVER_NAME=nvidia 后,问题仍然存在。
原因
这台电脑使用 Intel Iris Xe 和 NVIDIA RTX 3050 双显卡,桌面会话运行在 Wayland 上。Omarchy 会根据硬件自动设置以下变量:
LIBVA_DRIVER_NAME=nvidia
NVD_BACKEND=direct
__GLX_VENDOR_LIBRARY_NAME=nvidia
LIBVA_DRIVER_NAME 只决定 VA-API 的视频解码驱动,并不能修复所有窗口闪烁问题。图片较多的网页会频繁触发 Chromium 内核的 GPU 合成、纹理上传和缓冲区交换,因此即使没有播放视频,也可能受到显卡后端的影响。
本次问题的关键组合是:Vivaldi 的 Chromium 内核、NVIDIA 驱动、原生 Wayland 窗口后端,以及网页内容的 GPU 合成。把驱动名称在 iHD 和 nvidia 之间切换,只是在改变解码路径,无法解决 Wayland 合成路径本身的兼容性问题。
修复方案
Vivaldi 支持通过用户级配置文件追加启动参数。文件路径是:
~/.config/vivaldi-stable.conf
先完全退出 Vivaldi,然后创建或编辑这个文件,加入:
--ozone-platform=x11
重新启动 Vivaldi。这个参数让 Vivaldi 使用 XWayland,而不是原生 Wayland 窗口后端。桌面仍然是 Wayland,只有 Vivaldi 的窗口通过 XWayland 接入 Hyprland。这样可以绕开当前 NVIDIA 与 Vivaldi Wayland 合成路径之间的兼容性问题,同时保留 GPU 加速。
可以用下面的命令备份配置:
cp ~/.config/vivaldi-stable.conf ~/.config/vivaldi-stable.conf.bak.$(date +%s) 2>/dev/null || true
如何确认确实是这个问题
可以先使用临时配置启动 Vivaldi,不影响正式配置:
vivaldi-stable \
--ozone-platform=x11 \
--user-data-dir=/tmp/vivaldi-x11-test
如果图片较多的页面在这个测试实例中不再闪烁,就可以把参数写入 ~/.config/vivaldi-stable.conf 长期使用。
如果仍然闪烁,可以进一步测试关闭 GPU 合成:
vivaldi-stable \
--disable-gpu \
--disable-gpu-compositing \
--user-data-dir=/tmp/vivaldi-software-test
这个方案兼容性更强,但会增加 CPU 占用,应该作为后备方案,而不是第一选择。
注意事项
不要直接修改 ~/.local/share/omarchy/default/ 或 /usr/share/omarchy/ 下的默认文件。Omarchy 更新后这些文件可能被覆盖,而且默认配置会自动根据显卡硬件重新生成。Vivaldi 的修复参数放在 ~/.config/vivaldi-stable.conf,只影响当前用户的 Vivaldi,容易备份和回滚。
这次修复并不是证明 NVIDIA 或 Intel 驱动损坏,而是避开了一条特定的 Wayland GPU 合成路径。以后升级 Vivaldi、NVIDIA 驱动或 Hyprland 后,可以重新测试原生 Wayland;如果问题已经消失,再删除该参数即可。
微信能输入中文,但不显示候选框
微信里可以输入中文,但看不到输入法候选框,其他应用都正常。排查时,Fcitx 5 正在运行,微信的启动器也已经设置了 QT_IM_MODULE=fcitx 等输入法变量,微信窗口使用的是原生 Wayland。
这次通过让微信单独使用 XWayland,恢复了候选框显示。问题与当前微信在 Wayland 下的候选框显示兼容性有关,具体是定位还是绘制环节出错,没有继续追查。
我这里安装的是 wechat 和 wechat-bin,桌面快捷方式通过 Portable 启动微信。这个启动器会读取下面的用户环境配置文件:
~/.local/share/WeChat_Data/portable.env
先备份已有文件:
cp -p ~/.local/share/WeChat_Data/portable.env \
~/.local/share/WeChat_Data/portable.env.bak.$(date +%s)
编辑文件,保留其他配置,加入下面这一行;如果已经设置过同名变量,就修改原来的值:
QT_QPA_PLATFORM=xcb
从微信菜单选择退出,再重新打开。只关闭窗口可能仍然留有后台进程,设置不会生效。重新输入中文后,我这里的候选框恢复了。
可以在 Hyprland 中检查微信是否已经使用 XWayland,下面的命令需要 jq:
hyprctl clients -j | jq '.[] | select(.class == "wechat") | {class, xwayland}'
微信窗口对应的 xwayland 应为 true。这只能确认窗口后端,候选框是否正常还需要实际输入验证。
这个设置只影响微信,不用修改 /etc/environment,也不用重启电脑。上述路径适用于这里使用的 Portable 启动器,其他安装方式需要确认各自的启动配置。以后升级微信或 Hyprland 后,可以删除这一行并重启微信,重新测试原生 Wayland。
启动背景:Evangelion 壁纸(Limine 方案)
想把启动界面换成 EVA 风格,看中了 Evangelion 这套主题。它是给 GRUB 用的,没法直接套到 Omarchy 4 使用的 Limine 上,不过项目自带的 8 张 3840×2160 壁纸可以单独拿来用,选一张做启动背景,也可以用作桌面壁纸。
下载壁纸
mkdir -p ~/Pictures/Evangelion
cd /tmp
for f in Ayanami-wall Soryu-wall Pen-Pen-wall SEELE-wall EVA01-wall Wunder-wall EVA-02-wall Ramiel-wall; do
curl -sL -o "$f.png" "https://raw.githubusercontent.com/Aleph1-9012/Evangelion/main/wallpapers/$f.png"
done
cp /tmp/*-wall.png ~/Pictures/Evangelion/
下载后,桌面壁纸可以直接从 ~/Pictures/Evangelion/ 选用。下面以 EVA-01 为例设置启动背景。
部署到 ESP 作为 Limine 启动背景
这台机器的 ESP 挂载在 /boot,先把壁纸复制过去:
sudo mkdir -p /boot/wallpapers
sudo cp ~/Pictures/Evangelion/*.png /boot/wallpapers/
备份并编辑配置:
sudo cp /boot/limine.conf /boot/limine.conf.bak.$(date +%s)
sudoedit /boot/limine.conf
在启动条目之前的全局配置区域设置下面几行,已有同名项就修改原值,保留其他配置和内核条目:
timeout: 5
wallpaper: boot():/wallpapers/EVA01-wall.png
wallpaper_style: stretched
backdrop: 1a1b26
term_background: 801a1b26
wallpaper 指定背景图片,boot(): 指向 Limine 所在的启动分区,这里对应 /boot,所以示例读取的是 /boot/wallpapers/EVA01-wall.png。backdrop 设置六位十六进制底色,用于壁纸居中时未覆盖的区域。
wallpaper_style: stretched 让图片铺满屏幕,宽高比不同时会拉伸变形。term_background 使用 TTRRGGBB 格式,前两位表示透明度,这里的 80 让菜单背景半透明,透出后面的壁纸。timeout: 5 则让启动菜单停留 5 秒。
确认实际通过 Limine 启动
背景能否显示,还取决于机器实际从哪个引导器启动。我这台机器的启动项虽然叫 Omarchy,却直接加载 \EFI\Linux\omarchy_linux.efi,绕过了 Limine,自然也不会读取上面的配置。用下面的命令可以查看当前启动项:
efibootmgr -v
找到 BootCurrent 对应的条目,检查它加载的路径。这台机器的 Limine 条目指向 \EFI\Limine\limine_x64.efi,可以先在固件启动菜单中选它启动一次,也可以用下面的命令指定下一次启动项:
# 0007 是这台机器的 Limine 编号,其他机器要按实际输出替换
sudo efibootmgr --bootnext 0007
这只影响下一次启动。确认能进入系统并看到背景后,再在固件设置中把 Limine 调到启动顺序第一位,保留原有条目以便切回。编号和完整启动顺序因机器而异,不要照抄别人的 --bootorder 列表。
切换壁纸
改 /boot/limine.conf 里的 wallpaper 一行,把路径换成 /boot/wallpapers/ 下的其他文件即可,下次通过 Limine 启动时生效:
sudo sed -i 's|^wallpaper:.*|wallpaper: boot():/wallpapers/SEELE-wall.png|' /boot/limine.conf
这个命令只替换已有的 wallpaper 行,没有该行时需要先手动添加。
限制与注意事项
- 壁纸只显示在 Limine 启动菜单,不会替换后续的磁盘解密、Plymouth 系统加载或登录画面,也不会套用 GRUB 主题的字体和布局。
- Omarchy 的更新或主题操作可能重写 Limine 外观配置;若背景消失,检查
wallpaper、term_background和实际启动入口。丢失的配置项需要重新添加,单纯执行替换命令不会补回缺失行。 - 不需要为了这张背景更换 GRUB。更换引导器还要重新处理内核更新和启动条目,与现有
limine-entry-tool的集成不能直接沿用。