slitaz-tools annotate tinyutils/tazx @ rev 445

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