在 Ubuntu 20.04.1 LTS上
根据设置应用程序的“关于”选项卡的 Gnome 版本:3.36.8
gnome-shell --version
GNOME Shell 3.36.4
主题:Yaru(默认;不是“光明”,不是“黑暗”)
当我按下超级键或激活热角时,会出现“概览”屏幕,我可以在其中搜索应用程序、设置、文档等:
问题/挑战:
与我的桌面通常看起来相比,我发现这个叠加层太暗了;每次必须使用它时,我发现它对体验有一种侵入性的影响,而且我的眼睛调整是一种累人的运动。
我想让这个叠加层更轻/更亮。
我已经使用 dconf-editor 查看了设置org.gnome.shell.extensions.dash-to-dock
,但我没有找到任何相关信息。(我没有在 Tweaks 中启用“Ubuntu Dock”附加的 Gnome shell 扩展。)
然后我将 Yaru 主题从 复制/usr/share/themes/
到~/.themes/
,并使用 Gnome-Tweaks 激活它。
在~/.themes/My-Yaru/gtk-3.20/
我已经导出了文件的真实内容,并gtk.css
用
gresource extract gtk.gresource /com/ubuntu/themes/Yaru/3.20/gtk.css > gtk.css
现在,它不再是原来的单行 import 语句,而是包含 12637 行 CSS。
我确实尝试识别破折号覆盖的 CSS 选择器,但我没有找到任何东西。然后我在寻找径向渐变的声明(因为这个叠加层似乎有一个径向渐变),但我发现的似乎与这个叠加层无关。
我现在能做什么?我在正确的轨道上吗?
如果是的话,我怎么能启用一个 Gnome 调试模式——类似于 Web 浏览器的开发者工具——将交互式地显示这个覆盖的 CSS 选择器?
如果这不是正确的方向,那么我该如何实现目标——最好不必安装完全不同的主题?
回答兼容:
Ubuntu 20.04.1,
gnome-shell 版本:3.36.4
显示服务器:X.Org Server
带有径向渐变的深色背景来自 gnome shell UI 的 lightbox.js。
https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/gnome-3-36/js/ui/lightbox.js
似乎有3种方法:
通过提供给 gnome-shell UI 的 lightbox.js 的参数
我对此知之甚少。我没有在 中找到任何相关的东西
dconf-editor
,另外三个有趣的参数中有两个似乎是硬编码的。所以我去找了代码。通过覆盖 gnome-shell UI 的 lighbox.js 代码
更改 lighbox.js 行为不仅会影响 Activity- 和 Apps-overview 屏幕,还会影响其他对话框,例如:Run a Command、Authentication required、Power off等。
在 Ubuntu 20.04 上,该文件通常打包在
/usr/lib/gnome-shell/libgnome-shell.so
.要覆盖它,需要提取它的副本,并要求 Gnome 使用此副本。
创建此目录结构,并
cd
在终端中:在此目录中,执行以下操作:
编辑 lightbox.js 文件;改变靠近顶部的三个变量,如下:
现在我们需要告诉 Gnome 我们修改过的文件。将以下行放入
~/.profile
:这里的“叠加层”不是指灯箱叠加层;相反,它暗示了这个 Gnome/GTK 资源覆盖特性是如何工作的。
重要提示:在我做这一切之前,我已经
libgtk-3-dev
在我的系统上安装了这个包。它用于开发/调试,就像资源覆盖功能似乎如此。因此,现在我无法确定是否尊重G_RESOURCE_OVERLAYS
环境变量取决于这个包的存在......以防万一准备安装它......无论如何:要使更改生效,请注销并重新登录。
进一步调整
要查看进一步调整灯箱参数的效果,每次编辑后重新加载 Gnome shell 是必要的。可以通过运行命令对话框(由 Alt+F2 显示)发出
r
命令来完成。有趣:根据我的经验,当保存带有语法错误的 lightbox.js 文件时,运行命令对话框似乎不再出现。但它可能在“那里”,只是不“可见”。在这种情况下,就像它在那里一样继续:修复语法并保存文件,按 Alt+F2,然后按
r
,然后按 Enter。此答案中讨论了有关资源覆盖功能对系统稳定性的潜在影响的更多重要考虑因素。
参考文献/文献:
通过 CSS(gnome-shell 自定义主题)
如果您设法覆盖了 lightbox.js,那么这部分可以提供更多的调整来进一步完善体验。
但是,如果您没有覆盖 lightbox.js,那么这部分可以提供额外的解决方法,但对活动和应用程序概览屏幕的用处有限。
(此外,以下是我对问题的原始答案,在我可以将手放在上面的 javascript 覆盖之前。)
使用自定义 Gnome shell 主题
为此需要Gnome Tweaks 应用程序以及 Gnome shell 扩展“用户主题”(
gnome-shell-extensions
包的一部分,可通过 apt install 获得)。打开 Tweaks 应用程序,并在“扩展”选项卡上启用“用户主题”扩展。
创建自定义 Gnome shell 主题
这部分没有被证明是最好的方法;只是我找到了这种方式。
创建以下目录结构:
复制这个文件(默认 Yaru 主题的 shell 主题实现):
进入这个新创建的目录,所以你最终得到这个:
在终端中打开这个目录,会
gresource list gnome-shell-theme.gresource
显示这个新复制的文件的内容。定制的脚本可以帮助提取所有内容。
脚本的内容可能是这样的,或者更好(我不是 bash 脚本专家)(我已经知道人们不再喜欢反引号了):
注意:此自定义脚本不会重现 .gresource 文件中规定的目录结构;相反,它将文件以平面方式放置在目标(当前)目录中。但是,它会打印它遇到的每个资源的定义,以及它最初预期/定义的路径。虽然它似乎并不总是必要的,但在某些情况下(例如,当遇到损坏的图标或小部件背景时)可能值得考虑根据定义建议将文件重新排列到目录结构中。请注意,我将原始 .gresource 文件留在了目录中。
替代提取器脚本:可以通过在此站点或 Internet 上的其他地方搜索字符串“do gresource extract”来找到更多此类脚本。
运行提取器脚本,然后快速保护原始文件的备份,
提取的
gnome-shell.css
文件已准备好进行编辑。gnome-shell 开发者工具
它被称为窥镜。它可以通过运行命令对话框(由 Alt+F2 显示)发出
lg
命令来激活。CSS 调整
以下更改最适合我单调的桌面背景颜色;但是通过一些颜色调整,它可能对任何情况都有用。
CSS 以这样的方式工作,即在文件末尾进行的定义可以覆盖在同一文件中早先编写的定义。这就是为什么不需要在整个文件中分散编辑的原因;只需在最后添加正确的东西就可以了。这就是我附加的内容
gnome-shell.css
:启用自定义主题
在 Tweaks 应用程序的“外观”选项卡中,在“主题”部分中,有一个标有“外壳”的字段。新的自定义主题应该在选择小部件中可用。请记住,要激活此小部件,需要启用“用户主题”Gnome shell 扩展。
使 CSS 修改生效
r
方法一:通过运行命令对话框发出命令(由 Alt+F2 显示)重新加载 shell;它还应该接受新的 CSS 更改。方法 2:在默认和自定义 shell 主题之间来回切换似乎比方法 1 更加流畅和优雅。主题切换可以在 Tweaks 应用程序的 UI 上实现,也可以通过
gsettings
cli 实现,如下所示:从混乱的自定义主题中恢复
如果需要,可以通过在虚拟控制台中执行上述命令(例如 Ctrl+Alt+F3)切换回默认主题
gsettings set
(无需启动图形会话)。