Rev 133 | Blame | Last modification | View Log | Download | RSS feed
#!/bin/bash
#
# Urs Beyerle, PSI
#
### dialog or xdialog?
DIALOG="dialog"
XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT
[ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
### definitions
TITLE="PSI Menu"
MENU_TITLE="PSI Menu"
MENU_1="Xterm"
EXEC_1="xterm"
MENU_2="Web Browser (firefox)"
EXEC_2="firefox"
MENU_3="NX Client (connect to LLCs)"
EXEC_3="nxclient"
MENU_4="Windows Terminal Server"
EXEC_4="rdesktop $RDESKTOP_OPT -d PSICH -u win_username -a 24 -x lan -r sound:local winterm1"
MENU_5="Windows Terminal Server (full screen)"
EXEC_5="rdesktop $RDESKTOP_OPT -d PSICH -f -u win_username -a 24 -x lan -r sound:local winterm1"
MENU_6="Hardisk Partition Tool (gparted)"
EXEC_6="gparted"
MENU_7="Change Keyboard Layout"
EXEC_7="sudo system-config-keyboard"
MENU_8="Configure Display"
EXEC_8="sudo psi-config-display"
MENU_9="Configure Soundcard"
EXEC_9="sudo system-config-soundcard"
MENU_x="Restart X-Server (will kill all your jobs)"
MENU_down="Reboot/Shutdown"
MENU_quit="Quit"
# tmpdir
TMPDIR=/tmp/psi-menu.$$
TMP=$TMPDIR/dialog
mkdir -p $TMPDIR
### functions
shutdown ()
{
$DIALOG --title "$TITLE" --radiolist "Reboot or shutdown the PC?" 0 0 3 poweroff "" on reboot "" off 2>$TMP
ACTION=$(cat $TMP)
if [ $ACTION ]; then
$ACTION
exit 1
fi
}
# not really restart x, but will kill all processes of localuser
# (including windwos manager and autologin)
restartx ()
{
( sleep 2; rm -f /tmp/.X0-lock; sudo psi-restart-xserver; rm -f /tmp/.X0-lock ) &
ps wwaux | grep "^l_psi" | awk '{ print $2 }' | while read pid; do kill -9 $pid; done
}
### show menue
while true; do
$DIALOG --title "$TITLE" \
--menu "$MENU_TITLE" 0 0 12\
1 "$MENU_1"\
2 "$MENU_2"\
3 "$MENU_3" \
4 "$MENU_4" \
5 "$MENU_5" \
6 "$MENU_6" \
7 "$MENU_7" \
8 "$MENU_8" \
9 "$MENU_9" \
10 "$MENU_x" \
11 "$MENU_down" \
12 "$MENU_quit" \
2> $TMP
[ $? -ne 0 ] && break
CHOICE=$(cat $TMP)
case "$CHOICE" in
1)
(sleep 0.5; $EXEC_1) &
;;
2)
(sleep 0.5; $EXEC_2) &
;;
3)
(sleep 0.5; $EXEC_3) &
;;
4)
(sleep 0.5; $EXEC_4) &
;;
5)
(sleep 0.5; $EXEC_5) &
;;
6)
(sleep 0.5; $EXEC_6) &
;;
7)
(sleep 0.5; $EXEC_7) &
;;
8)
(sleep 0.5; $EXEC_8) &
;;
9)
(sleep 0.5; $EXEC_9) &
;;
10)
restartx
;;
11)
shutdown || break
;;
12)
break
;;
esac
done