#!/bin/bash +x
# restartx - restart desktop in KNOPPIX
# (C) Klaus Knopper Mar 2004
# 번역 : 신재훈
# knoppix 한글 메시지 출력을 위한 코드 수정 : 신재훈

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin"
export PATH

XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT

# Get root
[ "`id -u`" != "0" ] && exec sudo "$0" "$@"

TMP="/tmp/restartx.tmp$$"

bailout(){
rm -f "$TMP"
exit 0
}

DIALOG="dialog"
[ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"

trap bailout 1 2 3 15

# LANGUAGE etc.
[ -f /etc/sysconfig/knoppix ] && . /etc/sysconfig/knoppix
[ -z "$LANG" ] && export LANG
[ -z "$LANGUAGE" ] && export LANGUAGE
[ -z "$CHARSET" ] && export CHARSET
[ -f /etc/sysconfig/desktop ] && . /etc/sysconfig/desktop

# Shortcut desktop description selected
DESKTOPS=(kde "KDE - The K Desktop Environment" on \
gnome "GNOME - The object-oriented desktop" off \
wmaker "Window Maker" off \
icewm "Ice WM" off \
xfce "XFCE 3" off \
xfce4 "XFCE 4" off \
fluxbox "FluxBox" off \
larswm "LarsWM" off \
lg3d "Looking Glass" off \
openbox "OpenBox" off \
ratpoison "RatPoison" off \
twm "TWM" off)
# Corresponding commands for "which"
COMMANDS=(startkde gnome-session wmaker icewm-session xfce xfce4-session fluxbox larswm lg3d openbox ratpoison twm)

# Language-dependent Messages
case "$LANGUAGE" in
de*|at*|ch*)
TITLE1="KNOPPIX X-Restart"
MESSAGE1="Bitte gewnschten Desktop/Windowmanager auswhlen:"
MESSAGE2="
Wollen Sie jetzt wirklich den X-Server neu starten? Alle laufenden Programme mit Grafikausgabe werden beendet!"
;;
ko)
TITLE1="KNOPPIX 데스크탑 선택"
MESSAGE1="데스크탑환경 및 윈도우매니저를 선택하십시오"
MESSAGE2="X 서버를 재시작 하기를 원하십니까? 현재 실행중인 그래픽 환경에서의 모든 프로그램이 종료될 것입니다."
;;
*)
TITLE1="KNOPPIX X-Restart"
MESSAGE1="Please chose Desktop/Windowmanager"
MESSAGE2="
Do you REALLY want to restart the X-Server now? All running programs with graphics output will be terminated!"
;;
esac

num=${#COMMANDS[@]}
for ((i=0; i<$num; i++)); do
# Remove non-existing desktops/descriptions from list
d0="$(($i * 3))"
d1="$(($i * 3 + 1))"
d2="$(($i * 3 + 2))"
if type "${COMMANDS[$i]}" >/dev/null 2>&1; then
[ "$DESKTOP" = "${DESKTOPS[$(($i * 3))]}" ] && DESKTOPS[$(($i * 3 + 2))]="on" || DESKTOPS[$(($i * 3 + 2))]="off"
else
unset DESKTOPS[$d0]
unset DESKTOPS[$d1]
unset DESKTOPS[$d2]
unset COMMANDS[$i]
fi
done

rm -f "$TMP"
$DIALOG --clear --title "$TITLE1" --radiolist "$MESSAGE1" 18 75 9 "${DESKTOPS[@]}" 2>"$TMP" || bailout

echo "DESKTOP=\"$(<$TMP)\"" >>/etc/sysconfig/desktop
echo "DESKTOP=\"$(<$TMP)\"" >>/etc/sysconfig/knoppix

rm -f "$TMP"

$DIALOG --title "$TITLE1" --yesno "$MESSAGE2" 8 65 || bailout

/etc/init.d/xsession restart

exit $?
