我正在制作一个在系统托盘中运行的应用程序,并且我希望能够在顶部面板栏改变颜色时交换图标,这样我可以在面板为白色时显示黑色图标,在面板为黑色时显示白色图标。
为此,我需要弄清楚 Ubuntu Mate 存储该面板的当前颜色的位置。我已经找到了在 Windows 和 OSX 以及常规 Ubuntu 和 Kubuntu 中实现此目的的方法,但当我在sudo find / -mmin 1
更改主题后运行时,似乎唯一相关的更改是,~/.config/dconf/user
但我无法使用 找到颜色dconf Editor
,甚至找不到我已更改为的主题的名称。有什么想法吗?
答案1
在默认配置中,Ubuntu Mate 19.10 中的面板使用系统主题来确定面板颜色,该颜色由存储在两个主题文件夹之一中的 GTK3 主题之一定义:/usr/share/themes
和~/.themes
。
- 用于
dconf read /org/mate/marco/general/theme
获取当前配置的主题。 - 用于
dconf watch /org/mate/marco/general/theme
监视其变化。
但两者都只给出名称,因此您需要在两个文件夹中查找具有匹配名称的主题。
获得主题名称后,您可以解析 CSS 文件中的<theme folder>/<theme name>/gtk-3.0
当前background-color
值.mate-panel-menu-bar
,该值似乎是 Mate 上 GTK3 主题中面板颜色的定义。.mate-panel-menu-bar
中定义的特定 css 文件不一致,颜色本身可能是十六进制值、RGB 值、GTK 函数调用的一部分或 CSS 别名(如@dark_bg_color
在其他 CSS 文件之一中定义的颜色),因此您可能需要解析多个文件才能看到全貌。
当用户更改默认值,并通过将面板属性中的“背景”选项卡从 设置为 来手动设置面板颜色时None (use system theme)
,Solid color
您可以看到以下内容dconf read
:
/org/mate/panel/toplevels/top/background/type
将从none
变为color
/org/mate/panel/toplevels/top/background/color
将获得以格式定义的颜色rgb(#,#,#)
- (例如
rgb(0,0,0)
黑色或rgb(255,255,255)
白色)
- (例如
上述路径的一部分/top/
也可能根据用户为哪个面板设置颜色而改变。在我的例子中,我需要指示器小程序,它是托盘状图标所在的位置,所以我必须使用dconf read /org/mate/panel/objects/indicatorappletcomplete/toplevel-id
(默认为top
)来查看我正在查看哪个面板的颜色。