「GTK」- 主题 | Theme

因为 GTK 3 的主题不紧凑,按钮、标题栏太宽,太占空间,所以尝试着定制 GTK 3 的主题。

相关的文章及手册

# 首先,入门文章

Installing, Obtaining, and Making GTK Themes

Making GTK3 themes – Part 1: Basics

Tutorial for making GTK3 themes

# 然后,官方手册

GNOME DEVELOPER – https://developer.gnome.org

(1)GTK+ CSS Overview
(2)Widget Gallery
(3)GTK+ CSS Properties

手册(1)(2)(3)用到的频率比较高,尤其是(2)(3)会经常翻阅。

相关的开发工具

# Oomox

Customize And Create Your Own GTK2, GTK3 Themes
Oomox GitHub Repository

如何预览自己的主题?

在创建主题时,修改文件并测试效果,然后再调整代码会非常有用。这就需要一些类似于”主题浏览器“的工具:

GTK+ Change Theme

此程序可以更改 GTK 主题,并允许开发人员预览主题。该程序由一个包含许多小部件的窗口组成,从而为主题提供完整的预览。

要安装此程序,使用“apt-get install gtk-chtheme”安装。

但只能预览 GTK+ 2 的主题。

LXappearance

此程序可以更改主题,图标和字体。

但只能预览 GTK+ 2 的主题。

构建

主题下载获取及安装

到哪里下载主题?

(1)、我经常使用的是GNOME-LOOK.ORG网站,里面包含了很多 GTK 的主题。除此之外还给出了预览和安装方法等等。
(2)、还有一些其他的站点、博客文章,这就要靠你自己去搜索了。

在一般情况下,一个主题中即包含了 GTK+2 的主题,也包含了 GTK+3 的主题,它的目录结构通常类似于:

theme-name
├── gtk-2.0
│	└── ...
└── gtk-3.0
	└── ...

某些主题只提供了 GTK+2 或者 GTK+3 的支持,可以通过查看目录或者手册中的描述进行甄别。

主题的保存路径

Gnome-Look/SGFC – Simple Grey Flat Compact Theme
Where are stored GTK themes?

/usr/share/themes/

$HOME/.themes/
用户主题目录。建议将它们保存在$HOME/.themes 中,然后安装 gnome-shell-extension-user-theme,以便能够使用 gnome-tweak-tool 修改 gtk3 主题。

我目前使用了该目录,而没有使用$HOME/.local/share/themes/ 目录,因为那个目录中的主题虽然可以显示,但是设置主体后没有生效。

$HOME/.local/share/themes/
这也是用户的主题目录。

主题加载路径

以 GTK+3 为例,当应用启动时,将会加载确定的文件:

  • 首先,加载公共配置文件:如果存在,会尝试加载$XDG_CONFIG_HOME/gtk-3.0/gtk.css 文件,这通常是~/.config/gtk-3.0/gtk.css 文件;
  • 然后,加载用户主题:尝试加载~/.themes/<name>/gtk-3.0/gtk.css 文件,其中 <name> 代表了当前主题的名字;
  • 最后,加载系统主题:尝试加载$datadir/share/themes/<name>/gtk-3.0/gtk.css,这通常是 /usr/share/themes/name/gtk-3.0/gtk.css 文件,其中 <name> 代表了当前主题的名字;

这表示,对于同名主题,~/.themes/ 的主题会覆盖 /usr/share/themes/ 中的同名主题。另外,/usr/share/themes/ 可以被所有用户使用,而~/.themes 中的主题只能被当前用户使用。

修改主题

可以通过 lxappearance 或者 gnome-tweak-tool 来修改主题。

Where is Gtk+ default theme saved

应用

我们的个人经验

针对 GTK+ 2 的主题,我们都很喜欢,我们比较偏向紧凑风格。

但是 GTK+ 3 就不一样了,它按钮、组件都很大,不紧凑,不经典。所以,我主要开发的是 GTK+ 3 主题。

我们在 Eclipse 修改主题的 CSS 文件,然后使用 gtk3-widget-factory(1)进行预览。不过每次修改后,都要重启 gtk3-widget-factory 进行预览,这个动作就像浏览器里的刷新,但是它又没有”重绘“功能(考虑改进以下,检测文件系统变化(inotify),然后自动重启)。

参考

Installing, Obtaining, and Making GTK Themes
Making GTK3 themes – Part 1: Basics
Tutorial for making GTK3 themes
Gtk-Theming-Guide/creating_gtk_themes.md at master · surajmandalcell/Gtk-Theming-Guide

http://www.devpy.me/10-of-the-best-linux-themes-compared/
http://satya164.deviantart.com/art/Numix-GTK3-theme-360223962
https://www.maketecheasier.com/gtk-themes-for-linux/
https://www.gnome-look.org/p/1170869/
http://www.webhostingsearch.com/articles/top-18-linux-gtk-themes.php