如何创建GDM主题

这篇向导提供了关于创建GDM主题的基本信息。

GDM主题的组成

一个GDM主题的基本组成有:

  • 一个背景图片
  • 一个将要在GDM配置中显示的屏幕截图
  • Icons (图标栏上的图片)
  • 一个xml文件,主题实际上在这里被定义。此文件包括对框架、图片、登录框、大写锁定警告画面、背景、图标、多语言字幕的声明等。
  • GdmGreeterTheme.desktop文件,并非是真正的.desktop文件,该文件主要包含了xml文件名、截图名和其它一些将要在GDM配置屏中显示的信息。

创建自己的主题

通常从一个已经存在的主题做起是简便的,而不是从头做起。一般来讲,第一个被改变的项目是背景图片。背景图片必须至少和屏幕分辨率一样大。为了使主题适合其它用户,使用至少1600x1200像素的图片是很不错的想法,因为甚至在高分辨率的屏幕上它们同样能很好的显示。一个小的图片也可以被使用,但是当被扩展的时候它将丢失质量。图片必须被放在主题目录中,并且在xml文件中做如下申报:

<item type="pixmap">
<normal file="background.jpg"/>
<pos x="0" y="0" width="100%" height="0"/>
</item>

接下来,我们需要重新放置自己的提示菜单、标签以及图标,以便和我们的背景图片相匹配。尽管我们可以使它全透明,但是只有一个放置在中心的登录框也许并不总是最好的选择。
我们可以分别用下面的标识来定义图片、矩形框以及标签:

<item type="pixmap">
<item type="rect">
<item type="label">

使用item标识,通过在其中添加id=同样可以指定选择按钮的位置、系统消息、登录屏幕等。 我所知道的所有GDM系统标识有:

<item type="rect" id="language_button" button="true">
<item type="rect" id="session_button" button="true">
<item type="rect" id="system_button" button="true">
<item type="rect" id="disconnect_button" button="true">
<item type="label" id="clock">
<item type="rect" id="caps-lock-warning">
<item type="rect" id="timed-rect">
<item type="label" id="timed-label">
<item type="label" id="pam-prompt">
<item type="entry" id="user-pw-entry">
<item type="label" id="pam-message">
<item type="label" id="pam-error">

在每个item部分使用pos标识来定义它的x,y坐标并确保它看起来和我们的背景图片相协调。最后,xml文件必须在 GdmGreeterTheme.desktop文件中做如下申报:

Greeter=theme.xml

抓取自己的GDM屏幕

一旦完成了自己的杰作,我们将需要一张屏幕截图。这个地方有一点点技巧,当我们已经退出登录并且没有Gimp或者其它任何图形化屏幕抓图程序的入口。
最好的办法是创建一个能从文字控制台切换到图形屏幕并且自动生成图片的小脚本。可以通过在控制台上输入下面的命令创建这个脚本:

echo "chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-shot.png" > /tmp/capture[[TableOfContents]]

注意: 这里假定登录屏幕是在VT7,也就是说按下CTRL+ALT+F7来切换到图形屏幕
现在退出登录到GDM屏幕并且按下CTRL+ALT+F1切换到文字控制台。使用root登录并且键入 sh /tmp/capture。屏幕将切换到GDM,5秒钟后将听到一声BEEP。如果像预期的那样,屏幕截图将被放在/tmp/gdm-shot.png
注意到importImageMagick软件包的一部分。
如果已经安装了xnest,同样可以使用gdmthemetester。

现在把屏幕截图放入主题目录中,并且在GdmGreeterTheme.desktop文件中对它做一个参照,添加作者、姓名、描述以及版权块如下:

[GdmGreeterTheme]
Greeter=theme.xml
Name=Coliseo
Description=Il Coliseo, night shot by http://julian.coccia.com
Author=Julian Coccia
Screenshot=Coliseo.jpg
Copyright=Copyright (C) 2003, Julian Coccia

更新的GDM屏幕抓图

一个更简单的抓取GDM屏幕的方法如下:

打开一个终端并输入这些命令(假定还没有安装xnest):

sudo apt-get install xnest
gdmflexiserver --xnest

这将打开一个新窗口并显示GDM登录屏幕(必须首先制作主题tar包并安装在登录屏幕管理器中,如下所示:Menu>System>Administration>Login Window>Local(tab)>+Add,选择新制作的主题tar包,然后在列表中选中并"close")。

现在点击"PrtScr"按钮并保存屏幕截图。在GIMP或者其它喜欢的图片编辑器中打开新创建的屏幕截图并将它压缩到188x140。

注意: 这只在使用Ubuntu 7.10 Gutsy Gibbon中做了测试,所以不确定能否在其它Linux上工作。

完成

最后所需要做的是用 tar -zcf MyTheme.tar.gz MyThemeDir 制作一个tar包。现在它可以在任何计算机上从GDM配置屏幕中方便地被安装。

Previous chapter: Gtk+ Themes

Back to Tutorial start page

Next chapter: Metacity Themes

Attic/GnomeArt/Tutorials/GdmThemesZhCN (last edited 2013-11-27 14:33:52 by WilliamJonMcCann)