「LXDM」- 主题开发

  CREATED BY JENKINSBOT

LXDM wiki 上关于主题开发的内容比较少,只有默认主题中的gtkrcgreeter.ui文件的简单介绍。

相关的文件

LXDM中的主题/usr/share/lxdm/themes下。下面是/usr/share/lxdm文件夹的介绍(其中省略了一些无关的图片文件):
.
├── config.ui
├── lxdm.glade
└── themes

└── Industrial
├── greeter-gtk3.ui

├── greeter.ui

├── gtk.css

├── gtkrc

├── index.theme

└── imgs

config.ui: 配置工具lxdm-config的界面布局文件
lxdm.glade: 没有找到相关的说明,根据内容猜测,可能是备用(设置的主题未找到)的布局文件。
themes: 用于存放所有的主题。
Industrial: 某个主题的目录,包含了主题相关的文件。
greeter-gtk3.ui: 主界面的布局文件。针对GTK+ 3
greeter.ui: 主界面的布局文件。针对GTK+ 2
gtk.css: 样式表,定义了一些样式
gtkrc: 包含了样式定义和控件创建命令
index.theme: 主题描述说明信息
imgs: 图片文件

greeter.ui

https://wiki.lxde.org/en/Greeter.ui

greeter.ui文件定义了LXDM界面的布局及其包含的小部件。

gtkrc

https://wiki.lxde.org/en/Gtkrc

gtkrc 文件由两部分组成:
1)样式定义
2)gtk小部件创建命令

样式定义

第一个部分的样式,描述了LXDM如何绘制背景。通过修改file=attribute来修改背景图:

style "back"
{
	engine "pixmap"
	{
		image
		{
			function = FLAT_BOX
			shadow=NONE
			state = NORMAL
			file="wave.svg"
			stretch=TRUE
			detail = "base"
		}
	}
}

本小节,通过描述time显示格式登录/密码prompt来定义time和prompt的样式(在greeter.ui文件中建立为对象):

# 编辑fg[normal]=attribute来更改相应的文本颜色。
# 编辑font_name=attribute来更改字体/大小

style "time"
{
	fg[NORMAL]="#ffffff"
	font_name="Sans 12"
}

style "prompt"
{
	fg[NORMAL]="#000000"
	font_name="Sans Bold 14"
}

本小节,定义底部event bar的样式,并描述sessions, language, exit功能的格式。编辑font_name=property来更改为sessions, language, keyboard layout, exit的字体及大小。编辑fg[NORMAL]=property来更改这些元素的显示文本的颜色。 image元素属性file=shade.png是一个完全透明的图像。不建议改变它,除非它适合一些特定的目的。

# Normally this won't paint an invisible event box, but we did some hacks in greeter.c.
style "bottom"
{
	font_name="Sans 12"
	fg[NORMAL] = "#9E9D9B"
	engine "pixmap"
	{
		image
		{
			function = FLAT_BOX
			file="shade.png"
			stretch=TRUE
			detail="eventbox"
		}
	}
}

gtk小部件创建命令

这个部分中,创建小控件,并使用上述的样式:

widget "lxdm" style "back"
widget "lxdm.*.time" style "time"
widget "lxdm.*.prompt" style "prompt"
widget "lxdm.*.bottom_pane" style "bottom"
widget_class "GtkWindow.*.GtkEventBox.*.<GtkLabel>" style "bottom"