суббота, 6 января 2007 г.

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

Какие бы там красивости и удобства не добавляли создатели 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/

2 комментария:

Анонимный комментирует...

по лицу видно что пендальфа за xdm били часто и больно..

Анонимный комментирует...

slackware и aptitude, брешеш