ArchLinux使用PcamanHooks解决GDM恢复默认的问题
ArchLinux 是我的主力办公系统,我配置了完整的 WhiteSur
主题,当然也细致到了使用 WhiteSur 的 GDM 主题。但是我发现有时候系统使用
Pacman 升级后 GDM 主题会恢复到默认状态,其根源在于 GDM (GNOME
显示管理器)的主题是通过直接替换系统文件/usr/share/gnome-shell/gnome-shell-theme.gresource
来实现的。当gnome-shell
软件包升级时,这个文件会被包管理器自动恢复为默认版本,所以美化的登录界面就消失了。
永久解决这个问题的核心思路是让系统在每次gnome-shell更新后,自动重新应用一次WhiteSur主题。在ArchLinux上,最优雅的方式就是使用Pacman钩子(hook),
具体步骤为:
创建钩子文件:使用
root权限在/usr/share/libalpm/hooks/目录下创建一个新的钩子文件,例如命名为reapply-whitesur-gdm.hook, 如果你按装了nvim则执行1
sudo nvim /usr/share/libalpm/hooks/reapply-whitesur-gdm.hook
编写钩子内容:
1
2
3
4
5
6
7
8
9[Trigger]
Operation = Upgrade
Type = Package
Target = gnome-shell
[Action]
Description = Reapplying WhiteSur GDM theme after gnome-shell upgrade...
When = PostTransaction
Exec = /bin/sh -c 'cd /路径/你的/WhiteSur-gtk-theme && sudo ./tweaks.sh -g'[Trigger]部分:定义了钩子的触发条件, 即gnome-shell或gdm包升级(Upgrade)后触发。[Action]部分:定义了要执行的动作。Exec: 最关键的一行。它需要指定一个完整的shell命令来重新应用主题。
原理验证:保存文件后,这个钩子就生效了。下一次当你运行
sudo pacman -Syu并且更新列表里包含gnome-shell或gdm时,你会在升级输出中看到你设置的Description文字,随后主题会被自动重新应用。升级完成后,你的GDM登录界面将保持为WhiteSur 主题,再也不会被重置了。