diesel
2008-01-16
Какие бы там красивости и удобства не добавляли создатели KDE и Gnome, поигравшись с "дружелюбными" интерфейсами чаще всего возвращаюсь к использованию "любимого Windows Manager'а". Всё равно большая часть софта, который запускается каждый день, относительно DE-независима, а зачастую не требует наличия Х-ов вообще.
Со времен Slackware привык запускать Х-ы через startx, только тогда когда это надо. Потом купил более быстрый компьютер, Х-ы перестали напрягать машину и startx стала первой командой после логина. Поэтому когда во время очередной установки KDE установился kdm, я не стал возражать. Другое дело что время старта самого kdm достаточно ощутимое, а от него требуется не так много - авторизировать и запустить дефолтный WM :) Поэтому вспомнил про xdm - по-умолчанию, он как раз и умеет авторизировать и запускать dm, да и не требует ничего кроме Х-ов, поэтому запускается (даже на относительно слабых машинах) гораздо быстрее. Правда сам xdm по-умолчанию выглядит достаточно убого, и немного "разукрасить" его не помешает. Вот что делал я:
aptitude install xdm
Если в системе уже установлен gdm, kdm etc. то попросят выбрать dm запускаемый по-умолчанию. Выбираем xdm.
cd /etc/alternatives unlink x-session-manager ln -s /usr/bin/startfluxbox /etc/alternatives/x-session-manager
Это не есть хорошая идея, если системой пользуются несколько человек и они предпочитают другой WM/DE.
После этого можно перезагрузиться и убедиться, что уже для авторизации запускается xdm.
Во-первых, бэкап текущих настроек. Если что-то пойдет не так, то всегда можно вернуть, как было :)
sudo cp -r /etc/X11/xdm /root/
(не знаю как кто - я в подобных ситуациях копирую настройки в /root/ - надо же этот каталог хоть для чего-то использовать).
Файлы конфигурации xdm находятся в /etc/X11/xdm. Редактироваться будут: Xresources - определяет внешний вид самого; Xsetup - скрипт в котором можно запустить чего-нить при старте xdm; Xstartup - скрипт запускаемый после логина, перед стартом WM.
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
#!/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`
#!/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/