调整较新的 GTK3 主题

调整较新的 GTK3 主题

Numix 主题可以通过shimmer-themes软件中心安装获得。它在 Xubuntu 中默认安装。

在 14.04 中,我可以通过直接编辑诸如usr/share/themes/Numix/gtk-3.0/gtk.css或之类的文件来修改主题的某些方面usr/share/themes/Numix/gtk-3.0/gtk-widgets.css

即使在 15.10 中,解决方案如下如何设置自定义文本突出显示颜色可以轻松应用。

但在 16.04 中,同样的方法似乎不可行。我查看了README.md此处开发人员页面中的文件:https://github.com/numixproject/numix-gtk-theme。以下是其中的一些引言:

如果您想破解主题,请确保您有 inotifywait 命令,该命令用于监视和自动构建文件。

如果您更改任何资产,则需要重新生成 gtk.gresource.xml 和 gtk.gresource 文件。您可以使用 grrr 轻松完成此操作。

那么普通用户如何更改 16.04 版 Numix 主题的任何方面?熟悉使用 gtk3 主题scss而不是纯主题的人css可以解释一下该过程吗?

答案1

在阅读了一些关于这个主题的内容,然后重新阅读readme.mdnumix 项目我意识到他们确实解释了如何手动安装并更改其主题。
问题是,这些说明假设您具备很多先决知识 - 基本上就是您是了解 CSS 的 C 开发人员。
我假设您知道 C 等语言的源代码会被编译成二进制可执行文件和/或库文件,并且 SASS/SCSS 是一种预编译器(一种“高级”语言),它会被编译为 CSS,即解释的源代码 - 而不是编译为二进制形式。据我所知,概述如下:

                          +--------------------------------------------------------------+
 +------+                 |  +---------------------+                                     |
 |      |   you need to   |  | CSS files           |         Numix theme                 |
 |SASS  |   "compile"     |  | ordinary text (code)|         i.e. files in               |
 |files |   SASS to CSS   |  |                     |         /usr/share/themes/Numix Daily/gtk-3.0
 |    +------------------------->             <------------------------------------------+----------+
 |      |                 |  +---------------------|                                     |          |
 |      |                 |   +------------------------+                                 |          |
 +------+                 |   | gtk.resource           |                                 |          |
 If you change this       |   | (compiled binary    <-----+                              |          |
 you need to recompile    |   | file)                  |  |                              |          |
 (update the CSS          |   +------------------------+  |                              |          |
                          +--------------------------------------------------------------+          |
 files)                      +----------------------+     |                                         |
                             | GTK library          |     |  +---------------------------+          |
+--------------------+       | (binary library)     |     |  |  GTK and C developer tools|          |
| Application        |       |                      |     |  |  used to recompile        |          |
| e.g. Gnome terminal|       | Configured to use    |     |  |  gtk.gresource            |          |
| Nautilus etc       |       | Numix Theme          |     |  |                           |          |
| that uses GTK      |       |                      |     +----+                         |          |
| library            |       |                      |        |                           |          |
| (binary            |       |                      |        |                           |          |
| executable)        |       |                      |        +---------------------------+          |
+--------------------+       |                      |                                               |
                             |Makes call to         +                                               |
                             |gtk_css_provider_load_from_file() +----------------------------------->
                             |
                             +----------------------+

因此,Numix 主题和我想许多/所有 GTK-3.0 主题都包含二进制资源和 CSS 代码,这些代码由函数调用解析,gtk_css_provider_load_from_file()这似乎是 GTK-3.0 的新增功能。numix
项目建议您仅gtk-gresource在更改任何资产时才需要重新编译。所以我不会为此烦恼 - 除非您真的需要。如果您真的需要,这里有一个GTK 二进制资源构建简介

有用的资源

  • GtkCss 提供程序- 它负责解析 CSS - 它似乎是使 GTK 应用程序能够读取 CSS 的基础。特别是GTK 如何在启动时读取主题的 CSS 代码

应用程序可以通过调用 gtk_css_provider_load_from_file() 并使用 gtk_style_context_add_provider() 或 gtk_style_context_add_provider_for_screen() 添加提供程序来使 GTK+ 解析特定的 CSS 样式表。
此外,初始化 GTK+ 时会读取某些文件。首先,如果文件 $XDG_CONFIG_HOME/gtk-3.0/gtk.css 存在,则加载该文件。
然后,GTK+ 尝试加载 $HOME/.themes/theme-name/gtk-3.0/gtk.css,并返回到 datadir/share/themes/theme-name/gtk-3.0/gtk.css,其中 theme-name 是当前主题的名称(请参阅“gtk-theme-name”设置),datadir 是编译 GTK+ 时配置的前缀,除非被 GTK_DATA_PREFIX 环境变量覆盖。

相关内容