我通过两种方法为 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 会产生不同的最终产品吗?具体来说,为什么方法 B 中我自定义的 css 文件中定义的样式和壁纸没有出现在解锁屏幕中,而我自定义的 css 文件中定义的小部件样式没有出现在锁定屏幕中?
答案1
在全新安装的 Ubuntu 18.04 中,
如果你观察文件/usr/share/gnome-shell/modes/ubuntu.json
{
"parentMode": "user",
"stylesheetName": "ubuntu.css",
"enabledExtensions": ["[email protected]", "[email protected]"]
}
该行stylesheeName: ubuntu.css
表示默认 shell 主题(即,当没有安装用户主题 gnome-shell-extension 时)使用主题文件/usr/share/gnome-shell/theme/ubuntu.css
以及您将在此文件中拥有的背景,用于unlock-screen background
因此,当您使用“方法 B”时,您需要像这样编辑该行:sylesheetName: "mytheme/mytheme.css",