我通过 2 种方法为 Ubuntu 18.04 的 GDM 安装了一个自定义的 css 文件。令人惊讶的是,他们给出了不同的结果:
方法(A)
- 我将自定义的 GDM css 文件保存为
/usr/share/gnome-shell/theme/ubuntu.css
. 也就是说,我已经用我自己的 .css 文件替换了原来的 ubuntu.css 文件,但给了新文件与 ubuntu.css 相同的名称。 - 我按 Alt+F2然后按r+Return重新启动 GDM。
- 接下来,我按下Super+L来锁定我的桌面。从那里,我首先能够看到 gnome-tweaks 为锁屏设置的壁纸。锁屏的小部件样式遵循我自定义的 css 文件。接下来,对于解锁屏幕,它的壁纸和小部件样式遵循我自定义的 css 文件。
- 要在登录屏幕上查看自定义 css 文件的结果,我必须重新启动系统或从当前会话中注销。
方法 (B)
1 我使用了这些命令:
$ sudo update-alternatives --auto gdm3.css
$ sudo update-alternatives --install /usr/share/gnome-shell/theme/gdm3.css gdm3.css /usr/share/gnome-shell/theme/mytheme/mytheme.css 11
update-alternatives: using /usr/share/gnome-shell/theme/mytheme/mytheme.css to provide /usr/share/gnome-shell/theme/gdm3.css (gdm3.css) in auto mode
$ sudo update-alternatives --config gdm3.css
There are 2 choices for the alternative gdm3.css (providing /usr/share/gnome-shell/theme/gdm3.css).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/share/gnome-shell/theme/mytheme/mytheme.css 11 auto mode
1 /usr/share/gnome-shell/theme/mytheme/mytheme.css 11 manual mode
2 /usr/share/gnome-shell/theme/ubuntu.css 10 manual mode
Press <enter> to keep the current choice[*], or type selection number:
- 我按Alt+F2然后按r+Return重新启动 GDM。
- 接下来,我按下Super+L来锁定我的桌面。与方法 A 不同,我无法在解锁屏幕中看到自定义 css 文件中定义的壁纸和样式;这是一个紫色的屏幕,出现了通常的 ubuntu 解锁小部件。对于锁屏(即屏幕保护程序),它显示了 gnome-tweaks 设置的壁纸,但它的小部件样式不符合我自定义的 css 文件。
- 为了查看我自定义的 css 文件的效果是否会出现在登录屏幕中,我重新启动了系统。我很高兴在登录屏幕中找到自定义 ccs 中定义的壁纸和样式。但是,登录后,按Super+L锁定我的桌面后,3.中描述的问题仍然存在。
你能解释一下为什么方法 B 和方法 A 会产生不同的最终产品吗?特别是,为什么我的自定义 css 文件中定义的样式和壁纸没有出现在解锁屏幕中,并且我自定义的 css 文件中定义的小部件样式没有出现在方法 B 的锁屏中?
在全新安装的 Ubuntu 18.04 中,
如果你观察文件
/usr/share/gnome-shell/modes/ubuntu.json
该行
stylesheeName: ubuntu.css
表示 default-shell 主题(即当没有安装用户主题 gnome-shell-extension 时)使用主题文件/usr/share/gnome-shell/theme/ubuntu.css
以及您将在此文件中拥有的背景,用于
unlock-screen background
因此,当您使用“方法 B”时,您需要像这样编辑该行:
sylesheetName: "mytheme/mytheme.css",