有很多很棒的 gtk 主题适用于 unity/gtk。但是,它们中只有极少数支持 unity-greeter。我想研究它们,但是我找不到有关如何操作的(官方)文档。我尝试对gtk.css
Adwaita 主题中的相应部分进行逆向工程,并且我能够完成大部分工作,但是我无法对一些特殊小部件进行主题化。
长话短说:是否有文档可以说明如何为 unity-greeter 设置主题?
只是为了澄清一下:我指的是这个文件https://github.com/umibps/KABURAGI/blob/master/share/themes/Moe-Pink3/gtk-3.0/apps/unity-greeter.css~
答案1
我没有找到文档,但我找到了源代码;)
apt-get source unity-greeter
tar xf unity-greeter_*.tar.xz
cd unity-greeter
正如文件名称gtk.css
所示,这是一个包含类定义的 CSS 文件。让我们开始grep
% grep -r 'add_class' *
Binary file deb/usr/sbin/unity-greeter matches
Binary file dev/usr/sbin/unity-greeter matches
unity-greeter-15.10.1/tests/unity-greeter.vala: ctx.add_class ("lightdm");
unity-greeter-15.10.1/src/toggle-box.vala: selected_button.get_style_context ().add_class ("selected");
unity-greeter-15.10.1/src/toggle-box.vala: item.get_style_context ().add_class ("toggle-button");
unity-greeter-15.10.1/src/unity-greeter.vala: ctx.add_class ("lightdm");
unity-greeter-15.10.1/src/prompt-box.vala: option_button.get_style_context ().add_class ("option-button");
unity-greeter-15.10.1/src/prompt-box.vala: combo.get_style_context ().add_class ("lightdm-combo");
unity-greeter-15.10.1/src/prompt-box.vala: combo.get_child ().get_style_context ().add_class ("lightdm-combo");
或更好
% grep -rlI 'add_class' * | xargs -I {} awk -F\" '/add_class/ {print $2}' {} | sort -u
lightdm
lightdm-combo
option-button
selected
toggle-button
现在我们有了支持的类。其他所有内容(例如、background-image
等等)都是 CSS 定义。background-color
border-color
深入源代码并学习CSS。那是最好的文档。
我的答案的先前版本可能对进一步的读者有帮助
您需要的只是/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
。编辑此文件后执行:
glib-compile-schemas /usr/share/glib-2.0/schemas/
每个key
标签都有一个summary
标签来描述该键的作用。以下是一些示例:
背景图像
<key name="background" type="s"> <default>'/usr/share/backgrounds/warty-final-ubuntu.png'</default> <summary>Background file to use, either an image path or a color (e.g. #772953)</summary> </key>
type="s"
意思是,我们需要一个标签字符串default
- 该值是图像文件的绝对路径
背景颜色
<key name="background-color" type="s"> <default>'#2C001E'</default> <summary>Background color (e.g. #772953), set before wallpaper is seen</summary> </key>
type="s"
意思是,我们需要一个标签字符串default
- 该值是颜色代码
显示主机名
<key name="show-hostname" type="b"> <default>true</default> <summary>Whether to show the hostname in the menubar</summary> </key>
type="b"
意思是,我们需要一个布尔值作为标签default
- 有效值:true/false
分辨率设置
<key name="xft-dpi" type="d"> <default>96</default> <summary>Resolution for Xft in dots per inch</summary> </key>
type="d"
意思是,我们需要标签的数值default
- 用于
xrdb -query | grep dpi
确定正确的值或使用值来查看行为
反复试验和阅读源代码是最好的文档=)
答案2
没有关于 Unity Greeter 主题的文档。Adwaita CSS 和 Unity Greeter 源代码是查看可设置主题的最佳位置。