rev |
line source |
pankso@4
|
1 #!/bin/sh
|
pankso@4
|
2 #
|
pankso@66
|
3 # Tazx - Ncurses X configuration for SliTaz GNU/Linux using Dialog boxes.
|
pankso@4
|
4 # This tinyutils is part of slitaz-tools.
|
pankso@4
|
5 #
|
pankso@209
|
6 # (c) 20080609 SliTaz GNU/Linux - GNU gpl v3.
|
pankso@209
|
7 # Authors: Christophe Lincoln <pankso@slitaz.org>
|
pankso@209
|
8 # Pascal Bellard <pascal.bellard@slitaz.org>
|
pankso@4
|
9 #
|
pascal@190
|
10 : ${DIALOG=tazdialog}
|
pankso@4
|
11
|
pankso@4
|
12 # Variables.
|
pankso@66
|
13 #
|
pankso@4
|
14 XSERVER=Xvesa
|
pankso@4
|
15 DOC=/usr/share/doc/slitaz-tools/tazx.txt
|
pankso@4
|
16 MOUSE=/dev/input/mice,5
|
pankso@46
|
17 # WM can be specified on cmdline.
|
pankso@46
|
18 if [ -n "$1" ]; then
|
pankso@46
|
19 WM=$1
|
pankso@46
|
20 else
|
pankso@158
|
21 WM=openbox
|
pankso@46
|
22 fi
|
pankso@209
|
23 # Default user for config files
|
pankso@209
|
24 USER=`cat /etc/passwd | grep 1000 | cut -d ":" -f 1`
|
pankso@4
|
25
|
pankso@66
|
26 ####################
|
pankso@66
|
27 # Tazx functions #
|
pankso@66
|
28 ####################
|
pankso@66
|
29
|
pankso@117
|
30 # Install xorg server
|
pankso@117
|
31 install_xorg()
|
pankso@117
|
32 {
|
pankso@117
|
33 tazpkg recharge
|
pankso@117
|
34 exec 3>&1
|
pankso@117
|
35 value=`$DIALOG --clear --colors --title " Install Xorg " \
|
pankso@117
|
36 --menu \
|
pankso@117
|
37 "L'application 'tazx' permet de configurer le driver X." 16 70 5 \
|
pankso@117
|
38 $(grep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | while read x; do echo $x; echo driver; done) \
|
pankso@117
|
39 "quit" "Quitter" \
|
pankso@117
|
40 2>&1 1>&3`
|
pankso@117
|
41 retval=$?
|
pankso@117
|
42 exec 3>&-
|
pankso@117
|
43 # Continue, exit...
|
pankso@117
|
44 case $retval in
|
pankso@117
|
45 1)
|
pankso@117
|
46 echo "Cancel pressed..."
|
pankso@117
|
47 exit 0 ;;
|
pankso@117
|
48 255)
|
pankso@117
|
49 if test -z "$value"; then
|
pankso@117
|
50 echo "ESC pressed..."
|
pankso@117
|
51 exit 0
|
pankso@117
|
52 fi ;;
|
pankso@117
|
53 esac
|
pankso@117
|
54 # Set selected value.
|
pankso@117
|
55 case $value in
|
pankso@117
|
56 quit)
|
pankso@117
|
57 echo "Quit..."
|
pankso@117
|
58 exit 0 ;;
|
pankso@117
|
59 *)
|
pankso@117
|
60 tazpkg get-install xorg-server
|
pankso@117
|
61 tazpkg get-install xorg-xf86-video-$value
|
pascal@124
|
62 Xorg -configure :1
|
pankso@117
|
63 mv /root/xorg.conf.new /etc/X11/xorg.conf
|
pankso@203
|
64 . /etc/keymap.conf
|
pascal@120
|
65 patch -p0 <<EOF
|
pascal@120
|
66 --- /etc/X11/xorg.conf
|
pascal@120
|
67 +++ /etc/X11/xorg.conf
|
pascal@120
|
68 @@ -30,2 +30,3 @@
|
pascal@120
|
69 Driver "kbd"
|
pascal@120
|
70 + Option "XkbLayout" "${KMAP%.kmap}"
|
pascal@120
|
71 EndSection
|
pascal@120
|
72 EOF
|
pankso@117
|
73 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
|
pankso@117
|
74 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
|
pankso@117
|
75 XSERVER=Xorg;;
|
pankso@117
|
76 esac
|
pankso@117
|
77 }
|
pankso@117
|
78
|
pankso@66
|
79 # Screen configuration dialog.
|
pankso@66
|
80 screen_config_dialog()
|
pankso@66
|
81 {
|
pankso@66
|
82 exec 3>&1
|
pankso@66
|
83 value=`$DIALOG --help-button \
|
pankso@66
|
84 --clear --colors \
|
pankso@66
|
85 --title " Configure X " \
|
pankso@66
|
86 --menu \
|
pankso@66
|
87 "L'application 'tazx' permet de configurer une session X.\n\
|
pankso@66
|
88 Gestionnaire de fenêtres : \Z2$WM\Zn" 16 70 5 \
|
pankso@118
|
89 $(Xvesa -listmodes 2>&1 | grep ^0x | awk '{ printf "%s %s\n",$2,$3 }' | sort -nr | grep x[1-2][4-6]) \
|
pankso@66
|
90 "xterm" "800x600x16" \
|
pankso@117
|
91 "xorg" "Installer Xorg" \
|
pankso@66
|
92 "quit" "Quitter" \
|
pankso@66
|
93 2>&1 1>&3`
|
pankso@66
|
94 retval=$?
|
pankso@66
|
95 exec 3>&-
|
pankso@66
|
96 # Continue, exit or help...
|
pankso@66
|
97 case $retval in
|
pankso@66
|
98 0)
|
pankso@66
|
99 continue ;;
|
pankso@66
|
100 1)
|
pankso@66
|
101 echo "Cancel pressed..."
|
pankso@66
|
102 exit 0 ;;
|
pankso@66
|
103 2)
|
pankso@66
|
104 $DIALOG --clear \
|
pankso@66
|
105 --title " Aide - Help " --textbox "$DOC" 16 70
|
pankso@66
|
106 exec tazx ;;
|
pankso@66
|
107 255)
|
pankso@66
|
108 if test -n "$value"; then
|
pankso@66
|
109 continue
|
pankso@66
|
110 else
|
pankso@66
|
111 echo "ESC pressed..."
|
pankso@66
|
112 exit 0
|
pankso@66
|
113 fi ;;
|
pankso@66
|
114 esac
|
pankso@66
|
115 # Set selected value.
|
pankso@66
|
116 case $value in
|
pankso@117
|
117 xorg)
|
pankso@117
|
118 install_xorg;;
|
pankso@66
|
119 xterm)
|
pankso@66
|
120 Xvesa -ac -shadow -screen 800x600x16 -br &
|
pankso@66
|
121 exec xterm -cr orange -geometry 80x35+0-0 ;;
|
pankso@66
|
122 *)
|
pankso@68
|
123 NEW_SCREEN=$value ;;
|
pankso@66
|
124 esac
|
pankso@66
|
125 }
|
pankso@4
|
126
|
pankso@65
|
127 # Slim config if root.
|
pankso@66
|
128 slim_config()
|
pankso@66
|
129 {
|
pankso@66
|
130 if test $(id -u) = 0; then
|
pankso@68
|
131 # /etc/X11/screen.conf exist for Live mode, if this file dos not
|
pankso@68
|
132 # exist tazx is executed at boot time.
|
pankso@68
|
133 mkdir -p /etc/X11
|
pankso@68
|
134 echo "SCREEN=$NEW_SCREEN" > /etc/X11/screen.conf
|
pankso@67
|
135 # Get current screen size and sed config file with the new value.
|
pankso@66
|
136 if [ -f /etc/slim.conf ]; then
|
pankso@67
|
137 RES=$(grep ^xserver_arguments /etc/slim.conf | sed 's/xserver_arguments.*-screen *//')
|
pankso@69
|
138 sed -i "s/\(xserver_arguments.*-screen\).*/\1 $NEW_SCREEN/" /etc/slim.conf
|
pankso@66
|
139 fi
|
pankso@66
|
140 JWM_CONFIG=/etc/jwm/system.jwmrc
|
pankso@65
|
141 fi
|
pankso@66
|
142 }
|
pankso@66
|
143
|
pankso@66
|
144 # e17 start with enlightenment_start.
|
pankso@66
|
145 e17_stuff()
|
pankso@66
|
146 {
|
pankso@66
|
147 if [ "$WM" == "e17" ]; then
|
pankso@66
|
148 WM=enlightenment_start
|
pankso@66
|
149 XSEVER_OPTS="dpms -terminate"
|
pankso@65
|
150 fi
|
pankso@66
|
151 }
|
pankso@65
|
152
|
pankso@81
|
153 # Openbox with openbox-session.
|
pankso@81
|
154 openbox_stuff()
|
pankso@81
|
155 {
|
pankso@81
|
156 if [ "$WM" == "openbox" -o "$WM" == "ob" ]; then
|
pankso@81
|
157 WM=openbox-session
|
pankso@158
|
158 XSEVER_OPTS="dpms +extension Composite"
|
pankso@81
|
159 fi
|
pankso@81
|
160 # Check if a personnal autostart script exist if OB is installed.
|
pankso@81
|
161 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
|
pankso@81
|
162 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
|
pankso@81
|
163 mkdir -p $HOME/.config/openbox
|
pankso@81
|
164 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
|
pankso@81
|
165 fi
|
pankso@209
|
166 # Script for default user (uid=1000).
|
pankso@209
|
167 if [ ! -f "/home/$USER/.config/openbox/autostart.sh" ]; then
|
pankso@209
|
168 mkdir -p /home/$USER/.config/openbox
|
pankso@209
|
169 cp /etc/xdg/openbox/autostart.sh /home/$USER/.config/openbox
|
pankso@81
|
170 fi
|
pankso@209
|
171 if [ ! -f "/home/$USER/.config/openbox/menu.xml" ]; then
|
pankso@209
|
172 mkdir -p /home/$USER/.config/openbox
|
pankso@209
|
173 cp /etc/xdg/openbox/menu.xml /home/$USER/.config/openbox
|
pankso@158
|
174 fi
|
pankso@209
|
175 chown -R $USER.$USER /home/$USER/.config
|
pankso@81
|
176 fi
|
pankso@81
|
177 }
|
pankso@81
|
178
|
pankso@68
|
179 # Sample xinitrc for user (WM can be specified with F1 at slim login).
|
pankso@68
|
180 xinitrc_sample()
|
pankso@68
|
181 {
|
pankso@68
|
182 cat > $FILE << "EOF"
|
pankso@68
|
183 # ~/.xinitrc: Executed by slim login manager to startx X session.
|
pankso@203
|
184 # You can use F1 with Slim or 'tazx' to configure permanantly
|
pankso@99
|
185 # your default WM: tazx e17
|
pankso@68
|
186 #
|
pankso@162
|
187 WM=openbox-session
|
pankso@99
|
188
|
pankso@117
|
189 case $1 in
|
pankso@68
|
190 e17|enlightenment_start)
|
pankso@68
|
191 exec enlightenment_start
|
pankso@68
|
192 ;;
|
pankso@162
|
193 openbox|openbox-session|ob)
|
pankso@81
|
194 exec openbox-session
|
pankso@81
|
195 ;;
|
pankso@117
|
196 jwm)
|
pankso@81
|
197 lxpanel &
|
pankso@68
|
198 exec jwm
|
pankso@68
|
199 ;;
|
pankso@117
|
200 *)
|
pankso@117
|
201 exec $WM
|
pankso@117
|
202 ;;
|
pankso@68
|
203 esac
|
pankso@68
|
204 EOF
|
pankso@122
|
205 # Set default WM.
|
pankso@122
|
206 RES=`grep ^WM=[e-o] $FILE`
|
pankso@122
|
207 sed -i s/"$RES"/"WM=$WM"/ $FILE
|
pankso@68
|
208 }
|
pankso@68
|
209
|
pankso@65
|
210 # ~/.xinitrc for slim login.
|
pankso@66
|
211 creat_xinitrc()
|
pankso@66
|
212 {
|
pankso@68
|
213 FILE=$HOME/.xinitrc
|
pankso@68
|
214 xinitrc_sample
|
pankso@203
|
215
|
pankso@209
|
216 # In Live mode default user needs a xinitrc, since tazx
|
pankso@68
|
217 # is executed only by root.
|
pankso@209
|
218 if [ ! -f /home/$USER/.xinitrc ]; then
|
pankso@209
|
219 FILE=/home/$USER/.xinitrc
|
pankso@68
|
220 xinitrc_sample
|
pankso@209
|
221 chown $USER.$USER $FILE
|
pankso@66
|
222 fi
|
pankso@66
|
223 }
|
pankso@65
|
224
|
pankso@66
|
225 # Copy a JWM system config if any present in user home.
|
pankso@66
|
226 jwm_config()
|
pankso@66
|
227 {
|
pankso@162
|
228 if [ -d "/var/lib/tazpkg/installed/jwm" ]; then
|
pankso@162
|
229 JWM_CONFIG=$HOME/.jwmrc
|
pankso@162
|
230 if [ ! -f "$JWM_CONFIG" ]; then
|
pankso@162
|
231 cp /etc/jwm/system.jwmrc $JWM_CONFIG
|
pankso@162
|
232 fi
|
pankso@209
|
233 # In Live mode default user/root JWM config dose not exist and
|
pankso@209
|
234 # $HOME is ot set, this is because tazx is executed by boot
|
pankso@209
|
235 # scripts.
|
pankso@209
|
236 if [ ! -f "/home/$USER/.jwmrc" ]; then
|
pankso@209
|
237 JWM_CONFIG=/home/$USER/.jwmrc
|
pankso@162
|
238 cp /etc/jwm/system.jwmrc $JWM_CONFIG
|
pankso@209
|
239 chown $USER.$USER $JWM_CONFIG
|
pankso@162
|
240 fi
|
pankso@162
|
241 if [ ! -f "/root/.jwmrc" -a `id -u` = 0 ]; then
|
pankso@162
|
242 JWM_CONFIG=/root/.jwmrc
|
pankso@162
|
243 cp /etc/jwm/system.jwmrc $JWM_CONFIG
|
pankso@162
|
244 fi
|
pankso@105
|
245 fi
|
pankso@66
|
246 }
|
pankso@45
|
247
|
pankso@203
|
248 # Creat ~/.xsession to keep the configuration selected (used
|
pankso@66
|
249 # only by startx, Slim login manager use .xinitrc).
|
pankso@66
|
250 creat_xsession()
|
pankso@66
|
251 {
|
pankso@68
|
252 cat > $HOME/.xsession << _EOF_
|
pankso@68
|
253 # ~/.xsession: Start X window session manually on your system (startx).
|
pankso@37
|
254 #
|
pankso@68
|
255 _EOF_
|
pankso@117
|
256 if [ "$XSERVER " == "Xorg" ]; then
|
pankso@117
|
257 echo 'Xorg &' >> $HOME/.xsession
|
pankso@117
|
258 else
|
pankso@117
|
259 echo "$XSERVER -ac -shadow $XSEVER_OPTS -screen $NEW_SCREEN -mouse $MOUSE &" \
|
pankso@117
|
260 >> $HOME/.xsession
|
pankso@117
|
261 fi
|
pankso@117
|
262 echo '#xterm &' >> $HOME/.xsession
|
pankso@117
|
263 echo '#xpad &' >> $HOME/.xsession
|
pankso@99
|
264 # LXpanel by default with JWM.
|
pankso@117
|
265 if [ "$WM" = "jwm" ]; then
|
pankso@99
|
266 echo 'lxpanel &' >> $HOME/.xsession
|
pankso@99
|
267 fi
|
pankso@104
|
268 echo "exec $WM" >> $HOME/.xsession
|
pankso@66
|
269 chmod 700 $HOME/.xsession
|
pankso@66
|
270 }
|
pankso@4
|
271
|
pankso@66
|
272 ###################
|
pankso@66
|
273 # Tazx sequence #
|
pankso@66
|
274 ###################
|
pankso@66
|
275
|
pascal@96
|
276 [ -n "$NEW_SCREEN" ] || screen_config_dialog
|
pankso@66
|
277 slim_config
|
pankso@66
|
278 e17_stuff
|
pankso@81
|
279 openbox_stuff
|
pankso@66
|
280 creat_xinitrc
|
pankso@66
|
281 jwm_config
|
pankso@66
|
282 creat_xsession
|
pankso@4
|
283
|
pankso@4
|
284 exit 0
|