Как я конфигурировал xdm

diesel

2008-01-16

Какие бы там красивости и удобства не добавляли создатели KDE и Gnome, поигравшись с "дружелюбными" интерфейсами чаще всего возвращаюсь к использованию "любимого Windows Manager'а". Всё равно большая часть софта, который запускается каждый день, относительно DE-независима, а зачастую не требует наличия Х-ов вообще.

Со времен Slackware привык запускать Х-ы через startx, только тогда когда это надо. Потом купил более быстрый компьютер, Х-ы перестали напрягать машину и startx стала первой командой после логина. Поэтому когда во время очередной установки KDE установился kdm, я не стал возражать. Другое дело что время старта самого kdm достаточно ощутимое, а от него требуется не так много - авторизировать и запустить дефолтный WM :) Поэтому вспомнил про xdm - по-умолчанию, он как раз и умеет авторизировать и запускать dm, да и не требует ничего кроме Х-ов, поэтому запускается (даже на относительно слабых машинах) гораздо быстрее. Правда сам xdm по-умолчанию выглядит достаточно убого, и немного "разукрасить" его не помешает. Вот что делал я:

  1. Установка:
     aptitude install xdm 

    Если в системе уже установлен gdm, kdm etc. то попросят выбрать dm запускаемый по-умолчанию. Выбираем xdm.

  2. По-умолчанию, xdm запускает общеситемный x-session-mananager. Выбрать в качестве альтернативы x-session-manager'а startfluxbox с помощью update-alternatives у меня не получилось, поэтому просто сменил линк:
    cd /etc/alternatives
    unlink x-session-manager
    ln -s /usr/bin/startfluxbox /etc/alternatives/x-session-manager
    

    Это не есть хорошая идея, если системой пользуются несколько человек и они предпочитают другой WM/DE.

    После этого можно перезагрузиться и убедиться, что уже для авторизации запускается xdm.

  3. Далее приступаем к украшению:

    Во-первых, бэкап текущих настроек. Если что-то пойдет не так, то всегда можно вернуть, как было :)

    sudo cp -r /etc/X11/xdm /root/ 

    (не знаю как кто - я в подобных ситуациях копирую настройки в /root/ - надо же этот каталог хоть для чего-то использовать).

    Файлы конфигурации xdm находятся в /etc/X11/xdm. Редактироваться будут: Xresources - определяет внешний вид самого; Xsetup - скрипт в котором можно запустить чего-нить при старте xdm; Xstartup - скрипт запускаемый после логина, перед стартом WM.

    Xresorces

    xlogin*login.translations: #override\
    CtrlR: abort-display()\n\
    Delete: delete-character()\n\
    F1: set-session-argument(failsafe) finish-field()\n\
    CtrlReturn: set-session-argument(failsafe) finish-field()\n\
    Return: set-session-argument() finish-field()
    Left: move-backward-character()\n\
    Right: move-forward-character()\n\
    Home: move-to-begining()\n\
    End: move-to-end()\n\
    KP_Enter: set-session-argument() finish-field()
    
    

    xlogin*greeting: Wellcome to my Debian box:

    xlogin*login.x: 780 xlogin*login.y: 598

    xlogin*greetFont: snap xlogin*font: snap xlogin*promptFont: snap xlogin*failFont: snap

    xlogin*background: #000000 xlogin*foreground: #ffffff

    xlogin*borderWidth:0 xlogin*frameWidth: 0 xlogin*innerFramesWidth:0 xlogin*shdColor: #000000 xlogin*hiColor: #000000

    xlogin.Login.foreground: #ffffff xlogin.Login.promptColor: #ffffff xlogin*greetColor: #ffffff xlogin*failColor: red

    xlogin*borderWidth: 0 xlogin*borderColor: #000000

    Xsetup

    #!/bin/sh
    #
    # /etc/X11/xdm/Xsetup
    #
    
    

    ### запуск xclock pidfile=/var/run/xclock_0.pid if [ -f $pidfile ]; then # Huh? Abnormally terminated? rm $pidfile fi

    /usr/bin/X11/xclock -geometry '-0-720' -digital -bg '#000000' -fg '#ffffff' -font '-xos4-terminus-bold-r-normal-*-14-*-*-*-*-*-*-*' \ & echo $! > $pidfile &

    ### кнопки reboot & halt pidfile=/var/run/xdmbutton_0.pid if [ -f $pidfile ]; then # Huh? Abnormally terminated? rm $pidfile fi

    HOME=/root /usr/bin/wish -name Powerbox <$pidfile wm geometry . -50-0 tk_setPalette highlightColor blue button .halt -background #000000 -foreground #ffffff -highlightbackground #000000 -borderwidth 0 -text shutdown \ -command {exec /sbin/shutdown -h -P now} button .reboot -background #000000 -foreground #ffffff -highlightbackground #000000 -borderwidth 0 -text reboot \ -command {exec /sbin/shutdown -r now} pack .halt .reboot -side left -fill both EOF echo $! >$pidfile ####установка бэкграунда HOME=/dev/null feh --bg-scale /usr/share/wallpapers/www_creep_ru_0681.jpg &

    echo $! > /var/run/xsetbg.pid wait `cat /var/run/xsetbg.pid`

    Xstartup

    #!/bin/sh
    #
    # This script is run as root after the user logs in. If this script exits with
    # a return code other than 0, the user's session will not be started.
    
    

    PATH="$PATH:/usr/bin/X11" pidfile="/var/run/xclock_0.pid" if [ -f $pidfile ]; then kill -9 `cat $pidfile`; rm -f $pidfile; fi

    pidfile="/var/run/xdmbutton_0.pid" if [ -f $pidfile ]; then kill -9 `cat $pidfile`; rm -f $pidfile; fi

    if [ -e /etc/nologin ]; then # always display the nologin message, if possible if [ -s /etc/nologin ] && which xmessage > /dev/null 2>&1; then xmessage -file /etc/nologin -geometry 640x480 fi if [ "$(id -u)" != "0" ] && \ ! grep -qs '^ignore-nologin' /etc/X11/xdm/xdm.options; then exit 1 fi fi

    # Insert a utmp entry for the session. if grep -qs '^use-sessreg' /etc/X11/xdm/xdm.options \ && which sessreg >/dev/null 2>&1; then exec sessreg -a -l "$DISPLAY" -u /var/run/utmp \ -x /etc/X11/xdm/Xservers "$USER" # NOTREACHED fi

    #remove x-clock exit 0

    Для установки картинки для бэкграунда нужно установить feh (либо другую программу, которая умеет устанавливать бэкграунд), для того чтобы были кнопки shutdown & reboot нужно установить tk8.4.

Бэкграунд:

Использованы куски темы http://themes.freshmeat.net/projects/greyxdm/