slitaz-tools view tinyutils/tazx @ rev 364

Add: sshbox (again).
author Eric Joseph-Alexandre <erjo@slitaz.org>
date Sat Jun 27 11:26:25 2009 +0200 (2009-06-27)
parents c87f02e50ad1
children fad3262d280d
line source
1 #!/bin/sh
2 #
3 # Tazx - Ncurses X configuration for SliTaz GNU/Linux using Dialog boxes.
4 # This tinyutils is part of slitaz-tools. Tazx can configure Xvesa kdrive
5 # and Xorg with several Window Manager.
6 #
7 # (c) 2009 SliTaz GNU/Linux - GNU gpl v3.
8 # Authors: Christophe Lincoln <pankso@slitaz.org>
9 # Pascal Bellard <pascal.bellard@slitaz.org>
10 #
11 : ${DIALOG=tazdialog}
13 # Default value.
14 XSERVER=Xvesa
15 KEYBD=keyboard
16 MOUSE=mouse,5,/dev/input/mice
17 WM=openbox
19 # Default user for config files in Live mode.
20 [ -z $USER ] && USER=`cat /etc/passwd | grep 1000 | cut -d ":" -f 1`
22 ####################
23 # Tazx functions #
24 ####################
26 # Patch xorg.conf to set keymap layout.
27 patch_xorg_kbd()
28 {
29 KEYMAP=`cat /etc/keymap.conf`
30 case $KEYMAP in
31 fr_CH-latin1)
32 # Swiss FrenCH
33 patch -p0 <<EOF
34 --- /etc/X11/xorg.conf
35 +++ /etc/X11/xorg.conf
36 @@ -30,2 +30,3 @@
37 Driver "kbd"
38 + Option "XkbLayout" "ch"
39 + Option "XkbVariant" "fr"
40 EndSection
41 EOF
42 ;;
43 en)
44 # Englisk UK
45 patch -p0 <<EOF
46 --- /etc/X11/xorg.conf
47 +++ /etc/X11/xorg.conf
48 @@ -30,2 +30,3 @@
49 Driver "kbd"
50 + Option "XkbLayout" "en"
51 + Option "XkbVariant" "en"
52 EndSection
53 EOF
54 ;;
55 ru)
56 # Russian
57 patch -p0 <<EOF
58 --- /etc/X11/xorg.conf
59 +++ /etc/X11/xorg.conf
60 @@ -30,2 +30,3 @@
61 Driver "kbd"
62 + Option "XkbLayout" "us,ru(winkeys)"
63 + Option "XkbVariant" "grp:alt_shift_toggle"
64 EndSection
65 EOF
66 ;;
67 slovene)
68 # Slovenian
69 patch -p0 <<EOF
70 --- /etc/X11/xorg.conf
71 +++ /etc/X11/xorg.conf
72 @@ -30,2 +30,3 @@
73 Driver "kbd"
74 + Option "XkbLayout" "si"
75 + Option "XkbOptions" "grp:alt_shift_toggle"
76 EndSection
77 EOF
78 ;;
79 *)
80 # Use clean /etc/keymap.conf value.
81 KEYMAP=${KEYMAP%-latin1}
82 KEYMAP=${KEYMAP%-lat2}
83 KEYMAP=${KEYMAP%-lat6}
84 KEYMAP=${KEYMAP%-abnt2}
85 patch -p0 <<EOF
86 --- /etc/X11/xorg.conf
87 +++ /etc/X11/xorg.conf
88 @@ -30,2 +30,3 @@
89 Driver "kbd"
90 + Option "XkbLayout" "$KEYMAP"
91 EndSection
92 EOF
93 ;;
94 esac
95 }
97 # Install xorg server
98 install_xorg()
99 {
100 tazpkg recharge
101 exec 3>&1
102 value=`$DIALOG --clear --colors --title " Install Xorg " \
103 --menu \
104 "The 'tazx' application helps you to select your X driver." 16 70 5 \
105 $(grep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | while read x; do echo $x; echo driver; done) \
106 "quit" "Quitter" \
107 2>&1 1>&3`
108 retval=$?
109 exec 3>&-
110 # Continue, exit...
111 case $retval in
112 1)
113 echo "Cancel pressed..."
114 exit 0 ;;
115 255)
116 if test -z "$value"; then
117 echo "ESC pressed..."
118 exit 0
119 fi ;;
120 esac
121 # Set selected value.
122 case $value in
123 quit)
124 echo "Quit..."
125 exit 0 ;;
126 *)
127 tazpkg get-install xorg-server
128 tazpkg get-install xorg-xf86-video-$value
129 Xorg -configure :1
130 mv -f /root/xorg.conf.new /etc/X11/xorg.conf
131 patch_xorg_kbd
132 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
133 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
134 XSERVER=Xorg ;;
135 esac
136 }
138 # Screen configuration dialog.
139 screen_config_dialog()
140 {
141 exec 3>&1
142 value=`$DIALOG \
143 --clear --colors \
144 --title " Configure X " \
145 --menu \
146 "The 'tazx' application helps you to configure your X session.\n\
147 Window Manager : \Z2$WM\Zn" 16 70 5 \
148 $(Xvesa -listmodes 2>&1 | grep ^0x | awk '{ printf "%s %s\n",$2,$3 }' | sort -nr | grep x[1-2][4-6]) \
149 "xterm" "800x600x16" \
150 "xorg" "Installer Xorg" \
151 "quit" "Quitter" \
152 2>&1 1>&3`
153 retval=$?
154 exec 3>&-
155 # Continue, exit or help...
156 case $retval in
157 0)
158 continue ;;
159 1)
160 echo "Cancel pressed..."
161 exit 0 ;;
162 255)
163 if test -n "$value"; then
164 continue
165 else
166 echo "ESC pressed..."
167 exit 0
168 fi ;;
169 esac
170 # Set selected value.
171 case $value in
172 xorg)
173 install_xorg ;;
174 xterm)
175 Xvesa -ac -shadow -screen 800x600x16 -br &
176 exec xterm -cr orange -geometry 80x35+0-0 ;;
177 *)
178 NEW_SCREEN=$value ;;
179 esac
180 }
182 # Slim config if root.
183 slim_config()
184 {
185 if test $(id -u) = 0; then
186 # /etc/X11/screen.conf exists for Live mode, if this file does not
187 # exist tazx is executed at boot time.
188 mkdir -p /etc/X11
189 echo "SCREEN=$NEW_SCREEN" > /etc/X11/screen.conf
190 # Get current screen size and sed config file with the new value.
191 if [ -f /etc/slim.conf ]; then
192 RES=$(grep ^xserver_arguments /etc/slim.conf | \
193 sed 's/xserver_arguments.*-screen *//' | awk '{ print $1 }')
194 #sed -i "s/\(xserver_arguments.*-screen\).*/\1 $NEW_SCREEN/" /etc/slim.conf
195 sed -i s/"-screen $RES"/"-screen $NEW_SCREEN"/ /etc/slim.conf
196 fi
197 fi
198 }
200 # Window manager specific configuration.
201 wm_config()
202 {
203 case $WM in
204 ob|openbox)
205 WM=openbox-session
206 XSEVER_OPTS="dpms +extension Composite"
207 # Check if a personal autostart script exists if OB is installed.
208 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
209 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
210 mkdir -p $HOME/.config/openbox
211 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
212 fi
213 # Script for default user (uid=1000).
214 if [ ! -f "/home/$USER/.config/openbox/autostart.sh" ]; then
215 mkdir -p /home/$USER/.config/openbox
216 cp /etc/xdg/openbox/autostart.sh /home/$USER/.config/openbox
217 fi
218 if [ ! -f "/home/$USER/.config/openbox/menu.xml" ]; then
219 mkdir -p /home/$USER/.config/openbox
220 cp /etc/xdg/openbox/menu.xml /home/$USER/.config/openbox
221 fi
222 chown -R $USER.$USER /home/$USER/.config
223 fi ;;
224 jwm)
225 WM=jwm
226 XSEVER_OPTS="dpms +extension Composite"
227 JWM_CONFIG=$HOME/.jwmrc
228 if [ -d "/var/lib/tazpkg/installed/jwm" ]; then
229 if [ ! -f "$JWM_CONFIG" ]; then
230 cp /etc/jwm/system.jwmrc $JWM_CONFIG
231 fi
232 # In Live mode default user/root JWM config does not exist and
233 # $HOME is not set, this is because tazx is executed by boot
234 # scripts.
235 if [ ! -f "/home/$USER/.jwmrc" ]; then
236 cp /etc/jwm/system.jwmrc /home/$USER/.jwmrc
237 chown $USER.$USER /home/$USER/.jwmrc
238 fi
239 if [ ! -f "/root/.jwmrc" -a `id -u` = 0 ]; then
240 cp /etc/jwm/system.jwmrc /root/.jwmrc
241 fi
242 fi ;;
243 pekwm)
244 WM=pekwm
245 XSEVER_OPTS="dpms"
246 if [ -d "/var/lib/tazpkg/installed/pekwm" ]; then
247 if [ -d "$HOME/.pekwm" ]; then
248 cp -R /etc/pekwm $HOME/.pekwm
249 fi
250 # In Live mode we want config before starting pekwm the first time.
251 if [ ! -d "/home/$USER/.pekwm" ]; then
252 cp -R /etc/pekwm /home/$USER/.pekwm
253 chown -R $USER.$USER /home/$USER/.pekwm
254 chmod +x /home/$USER/.pekwm/start
255 fi
256 if [ ! -d "/root/.pekwm" -a `id -u` = 0 ]; then
257 cp -R /etc/pekwm /root/.pekwm
258 chmod +x /root/.pekwm/start
259 fi
260 fi ;;
261 e17|enlightenment)
262 WM=enlightenment_start
263 XSEVER_OPTS="dpms -terminate" ;;
264 fluxbox)
265 WM=startfluxbox
266 XSEVER_OPTS="dpms" ;;
267 dwm|karmen)
268 WM=$WM-session
269 XSEVER_OPTS="dpms" ;;
270 awesome)
271 WM=awesome
272 XSEVER_OPTS="dpms" ;;
273 esac
274 }
276 # Sample xinitrc for user (WM can be specified with F1 at slim login).
277 xinitrc_sample()
278 {
279 cat > $FILE << "EOF"
280 # ~/.xinitrc: Executed by slim login manager to startx X session.
281 # You can use F1 with Slim to chage your window manager or configure
282 # it permanently with your personnal applications.conf file.
283 #
284 . $HOME/.config/slitaz/applications.conf
286 case $1 in
287 e17|enlightenment*)
288 exec enlightenment_start ;;
289 openbox|openbox-session|ob)
290 exec openbox-session ;;
291 dwm|dwm-session)
292 exec dwm-session ;;
293 fluxbox|startfluxbox)
294 exec startfluxbox ;;
295 awesome)
296 exec awesome ;;
297 pekwm)
298 exec pekwm ;;
299 karmen|karmen-session)
300 exec karmen-session ;;
301 jwm)
302 lxpanel &
303 exec jwm ;;
304 *)
305 exec $WINDOW_MANAGER ;;
306 esac
307 EOF
308 # Set default WM in applications.conf user file. Default WM can be
309 # configured graphicaly with 'desktopbox tazapps'
310 . $CONFIG
311 sed -i s/"WINDOW_MANAGER=.*"/"WINDOW_MANAGER=\"$WM\""/ \
312 $CONFIG
313 }
315 # ~/.xinitrc for slim login.
316 creat_xinitrc()
317 {
318 FILE=$HOME/.xinitrc
319 CONFIG=$HOME/.config/slitaz/applications.conf
320 if [ ! -f $CONFIG ]; then
321 mkdir -p $HOME/.config/slitaz
322 cp /etc/slitaz/applications.conf $CONFIG
323 fi
324 xinitrc_sample
325 # In Live mode default user needs a xinitrc, since tazx
326 # is executed only by root.
327 if [ ! -f /home/$USER/.xinitrc ]; then
328 FILE=/home/$USER/.xinitrc
329 CONFIG=/home/$USER/.config/slitaz/applications.conf
330 if [ ! -f $CONFIG ]; then
331 mkdir -p /home/$USER/.config/slitaz
332 cp /etc/slitaz/applications.conf $CONFIG
333 fi
334 xinitrc_sample
335 chown $USER.$USER $FILE
336 chown -R $USER.$USER /home/$USER/.config/slitaz
337 fi
338 }
340 # Create ~/.xsession to keep the configuration selected (used
341 # only by startx, Slim login manager uses .xinitrc).
342 creat_xsession()
343 {
344 cat > $HOME/.xsession << _EOF_
345 # ~/.xsession: Start X window session manually on your system (startx).
346 #
347 _EOF_
348 if [ "$XSERVER " == "Xorg" ]; then
349 echo 'Xorg &' >> $HOME/.xsession
350 else
351 cat >> $HOME/.xsession << _EOT_
352 $XSERVER -ac -shadow $XSEVER_OPTS \\
353 -screen $NEW_SCREEN \\
354 -keybd $KEYBD \\
355 -mouse $MOUSE &
356 _EOT_
357 fi
358 echo '#xterm &' >> $HOME/.xsession
359 echo '#xpad &' >> $HOME/.xsession
360 # LXpanel by default with JWM.
361 if [ "$WM" = "jwm" ]; then
362 echo 'lxpanel &' >> $HOME/.xsession
363 fi
364 echo "exec $WM" >> $HOME/.xsession
365 chmod 700 $HOME/.xsession
366 }
368 ###################
369 # Tazx sequence #
370 ###################
372 case "$1" in
373 show-config)
374 . /etc/X11/screen.conf
375 echo ""
376 echo "X11 screen resolution: $SCREEN"
377 echo ""
378 echo "Slim configuration for X server:"
379 cat /etc/slim.conf | grep ^default_xserver
380 cat /etc/slim.conf | grep ^xserver_arguments
381 echo "" ;;
382 install-xorg)
383 # WM can be specified on cmdline.
384 if [ -n "$2" ]; then
385 WM=$2
386 fi
387 install_xorg
388 slim_config
389 wm_config
390 creat_xinitrc
391 creat_xsession ;;
392 *)
393 # WM can be specified on cmdline.
394 if [ -n "$1" ]; then
395 WM=$1
396 fi
397 [ -n "$NEW_SCREEN" ] || screen_config_dialog
398 slim_config
399 wm_config
400 creat_xinitrc
401 creat_xsession ;;
402 esac
404 exit 0