
#!/bin/bash
TIMEOUT=20
TMP="${TMP:-/tmp}"
xinit_path="/etc/X11/xinit"
DEFAULT_WM=`readlink $xinit_path/xinitrc`
DEFAULT_WM="${DEFAULT_WM##*.}"
export DEFAULT_WM
xp="$xinit_path/xinitrc.*"
N=`ls $xp | wc -l`
if (( N <= 1 )); then
# одно WM или 0. Выбора нет
exit
fi
cat >$TMP/cdm.sed <<EOS
1idialog --title "Select WM/DE (TimeOut: $TIMEOUT sec)." \\\\
1i--timeout 20 \\\\
1i--nocancel \\\\
1i--no-kill \\\\
1i--menu "Select" 21 76 10 \\\\
s~.*\.([^/]+)$~"\1" "\1"~
T
s~$~ \\\\~
H
\${
g
s/^\n//
s/(.*)\n("$DEFAULT_WM"[^\n]+)\n(.*)/\2\n\1\n\3/
p
a 2>\$TMP/cdmtemp
}
EOS
CMD=`ls $xp | sed -rnf $TMP/cdm.sed`
eval "$CMD"
DE=`cat $TMP/cdmtemp`
rm -f $TMP/cdm{temp,.sed}
PWD="`pwd`"
cd $xinit_path
if echo "$DE" | sed '${/^timeout$/q77;}'
then
ln -svf xinitrc.$DE xinitrc
fi
cd "$PWD"надоело мне тут DE ручками выбирать... Не gdm-же ставить в самом деле!
UPD: исправлено s/sh/bash/
UPD: добавлен таймаут
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

