调整更新的GTK3主题

Numix主题可通过安装软件中心的shimmer-themes来实现。 它默认安装在Xubuntu中。

在14.04,我能够通过直接编辑文件来修改主题的某些方面,例如usr/share/themes/Numix/gtk-3.0/gtk.cssusr/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请说明这个程序?

在对该主题进行了一些阅读,然后在numix项目中重新阅读readme.md后,我意识到他们确实解释了如何手动安装和更改主题。
问题是指令假设了许多必备知识 – 基本上你是一个了解CSS的C开发人员。
我假设你知道像C这样的语言的源代码被编译成二进制可执行文件和/或库文件,并且SASS / SCSS是一个预编译器(一种“更高”的语言),它被编译成CSS,这是解释的源代码 – 而不是编译为二进制forms。 据我所知,概述是这样的:

  +--------------------------------------------------------------+ +------+ | +---------------------+ | | | you need to | | CSS files | Numix theme | |SASS | "compile" | | ordinary text (code)| ie 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 | | | eg 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的新增function。
numix项目建议您只需要在更改任何资产时重新编译gtk-gresource 。 所以我不打扰那个 – 除非你真的需要。 如果您真的需要这里是介绍构建GTK二进制资源

有用的资源

  • GtkCssProvider – 它负责解析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环境变量覆盖。