From: http://bbs.chinaunix.net/thread-3612960-1-1.html
筆記:如何美化本地主機 x11/xdm 的登入畫面?
本文版本 1.1
日期 2011 Oct 30
本文適用範圍:
僅限於啟動本地主機的 X server,沒有提及登入遠端 X server
僅介紹涉及 xdm 登入畫面有關設定檔案,沒有完整描述 xdm 所有的功能設定
筆記形式,僅記錄過程,不太深入解釋每一步的意義
參考資料
man xdm
基本要求:
已安裝好 Xorg
安裝所需要的 ports:
安裝 x11/xdm
- cd /usr/ports/x11/xdm
- su root
- make install
- make clean
- exit
- cd /usr/ports/x11/xconsole
- su root
- make install
- make clean
- exit
- cd /usr/ports/graphics/xli
- su root
- make install
- make clean
- exit
1. /etc/tty -> 引渡每次開 FreeBSD 是否使用 xdm
2. /usr/local/lib/X11/xdm/xdm-config -> xdm 默認總配置檔案,這個檔案詳細分配 xdm 內每一個階段之不同配置檔案位置
3. /usr/local/lib/X11/xdm/Xsetup_0 -> 設定每次 xdm 登入本地 X Server 畫面必需執行的動作
4. /usr/local/lib/X11/xdm/Xresources -> 配設 xdm 登入畫面的客制設定
因此,想改變 xdm 登入畫面需要更改以上 4 個配置檔案
產生一個專用目錄
- su root
- mkdir -p /usr/local/custom_etc/xdm
- mkdir /usr/local/custom_etc/xdm/wallpapers
- mkdir /usr/local/custom_etc/xdm/pixmaps
- exit
拷貝一份默認配置檔案入專用目錄,準備修改
- su root
- cd /usr/local/custom_etc/xdm
- cp /usr/local/lib/X11/xdm/xdm-config .
- cp /usr/local/lib/X11/xdm/Xsetup_0 .
- cp /usr/local/lib/X11/xdm/Xresources .
- exit
FreeBSD logo icon (.xpm 格式) 可以從網上抓取,然後拷貝為 /usr/local/custom_etc/xdm/pixmaps/freebsd_icon.xpm
拷貝 FreeBSD wallpaper 入專用目錄,以備 xdm 使用
Wallpaper (.jpg 格式) 更換你喜歡的,然後拷貝為 /usr/local/custom_etc/xdm/wallpapers/freebsd_wallpaper.jpg
改名 xdm-config 為 custom-xdm-config
- su root
- cd /usr/local/custom_etc/xdm
- mv xdm-config custom-xdm-config
- exit
這個配置檔案內容,主要是指示 xdm 到那裡找相對應的檔案處理特定的環節,由於我更動了客制配置檔案的位置,因此修改的內容主要是改動對應的路徑,以下是這個檔案的全文:(其中以 ! 為首的行被視為註解)
- !
- DisplayManager.daemonMode: false
- !
- DisplayManager*userPath: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
- DisplayManager.daemonMode: false
- !
- DisplayManager*userPath: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
- !
- DisplayManager*systemPath: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
- !
- DisplayManager*systemShell: /bin/sh
- !
- DisplayManager*failsafeClient: /usr/local/bin/xterm
- !
- DisplayManager.authDir: /var/lib/xdm
- DisplayManager.errorLogFile: /var/log/xdm.log
- DisplayManager.pidFile: /var/run/xdm.pid
- DisplayManager.keyFile: /usr/local/lib/X11/xdm/xdm-keys
- DisplayManager.servers: /usr/local/lib/X11/xdm/Xservers
- DisplayManager.accessFile: /usr/local/lib/X11/xdm/Xaccess
- DisplayManager*resources: /usr/local/custom_etc/xdm/Xresources
- DisplayManager.willing: su -m nobody -c /usr/local/lib/X11/xdm/Xwilling
- !
- ! All displays should use authorization, but we cannot be sure
- ! X terminals may not be configured that way, so they will require
- ! individual resource settings.
- DisplayManager._0.authorize: true
- DisplayManager*authorize: false
- !
- DisplayManager*chooser: /usr/local/lib/X11/xdm/chooser
- DisplayManager*startup: /usr/local/lib/X11/xdm/Xstartup
- DisplayManager*session: /usr/local/lib/X11/xdm/Xsession
- DisplayManager*reset: /usr/local/lib/X11/xdm/Xreset
- DisplayManager*authComplain: true
- !
- ! The following three resources set up display :0 as the console.
- DisplayManager._0.setup: /usr/local/custom_etc/xdm/Xsetup_0
- DisplayManager._0.startup: /usr/local/lib/X11/xdm/GiveConsole
- DisplayManager._0.reset: /usr/local/lib/X11/xdm/TakeConsole
- !
- DisplayManager*loginmoveInterval: 10
- !
- ! SECURITY: do not listen for XDMCP or Chooser requests
- ! Comment out this line if you want to manage X terminals with xdm
- DisplayManager.requestPort: 0
這個檔案是指示每次 xdm 都必需要執行的動作,它是一個 sh 手稿命令檔案,如果想替 xdm 改變 wallpaper 便需要修改這個檔案內容。以下是我的 Xsetup_0 全文內容,我指示每次 xdm 都會秀一張指定 wallpaper 和 啟動 xconsole 程式。
- #!/bin/sh
- xconsole -geometry 480x100+0-0 -daemon -notify -verbose -fn fixed -exitOnFail &
- /usr/local/bin/xsetbg -fork '/usr/local/custom_etc/xdm/wallpapers/freebsd_wallpaper.jpg' &
- su root
- cd /usr/local/custom_etc/xdm
- chmod 500 Xsetup_0
- exit
這個檔案是一個標準 X 的資源格式檔案,每次 xdm 都會讀取此檔案,來規範 X 程式的行為。而此檔案重點是規範登入對話盒的外觀和行為。
以下是我的 Xresources 全文內容,每一項目的解釋請自行閱讀 man xdm。我的筆電解像度是 1366x768
注意:xdm 登入對話盒的資源名稱是:xlogin.Login. 為首
- !
- Xcursor.theme: whiteglass
- !
- xlogin.Login.width: 600
- xlogin.Login.height: 200
- xlogin.Login.x: 350
- xlogin.Login.y: 380
- !
- xlogin.Login.foreground: Black
- xlogin.Login.background: Lavender
- xlogin.Login.hiColor: Ghost White
- xlogin.Login.shdColor: Dim Gray
- xlogin.Login.greetColor: Midnight Blue
- xlogin.Login.failColor: Red
- !
- xlogin.Login.face: Sans-12
- xlogin.Login.greetFace: Sans-18:bold:italic
- xlogin.Login.promptFace: Sans-12:bold
- xlogin.Login.failFace: Sans:bold
- !
- xlogin.Login.greeting: FreeBSD 9.0-RC1 Workstation
- xlogin.Login.namePrompt: Login:\040
- xlogin.Login.passwdPrompt: Password:\040
- xlogin.Login.promptColor: Red
- xlogin.Login.changePasswdMessage: Password Change Required
- xlogin.Login.fail: Login incorrect
- xlogin.Login.failTimeout: 10
- xlogin.Login.logoFileName: /usr/local/custom_etc/xdm/pixmaps/freebsd_icon.xpm
- xlogin.Login.borderWidth: 7
- xlogin.Login.logoPadding: 15
- xlogin.Login.useShape: true
- xlogin.Login.frameWidth: 3
- xlogin.Login.innerFramesWidth: 2
- xlogin.Login.sepWidth: 0
- xlogin.Login.allowRootLogin: false
- xlogin.Login.allowNullPasswd: false
- xlogin.Login.echoPasswd: true
- xlogin.Login.translations: #override \
- Ctrl<Key>R: abort-display()\n\
- <Key>F1: set-session-argument(failsafe) finish-field()\n\
- <Key>Delete: delete-character()\n\
- <Key>Left: move-backward-character()\n\
- <Key>Right: move-forward-character()\n\
- <Key>Home: move-to-begining()\n\
- <Key>End: move-to-end()\n\
- Ctrl<Key>KP_Enter: set-session-argument(failsafe) finish-field()\n\
- <Key>KP_Enter: set-session-argument() finish-field()\n\
- Ctrl<Key>Return: set-session-argument(failsafe) finish-field()\n\
- <Key>Return: set-session-argument() finish-field()
- !
- XConsole.text.geometry: 480x100
- XConsole.verbose: true
- XConsole*iconic: true
- XConsole*font: fixed
引渡 FreeBSD 每次開電腦時會啟動 xdm,並且指示 xdm 讀入放置在 /usr/local/custom_etc/xdm/custom-xdm-config 檔案
修改 /etc/tty 中有關 ttyv8 那一行,把這一行修改為以下:
修改前
- #ttyv8 "/usr/local/bin/xdm -nodaemon xterm off secure
- ttyv8 "/usr/local/bin/xdm -config /usr/local/custom_etc/xdm/custom-xdm-config" xterm on secure
現在 FreeBSD 每次開機
1. 啟動 xdm
2. 讀取 /usr/local/custom_etc/xdm/custom-xdm-config 為總配置檔案
3. /usr/local/custom_etc/xdm/custom-xdm-config 引渡 xdm 讀取 /usr/local/custom_etc/xdm 下的 Xsetup_0 和 Xresources
4. xdm 根據 /usr/local/custom_etc/xdm 下的 Xsetup_0 和 Xresources 秀出客制登入畫面
可以和簡陋的 xdm 預設登入畫面說再見!