#! /bin/bash # Display Manager Selecter # Developed by Kawamura # Time-stamp: <2000-12-19 10:57:14 vine> DM_TYPE=/etc/sysconfig/dmtype . /usr/share/vine/functions #################### Messages function RootMsg_C (){ echo "Only root user can execute this command." } function RootMsg_ja (){ echo "ルートユーザのみが実行できます。" } function ChangeMsg_C(){ echo "Display manager has changed to $1." if [ ${TERM} != "linux" ]; then echo "You need to restart the X Window System." echo -n "Restart now? [y/n] " fi } function ChangeMsg_ja(){ echo "ディスプレイマネージャを $1に変更しました。" echo "X Window Systemを再起動する必要があります。" echo -n "再起動しますか? [y/n] " } function UnChangeMsg_C(){ echo "Display manager has NOT changed." } function UnChangeMsg_ja(){ echo "ディスプレイマネージャは変更されませんでした。" } #################### Functions function setLocale(){ case $LANG in ja*) LOCALE=ja ;; *) LOCALE=C ;; esac [ ${TERM} = "linux" ] && LOCALE=C } function CheckDM() { local DM_path=`type -p $1` [ ${#DM_path} -gt 0 ] && return 0 return 1 } function Select(){ local choice select choice do if [ "X$choice" = "Xexit" ]; then UnChangeMsg_$LOCALE exit fi setDM $choice break done } function Usage_C(){ cat < ... EOF DM_list="exit" if CheckDM wdm; then echo " wdm : WINGs Display Manager" DM_list="$DM_list wdm" fi if CheckDM xdm; then echo " xdm : X Display Manager" DM_list="$DM_list xdm" fi if CheckDM kdm; then echo " kdm : KDE Display Manager" DM_list="$DM_list kdm" fi if CheckDM gdm; then echo " gdm : GNOME Display Manager" DM_list="$DM_list gdm" fi if CheckDM lxdm; then echo " lxdm : LXDE Display Manager" DM_list="$DM_list lxdm" fi if CheckDM lightdm; then echo " lightdm : Lightweight Display Manager" DM_list="$DM_list lightdm" fi PS3="Select number> " echo echo "Select a display manager." Select $DM_list } function Usage_ja(){ local DM_list cat < <ディスプレイマネージャ名>... EOF DM_list="exit" if CheckDM wdm; then echo " wdm : WINGs ディスプレイマネージャ" DM_list="$DM_list wdm" fi if CheckDM xdm; then echo " xdm : X ディスプレイマネージャ" DM_list="$DM_list xdm" fi if CheckDM kdm; then echo " kdm : KDE ディスプレイマネージャ" DM_list="$DM_list kdm" fi if CheckDM gdm; then echo " gdm : GNOME ディスプレイマネージャ" DM_list="$DM_list gdm" fi if CheckDM lxdm; then echo " lxdm : LXDE ディスプレイマネージャ" DM_list="$DM_list lxdm" fi if CheckDM lightdm; then echo " lightdm : 軽量なディスプレイマネージャ" DM_list="$DM_list lightdm" fi PS3="番号を入力> " echo echo "ディスプレイマネージャを選択してください。" Select $DM_list } function killDM(){ for dm in wdm.bin xdm kdm gdm lxdm lightdm do # Save basename. base=`basename $dm` # Find pid. pid=`pidofproc $base` # Kill it. if [ "$pid" != "" ] ; then echo -n "Running $base " kill -TERM $pid usleep 100000 if ps h $pid >/dev/null 2>&1 ; then sleep 3 kill -KILL $pid fi fi # Remove pid file if any. if [ -f /var/run/$base.pid ]; then rm -f /var/run/$base.pid fi done } function restartDM(){ read yn if [ $yn = "y" -o $yn = "Y" ]; then killDM /etc/X11/prefdm fi } function setDM() { if CheckDM $1; then if [ -w $DM_TYPE ]; then ### Previous DM PreDM=`cat $DM_TYPE` [ $PreDM = "wdm" ] && PreDM="wdm.bin" ### Set New DM echo $1 > $DM_TYPE ChangeMsg_$LOCALE `cat $DM_TYPE` ### Restart [ ${TERM} = "linux" ] || restartDM else UnChangeMsg_$LOCALE fi else Usage_$LOCALE $1 fi } #################### Main setLocale if [ $UID -gt 0 ]; then RootMsg_$LOCALE exit fi touch $DM_TYPE case $1 in wdm | xdm | kdm | gdm | lxdm | lightdm) setDM $1 ;; *) Usage_$LOCALE ;; esac exit