source: projects/vutils/tags/vutils-2.3.1/setdm @ 1120

Revision 1120, 4.5 KB checked in by daisuke, 14 years ago (diff)

import vutils-2.2.4 from internal cvs repository

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
98    PS3="Select number> "
99    echo
100    echo "Select a display manager."
101    Select $DM_list
102}
103
104function Usage_ja(){
105    local DM_list
106cat <<EOF
107使い方: ${0##*/} <ディスプレイマネージャ名>
108<ディスプレイマネージャ名>...
109EOF
110    DM_list="exit"
111    if CheckDM wdm; then
112        echo "   wdm : WINGs ディスプレイマネージャ"
113        DM_list="$DM_list wdm"
114    fi
115    if CheckDM xdm; then
116        echo "   xdm : X ディスプレイマネージャ"
117        DM_list="$DM_list xdm"
118    fi
119    if CheckDM kdm; then
120        echo "   kdm : KDE ディスプレイマネージャ"
121        DM_list="$DM_list kdm"
122    fi
123    if CheckDM gdm; then
124        echo "   gdm : GNOME ディスプレイマネージャ"
125        DM_list="$DM_list gdm"
126    fi
127    if CheckDM lxdm; then
128        echo "   lxdm : LXDE ディスプレイマネージャ"
129        DM_list="$DM_list lxdm"
130    fi
131
132    PS3="番号を入力> "
133    echo
134    echo "ディスプレイマネージャを選択してください。"
135    Select $DM_list
136}
137
138function killDM(){
139    for dm in wdm.bin xdm kdm gdm lxdm
140    do
141        # Save basename.
142        base=`basename $dm`
143
144        # Find pid.
145        pid=`pidofproc $base`
146
147        # Kill it.
148        if [ "$pid" != "" ] ; then
149            echo -n "Running $base "
150            kill -TERM $pid
151            usleep 100000
152            if ps h $pid >/dev/null 2>&1 ; then
153                 sleep 3
154                 kill -KILL $pid
155            fi
156        fi
157
158        # Remove pid file if any.
159        if [ -f /var/run/$base.pid ]; then
160            rm -f /var/run/$base.pid
161        fi
162    done
163}
164
165function restartDM(){
166    read yn
167    if [ $yn = "y" -o $yn = "Y" ]; then
168        killDM
169        /etc/X11/prefdm
170    fi
171}
172
173function setDM() {
174    if CheckDM $1; then
175        if [ -w $DM_TYPE ]; then
176            ### Previous DM
177            PreDM=`cat $DM_TYPE`
178            [ $PreDM = "wdm" ] && PreDM="wdm.bin"
179
180            ### Set New DM
181            echo $1 > $DM_TYPE
182            ChangeMsg_$LOCALE `cat $DM_TYPE`
183
184            ### Restart
185            [ ${TERM} = "linux" ] || restartDM
186        else
187            UnChangeMsg_$LOCALE
188        fi
189    else
190        Usage_$LOCALE $1
191    fi
192}
193
194
195#################### Main
196setLocale
197
198if [ $UID -gt 0 ]; then
199    RootMsg_$LOCALE
200    exit
201fi
202
203touch $DM_TYPE
204
205case $1 in
206    wdm | xdm | kdm | gdm | lxdm )
207        setDM $1
208    ;;
209    *)
210        Usage_$LOCALE
211    ;;
212esac
213
214exit
Note: See TracBrowser for help on using the repository browser.