自定义 Gnome 登录窗口主题

摘要:很多人(包括我)经常取笑 Ubuntu 的默认主题叫做“屎黄色的 Ubuntu”,孰不知 Ubuntu 的主题也可以很好看。本文就教您如何修改 Ubuntu 默认 Gnome 桌面的登录主题。本文适用于那些喜欢美化操作系统的 Linuxer,尤其是那些希望通过美化系统讨女孩子欢心的 Linuxer。

Gnome 登录窗口截图(如果您无法看到此图,可能因为您无法连接国外网站)

常看我博客的读者会知道,我的很多文章都起源于讨女孩子喜欢的实际需要,这篇文章也是源起于此。我只是想把我和女友的照片放到登录屏幕上,发现只设置为用户头像显示的太小了,于是就自己搞了一个 Gnome 的登录窗口主题(如右图所示),我家希希看了以后相当 happy。

其实自己做一个 Gnome 的登录主题非常简单,主要包括以下几个步骤:

1. 准备好一张背景图片和一个选项按钮图片

背景图片的制作才是整个过程中最难的地方。如果 Gimp 技术好,可以做出非常漂亮的背景。当然,像我这样的图片处理小白也不是没有办法,Google 的 Picasa for Linux 就是非常好的工具,我所用的背景图片就是用 Picasa 对照片进行简单处理得来的。至于 Picasa 怎么用?就超出本文的范畴了,相信仔细探索一下 Picasa 的选项,整合几张照片不是很困难的事情。一定要记住导出的图片应该跟屏幕分辨率大小相当,那样图片才不会变形。

选项按钮图片可以用自己做的矢量 svg 图形,或者只使用按钮,或者使用我提供的模板主题中的 options.svg。

2. 添加几个脚本文件

假设您已经做好的背景图片叫做 nju.jpg,选项按钮图片叫做 options.svg,那么您至少应该再添加两个脚本:nju.xml 和 GdmGreeterTheme.desktop,内容分别是:

$ more nju.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE greeter SYSTEM "greeter.dtd">
<greeter>
  <item type="pixmap">
    <normal file="nju_love.jpg"/>
    <pos x="0" y="0" width="100%" height="0"/>
  </item>

  <item type="rect">
    <normal color="#FFFFFF" alpha="0.5"/>
    <!-- Input box postion -->
    <pos anchor="c" x="25%" y="80%" width="box" height="box"/>
    <box orientation="vertical" min-width="360" xpadding="30" ypadding="20" spacing="10">
      <item type="label">
        <pos anchor="n" x="50%"/>
        <normal color="#000000" font="Sans 16"/>
    <!-- Stock label for: Welcome to %h -->
    <stock type="welcome-label"/>
      </item>
      <item type="label" id="pam-prompt">
        <pos anchor="nw" x="10%"/>
        <normal color="#000000" font="Sans 12"/>
    <!-- Stock label for: Username: -->
    <stock type="username-label"/>
      </item>
      <item type="rect">
    <normal color="#000000"/>
        <pos anchor="n" x="50%" height="24" width="80%"/>
    <fixed>
      <item type="entry" id="user-pw-entry">
            <normal color="#000000" font="Sans 12"/>
            <pos anchor="nw" x="1" y="1" height="-2" width="-2"/>
      </item>
    </fixed>
      </item>
      <item type="label" id="pam-message">
        <pos anchor="n" x="50%"/>
        <normal color="#000000" font="Sans 12" alpha="0.5"/>
    <text></text>
      </item>
      <item type="label" id="pam-error">
        <pos anchor="n" x="50%"/>
        <normal color="#000000" font="Sans 12" alpha="0.5"/>
        <text></text>
      </item>
      <item type="label" id="caps-lock-warning">
        <pos anchor="n" x="50%" y="100%"/>
        <normal color="#FF0000" font="Sans 12" alpha="0.5"/>
    <stock type="caps-lock-warning"/>
      </item>
      <item type="rect">
    <pos x="90%" y="0"/>
    <fixed>
          <!-- Option button -->
          <item type="svg" button="true" id="options_button">
            <normal file="options.svg" alpha="0.51"/>
            <prelight file="options.svg" alpha="1.0"/>
            <pos x="19" y="-28" width="40" height="40"/>
          </item>
    </fixed>
      </item>
      </box>
  </item>
</greeter>

$ more GdmGreeterTheme.desktop

[GdmGreeterTheme]
Greeter=nju.xml
Name=NJU
Description=Nanjing University
Author=Solrex Yang
Screenshot=screenshot.png
Copyright=

上面代码中最关键的几点是:一、在 nju.xml 中,我们给出了背景图片的文件名 nju.jpg,选项按钮 options.svg 和登录窗口中登录框的位置和内容;二、在 GdmGreeterTheme.desktop 我们给出了登录窗口主题 xml 定义文件的文件名 nju.xml 和缩略图 screenshot.png。

3. 测试登录窗口主题

假设我们所有的文件都在 nju 目录下,那么我们就可以使用 gdmthemetester 来测试我们的主题能否显示正常了(Ubuntu 下需要先用 sudo apt-get install xnest 安装 xnest 软件包),然后根据显示情况调整登录框的位置。并且可以用截图工具截到屏幕截图 screenshot.png。

$ ls
nju
$ ls nju
GdmGreeterTheme.desktop  nju.jpg  nju.xml  options.svg
$ export XNESTSIZE=1024x768
$ gdmthemetester console nju

4. 安装登录窗口主题

我们已经测试过窗口主题,获得了所有文件,就可以将制作的窗口主题文件打包并安装了。

$ ls nju
GdmGreeterTheme.desktop  nju.jpg  nju.xml  options.svg  screenshot.png
$ tar -czvf nju.tar.gz nju

安装过程可以通过图形界面来做:System->Administration->Login Window->Local,然后将做好的安装包 nju.tar.gz 拖到 theme 选择窗口里,安装然后并在前面复选框中选择启动时使用该 theme 即可。

综上所述,可以看到写一个 Gnome 登录主题是非常简单的事情,难就难在怎么设计编排各个元素的位置。为了解更多的 theme 选项,读者可以自行去查看 Ubuntu 自带 theme 的源代码,在 /usr/share/gdm/themes/ 目录下。另外,在我的共享目录 http://share.solrex.cn/misc/nju.tar.gz 可以下载到本文中提供的模板主题。

分类: Linux 标签: , , , ,
  1. 小黑
    2008年11月18日04:14 | #1

    赞一个 图片很好看!
    google reader更新的不够快啊, 我是从space发现你的新博文的.

  2. 2008年11月21日02:20 | #2

    保卫南大校门大游行~

  3. Solrex Yang
    2008年11月18日11:08 | #3

    @小黑
    呵呵 Google Reader 是抓取这个站点,而 MSN 是推送 Space 的文章,自然快啦。
    你小子最近在我这评论多了些呀,怎么,不忙了?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
说明:点击回复/引用, 会发邮件给该用户, 请慎用; 填写非真实电邮地址, 评论可能会被自动过滤, 无法及时显示, 不要责怪我. 卡内基梅隆大学的 reCAPTCHA 计划使用验证码帮助辨认古老典籍扫描时无法识别的文字,输入验证码的同时,您也为保存人类知识做了一分贡献,谢谢!