source: projects/vutils/trunk/setdm @ 8503

Revision 8503, 4.7 KB checked in by daisuke, 10 years ago (diff)

merge 7.2-1vl7

Line 
1#! /bin/bash
2# Display Manager Selecter
3#          Developed by Kawamura <kawamura@ic.sci.yamaguchi-u.ac.jp>
4#          Time-stamp: <2000-12-19 10:57:14 vine>
5
6DM_TYPE=/etc/sysconfig/dmtype
7
8. /usr/share/vine/functions
9
10#################### Messages
11function RootMsg_C (){
12    echo "Only root user can execute this command."
13}
14
15function RootMsg_ja (){
16    echo "ルートユーザのみが実行できます。"
17}
18
19function ChangeMsg_C(){
20    echo "Display manager has changed to $1."
21    if [ ${TERM} != "linux" ]; then
22        echo "You need to restart the X Window System."
23        echo -n "Restart now? [y/n] "
24    fi
25
26}
27
28function ChangeMsg_ja(){
29    echo "ディスプレイマネージャを $1に変更しました。"
30    echo "X Window Systemを再起動する必要があります。"
31    echo -n "再起動しますか? [y/n] "
32}
33
34function UnChangeMsg_C(){
35    echo "Display manager has NOT changed."
36}
37
38function UnChangeMsg_ja(){
39    echo "ディスプレイマネージャは変更されませんでした。"
40}
41
42#################### Functions
43
44function setLocale(){
45case $LANG in
46    ja*) LOCALE=ja ;;
47    *)   LOCALE=C ;;
48esac
49[ ${TERM} = "linux" ] && LOCALE=C
50}
51
52function CheckDM() {
53    local DM_path=`type -p $1`
54    [ ${#DM_path} -gt 0 ] && return 0
55    return 1
56}
57
58function Select(){
59    local choice
60    select choice
61    do
62        if [ "X$choice" = "Xexit" ]; then
63            UnChangeMsg_$LOCALE
64            exit
65        fi
66        setDM $choice
67        break
68    done
69}
70
71function Usage_C(){
72cat <<EOF
73Usage: ${0##*/} <display_manager>
74<display_manager>...
75EOF
76    DM_list="exit"
77    if CheckDM wdm; then
78        echo "   wdm : WINGs Display Manager"
79        DM_list="$DM_list wdm"
80    fi
81    if CheckDM xdm; then
82        echo "   xdm : X Display Manager"
83        DM_list="$DM_list xdm"
84    fi
85    if CheckDM kdm; then
86        echo "   kdm : KDE Display Manager"
87    DM_list="$DM_list kdm"
88    fi
89    if CheckDM gdm; then
90        echo "   gdm : GNOME Display Manager"
91    DM_list="$DM_list gdm"
92    fi
93    if CheckDM lxdm; then
94        echo "   lxdm : LXDE Display Manager"
95    DM_list="$DM_list lxdm"
96    fi
97    if CheckDM lightdm; then
98        echo "   lightdm : Lightweight Display Manager"
99    DM_list="$DM_list lightdm"
100    fi
101
102    PS3="Select number> "
103    echo
104    echo "Select a display manager."
105    Select $DM_list
106}
107
108function Usage_ja(){
109    local DM_list
110cat <<EOF
111使い方: ${0##*/} <ディスプレイマネージャ名>
112<ディスプレイマネージャ名>...
113EOF
114    DM_list="exit"
115    if CheckDM wdm; then
116        echo "   wdm : WINGs ディスプレイマネージャ"
117        DM_list="$DM_list wdm"
118    fi
119    if CheckDM xdm; then
120        echo "   xdm : X ディスプレイマネージャ"
121        DM_list="$DM_list xdm"
122    fi
123    if CheckDM kdm; then
124        echo "   kdm : KDE ディスプレイマネージャ"
125        DM_list="$DM_list kdm"
126    fi
127    if CheckDM gdm; then
128        echo "   gdm : GNOME ディスプレイマネージャ"
129        DM_list="$DM_list gdm"
130    fi
131    if CheckDM lxdm; then
132        echo "   lxdm : LXDE ディスプレイマネージャ"
133        DM_list="$DM_list lxdm"
134    fi
135    if CheckDM lightdm; then
136        echo "   lightdm : 軽量なディスプレイマネージャ"
137        DM_list="$DM_list lightdm"
138    fi
139
140    PS3="番号を入力> "
141    echo
142    echo "ディスプレイマネージャを選択してください。"
143    Select $DM_list
144}
145
146function killDM(){
147    for dm in wdm.bin xdm kdm gdm lxdm lightdm
148    do
149        # Save basename.
150        base=`basename $dm`
151
152        # Find pid.
153        pid=`pidofproc $base`
154
155        # Kill it.
156        if [ "$pid" != "" ] ; then
157            echo -n "Running $base "
158            kill -TERM $pid
159            usleep 100000
160            if ps h $pid >/dev/null 2>&1 ; then
161                 sleep 3
162                 kill -KILL $pid
163            fi
164        fi
165
166        # Remove pid file if any.
167        if [ -f /var/run/$base.pid ]; then
168            rm -f /var/run/$base.pid
169        fi
170    done
171}
172
173function restartDM(){
174    read yn
175    if [ $yn = "y" -o $yn = "Y" ]; then
176        killDM
177        /etc/X11/prefdm
178    fi
179}
180
181function setDM() {
182    if CheckDM $1; then
183        if [ -w $DM_TYPE ]; then
184            ### Previous DM
185            PreDM=`cat $DM_TYPE`
186            [ $PreDM = "wdm" ] && PreDM="wdm.bin"
187
188            ### Set New DM
189            echo $1 > $DM_TYPE
190            ChangeMsg_$LOCALE `cat $DM_TYPE`
191
192            ### Restart
193            [ ${TERM} = "linux" ] || restartDM
194        else
195            UnChangeMsg_$LOCALE
196        fi
197    else
198        Usage_$LOCALE $1
199    fi
200}
201
202
203#################### Main
204setLocale
205
206if [ $UID -gt 0 ]; then
207    RootMsg_$LOCALE
208    exit
209fi
210
211touch $DM_TYPE
212
213case $1 in
214    wdm | xdm | kdm | gdm | lxdm | lightdm)
215        setDM $1
216    ;;
217    *)
218        Usage_$LOCALE
219    ;;
220esac
221
222exit
Note: See TracBrowser for help on using the repository browser.