slitaz-tools annotate tinyutils/tazx @ rev 582

Add: po/tazdrop/pt.po
author Claudinei Pereira <claudinei@slitaz.org>
date Fri Apr 29 20:35:11 2011 +0300 (2011-04-29)
parents 2b8a6ff728b5
children bac3728828c5
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@535 4 # This tinyutils is part of slitaz-tools. Tazx can configure Xorg with
pankso@535 5 # several Window Managers.
pankso@4 6 #
pankso@535 7 # (c) 2011 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@535 13 # Default value.
pankso@351 14 WM=openbox
pankso@351 15
pankso@534 16 # Default user for config files in Live mode, id is 1000 since it is
pankso@534 17 # created by /etc/init.d/bootopts.sh.
pankso@534 18 USER=`cat /etc/passwd | grep 1000 | cut -d ":" -f 1`
pankso@4 19
pankso@66 20 ####################
pankso@66 21 # Tazx functions #
pankso@66 22 ####################
pankso@66 23
gokhlayeh@492 24 # Populate xorg.conf.d.
gokhlayeh@492 25 xorg_conf_d()
pankso@260 26 {
gokhlayeh@492 27 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d)
gokhlayeh@492 28 xorg_config=/etc/X11/xorg.conf.d
gokhlayeh@492 29
gokhlayeh@492 30 # Define the xorg.conf.new place.
gokhlayeh@492 31 xorg_template=/root/xorg.conf.new
gokhlayeh@492 32
gokhlayeh@492 33 # Obtain a default configuration file from Xorg.
gokhlayeh@492 34 Xorg -configure :1
gokhlayeh@492 35
paul@515 36 # Backup existing config.
gokhlayeh@513 37 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null
gokhlayeh@513 38
gokhlayeh@492 39 # Put the differents sections in separate files in the configuration directory.
gokhlayeh@492 40 sed -e '/Section "ServerLayout"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template | grep -v Core > $xorg_config/10-ServerLayout.conf
gokhlayeh@492 41 sed -e '/Section "Files"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template > $xorg_config/20-Files.conf
gokhlayeh@492 42 sed -e '/Section "Module"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template > $xorg_config/30-Module.conf
gokhlayeh@492 43 sed -e '/Section "Monitor"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template > $xorg_config/50-Monitor.conf
gokhlayeh@492 44 sed -e '/Section "Device"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template > $xorg_config/60-Device.conf
gokhlayeh@492 45 sed -e '/Section "Screen"/,/EndSection/!d' -e "s/EndSection/EndSection\n/" $xorg_template > $xorg_config/70-Screen.conf
gokhlayeh@492 46
gokhlayeh@492 47 # Remove the template.
gokhlayeh@492 48 rm $xorg_template
gokhlayeh@492 49
gokhlayeh@492 50 # Configure the keyboard with the right keymap.
gokhlayeh@492 51 keymap=`cat /etc/keymap.conf`
gokhlayeh@492 52 keyboard_config=$xorg_config/40-Keyboard.conf
gokhlayeh@492 53 echo 'Section "InputClass"
gokhlayeh@494 54 Identifier "Keyboard Defaults"
gokhlayeh@494 55 MatchIsKeyboard "yes"' > $keyboard_config
gokhlayeh@494 56 case $keymap in
pankso@260 57 fr_CH-latin1)
pankso@260 58 # Swiss FrenCH
gokhlayeh@492 59 echo ' Option "XkbLayout" "ch"
pankso@577 60 Option "XkbVariant" "fr"' >> $keyboard_config ;;
pankso@260 61 en)
pankso@260 62 # Englisk UK
gokhlayeh@492 63 echo ' Option "XkbLayout" "en"
pankso@577 64 Option "XkbVariant" "en"' >> $keyboard_config ;;
pankso@260 65 ru)
pankso@260 66 # Russian
gokhlayeh@492 67 echo ' Option "XkbLayout" "us,ru(winkeys)"
pankso@577 68 Option "XkbVariant" "grp:alt_shift_toggle"' >> $keyboard_config ;;
pankso@303 69 slovene)
pankso@303 70 # Slovenian
gokhlayeh@492 71 echo ' Option "XkbLayout" "si"
pankso@577 72 Option "XkbOptions" "grp:alt_shift_toggle"' >> $keyboard_config ;;
pankso@577 73 us-acentos)
pankso@577 74 echo ' Option "XkbLayout" "us"
pankso@577 75 Option "XkbVariant" "intl"' >> $keyboard_config ;;
pankso@260 76 *)
pankso@260 77 # Use clean /etc/keymap.conf value.
gokhlayeh@492 78 keymap=${keymap%-latin1}
gokhlayeh@492 79 keymap=${keymap%-lat2}
gokhlayeh@492 80 keymap=${keymap%-lat6}
gokhlayeh@492 81 keymap=${keymap%-abnt2}
gokhlayeh@492 82 echo ' Option "XkbLayout" "'$keymap\" >> $keyboard_config
pankso@260 83 ;;
pankso@260 84 esac
gokhlayeh@492 85
gokhlayeh@492 86 echo 'Endsection' >> $keyboard_config
gokhlayeh@492 87
gokhlayeh@492 88 # Create a xorg.conf if needed.
paul@515 89 [ ! -f /etc/X11/xorg.conf ] && echo "# You can put here your own Xorg configurations.
paul@515 90 # This configuration file is read before all files in /etc/X11/xorg.conf.d
paul@515 91 # This file will not be erased by any updates." > /etc/X11/xorg.conf
pankso@260 92 }
pankso@260 93
paul@549 94 # Install xorg server.
pankso@117 95 install_xorg()
pankso@117 96 {
pankso@117 97 tazpkg recharge
pankso@117 98 exec 3>&1
pankso@117 99 value=`$DIALOG --clear --colors --title " Install Xorg " \
pankso@117 100 --menu \
paul@334 101 "The 'tazx' application helps you to select your X driver." 16 70 5 \
pankso@117 102 $(grep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | while read x; do echo $x; echo driver; done) \
pankso@117 103 "quit" "Quitter" \
pankso@117 104 2>&1 1>&3`
pankso@117 105 retval=$?
pankso@117 106 exec 3>&-
pankso@117 107 # Continue, exit...
pankso@117 108 case $retval in
pankso@117 109 1)
pankso@117 110 echo "Cancel pressed..."
pankso@117 111 exit 0 ;;
pankso@117 112 255)
pankso@117 113 if test -z "$value"; then
pankso@117 114 echo "ESC pressed..."
pankso@117 115 exit 0
pankso@117 116 fi ;;
pankso@117 117 esac
pankso@117 118 # Set selected value.
pankso@117 119 case $value in
pankso@117 120 quit)
pankso@117 121 echo "Quit..."
pankso@117 122 exit 0 ;;
pankso@117 123 *)
pankso@117 124 tazpkg get-install xorg-server
pankso@117 125 tazpkg get-install xorg-xf86-video-$value
gokhlayeh@492 126 xorg_conf_d
pankso@117 127 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
pankso@117 128 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
pankso@351 129 XSERVER=Xorg ;;
pankso@117 130 esac
pankso@117 131 }
pankso@117 132
pankso@66 133 # Screen configuration dialog.
pankso@66 134 screen_config_dialog()
pankso@66 135 {
pankso@66 136 exec 3>&1
pankso@535 137 value=`$DIALOG \
pankso@535 138 --clear --colors \
pankso@535 139 --title " Configure X " \
pankso@535 140 --menu \
pankso@535 141 "The 'tazx' application helps you to configure your X session.\n\
pankso@535 142 Window Manager : \Z2$WM\Zn \n\
pankso@535 143 X server : \Z2Xorg\Zn" 16 70 5 \
pankso@535 144 "xorg" "Install or reconfigure Xorg" \
pankso@535 145 "text" "Disable X autostart" \
pankso@535 146 "quit" "Quit Tazx utility" \
pankso@535 147 2>&1 1>&3`
pankso@66 148 retval=$?
pankso@66 149 exec 3>&-
pankso@66 150 # Continue, exit or help...
pankso@66 151 case $retval in
pankso@66 152 0)
pankso@66 153 continue ;;
pankso@66 154 1)
pankso@66 155 echo "Cancel pressed..."
pankso@66 156 exit 0 ;;
pankso@66 157 255)
pankso@66 158 if test -n "$value"; then
pankso@66 159 continue
pankso@66 160 else
pankso@66 161 echo "ESC pressed..."
pankso@66 162 exit 0
pankso@66 163 fi ;;
pankso@66 164 esac
pankso@66 165 # Set selected value.
pankso@66 166 case $value in
pankso@117 167 xorg)
pankso@339 168 install_xorg ;;
pascal@386 169 text)
pascal@386 170 sed -i s/'slim'/''/ /etc/rcS.conf
pascal@386 171 exit 0 ;;
pankso@66 172 *)
pankso@535 173 continue ;;
pankso@66 174 esac
pankso@66 175 }
pankso@4 176
pankso@339 177 # Window manager specific configuration.
pankso@339 178 wm_config()
pankso@66 179 {
pankso@339 180 case $WM in
pankso@339 181 ob|openbox)
pankso@339 182 WM=openbox-session
pankso@339 183 # Check if a personal autostart script exists if OB is installed.
pankso@339 184 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
pankso@339 185 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
pankso@339 186 mkdir -p $HOME/.config/openbox
pankso@339 187 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
pankso@339 188 fi
pankso@339 189 # Script for default user (uid=1000).
pankso@339 190 if [ ! -f "/home/$USER/.config/openbox/autostart.sh" ]; then
pankso@339 191 mkdir -p /home/$USER/.config/openbox
pankso@339 192 cp /etc/xdg/openbox/autostart.sh /home/$USER/.config/openbox
pankso@339 193 fi
pankso@339 194 if [ ! -f "/home/$USER/.config/openbox/menu.xml" ]; then
pankso@339 195 mkdir -p /home/$USER/.config/openbox
pankso@339 196 cp /etc/xdg/openbox/menu.xml /home/$USER/.config/openbox
pankso@339 197 fi
slaxemulator@540 198 chown -R $USER.users /home/$USER/.config
pankso@339 199 fi ;;
pankso@339 200 jwm)
pankso@339 201 WM=jwm
pankso@339 202 JWM_CONFIG=$HOME/.jwmrc
pankso@339 203 if [ -d "/var/lib/tazpkg/installed/jwm" ]; then
pankso@339 204 if [ ! -f "$JWM_CONFIG" ]; then
pankso@339 205 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@339 206 fi
pankso@339 207 # In Live mode default user/root JWM config does not exist and
pankso@402 208 # $HOME is not set, this is because tazx is executed by boot
pankso@339 209 # scripts.
pankso@339 210 if [ ! -f "/home/$USER/.jwmrc" ]; then
pankso@339 211 cp /etc/jwm/system.jwmrc /home/$USER/.jwmrc
slaxemulator@540 212 chown $USER.users /home/$USER/.jwmrc
pankso@339 213 fi
pankso@339 214 if [ ! -f "/root/.jwmrc" -a `id -u` = 0 ]; then
pankso@339 215 cp /etc/jwm/system.jwmrc /root/.jwmrc
pankso@339 216 fi
pankso@339 217 fi ;;
pankso@339 218 pekwm)
pankso@339 219 WM=pekwm
pankso@339 220 if [ -d "/var/lib/tazpkg/installed/pekwm" ]; then
pankso@339 221 if [ -d "$HOME/.pekwm" ]; then
pankso@339 222 cp -R /etc/pekwm $HOME/.pekwm
pankso@339 223 fi
pankso@339 224 # In Live mode we want config before starting pekwm the first time.
pankso@339 225 if [ ! -d "/home/$USER/.pekwm" ]; then
pankso@339 226 cp -R /etc/pekwm /home/$USER/.pekwm
slaxemulator@540 227 chown -R $USER.users /home/$USER/.pekwm
pankso@339 228 chmod +x /home/$USER/.pekwm/start
pankso@339 229 fi
pankso@339 230 if [ ! -d "/root/.pekwm" -a `id -u` = 0 ]; then
pankso@339 231 cp -R /etc/pekwm /root/.pekwm
pankso@339 232 chmod +x /root/.pekwm/start
pankso@339 233 fi
pankso@339 234 fi ;;
pankso@339 235 e17|enlightenment)
pankso@535 236 WM=enlightenment_start ;;
pankso@339 237 fluxbox)
pankso@535 238 WM=startfluxbox ;;
pankso@339 239 dwm|karmen)
pankso@535 240 WM=$WM-session ;;
pankso@339 241 awesome)
pankso@535 242 WM=awesome ;;
erjo@396 243 xfce|xfce4)
pankso@535 244 WM=xfce4-session ;;
pankso@339 245 esac
pankso@81 246 }
pankso@81 247
pankso@68 248 # Sample xinitrc for user (WM can be specified with F1 at slim login).
pankso@68 249 xinitrc_sample()
pankso@68 250 {
pankso@68 251 cat > $FILE << "EOF"
pankso@68 252 # ~/.xinitrc: Executed by slim login manager to startx X session.
paul@515 253 # You can use F1 with Slim to change your window manager or configure
paul@515 254 # it permanently with your personal applications.conf file.
pankso@68 255 #
pankso@339 256 . $HOME/.config/slitaz/applications.conf
pankso@99 257
pankso@117 258 case $1 in
pankso@339 259 e17|enlightenment*)
pankso@315 260 exec enlightenment_start ;;
pankso@162 261 openbox|openbox-session|ob)
pankso@315 262 exec openbox-session ;;
pankso@315 263 dwm|dwm-session)
pankso@315 264 exec dwm-session ;;
pankso@339 265 fluxbox|startfluxbox)
pankso@339 266 exec startfluxbox ;;
pankso@339 267 awesome)
pankso@339 268 exec awesome ;;
pankso@339 269 pekwm)
pankso@339 270 exec pekwm ;;
pankso@339 271 karmen|karmen-session)
pankso@339 272 exec karmen-session ;;
pankso@117 273 jwm)
pankso@81 274 lxpanel &
pankso@315 275 exec jwm ;;
erjo@396 276 xfce|xfce4|xfce4-session)
erjo@396 277 xfce4-session ;;
pankso@117 278 *)
pankso@339 279 exec $WINDOW_MANAGER ;;
pankso@68 280 esac
pankso@68 281 EOF
pankso@339 282 # Set default WM in applications.conf user file. Default WM can be
paul@515 283 # configured graphically with 'desktopbox tazapps'
pankso@339 284 . $CONFIG
pankso@339 285 sed -i s/"WINDOW_MANAGER=.*"/"WINDOW_MANAGER=\"$WM\""/ \
pankso@339 286 $CONFIG
pankso@68 287 }
pankso@68 288
pankso@535 289 # ~/.xinitrc for X login from a DM.
pankso@66 290 creat_xinitrc()
pankso@66 291 {
pankso@68 292 FILE=$HOME/.xinitrc
pankso@339 293 CONFIG=$HOME/.config/slitaz/applications.conf
pankso@339 294 if [ ! -f $CONFIG ]; then
pankso@339 295 mkdir -p $HOME/.config/slitaz
pankso@339 296 cp /etc/slitaz/applications.conf $CONFIG
pankso@339 297 fi
pankso@68 298 xinitrc_sample
pankso@535 299 # .xinitrc and config for /etc/skel so new added user will get
pankso@535 300 # a working X session.
pankso@535 301 if test $(id -u) = 0; then
pankso@535 302 FILE=/etc/skel/.xinitrc
pankso@535 303 CONFIG=/etc/skel/.config/slitaz/applications.conf
pankso@535 304 mkdir -p /etc/skel/.config/slitaz
pankso@535 305 cp -f /etc/slitaz/applications.conf $CONFIG
pankso@535 306 xinitrc_sample
pankso@535 307 fi
pankso@209 308 # In Live mode default user needs a xinitrc, since tazx
pankso@68 309 # is executed only by root.
slaxemulator@538 310 CONFIG=/home/$USER/.config/slitaz/applications.conf
slaxemulator@538 311 if [ ! -f $CONFIG ]; then
slaxemulator@538 312 mkdir -p /home/$USER/.config/slitaz
slaxemulator@538 313 cp /etc/slitaz/applications.conf $CONFIG
slaxemulator@538 314 fi
slaxemulator@540 315 chown -R $USER.users /home/$USER/.config/slitaz
pankso@209 316 if [ ! -f /home/$USER/.xinitrc ]; then
pankso@209 317 FILE=/home/$USER/.xinitrc
pankso@68 318 xinitrc_sample
slaxemulator@540 319 chown $USER.users $FILE
pankso@105 320 fi
pankso@66 321 }
pankso@45 322
MikeDSmith25@252 323 # Create ~/.xsession to keep the configuration selected (used
MikeDSmith25@252 324 # only by startx, Slim login manager uses .xinitrc).
pankso@66 325 creat_xsession()
pankso@66 326 {
gokhlayeh@513 327 [ -f $HOME/.xsession ] && cp -f $HOME/.xsession $HOME/.previous_xsession
pankso@68 328 cat > $HOME/.xsession << _EOF_
pankso@68 329 # ~/.xsession: Start X window session manually on your system (startx).
pankso@37 330 #
pankso@535 331 Xorg &
pankso@535 332 #xterm &
pankso@68 333 _EOF_
pankso@99 334 # LXpanel by default with JWM.
pankso@117 335 if [ "$WM" = "jwm" ]; then
pankso@99 336 echo 'lxpanel &' >> $HOME/.xsession
pankso@99 337 fi
pankso@104 338 echo "exec $WM" >> $HOME/.xsession
pankso@66 339 chmod 700 $HOME/.xsession
pankso@66 340 }
pankso@4 341
pankso@66 342 ###################
pankso@66 343 # Tazx sequence #
pankso@66 344 ###################
pankso@66 345
pankso@351 346 case "$1" in
pankso@351 347 install-xorg)
pankso@351 348 # WM can be specified on cmdline.
pankso@351 349 if [ -n "$2" ]; then
pankso@402 350 WM=$2
pankso@351 351 fi
pankso@535 352 echo "xorg" > /etc/X11/screen.conf
pankso@351 353 install_xorg
pankso@351 354 wm_config
pankso@351 355 creat_xinitrc
pankso@351 356 creat_xsession ;;
pankso@415 357 config-xorg)
pankso@415 358 # WM can be specified on cmdline.
pankso@415 359 if [ -n "$2" ]; then
pankso@415 360 WM=$2
pankso@415 361 fi
pankso@535 362 echo "xorg" > /etc/X11/screen.conf
pankso@415 363 wm_config
pankso@415 364 creat_xinitrc
pankso@415 365 creat_xsession
pascal@564 366 xorg_conf_d
pascal@564 367 if grep -qs screen= /proc/cmdline ; then
pascal@564 368 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
pascal@564 369 sed -i "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
pascal@564 370 /etc/X11/xorg.conf.d/70-Screen.conf
pascal@564 371 fi ;;
pankso@351 372 *)
pankso@351 373 # WM can be specified on cmdline.
pankso@351 374 if [ -n "$1" ]; then
pankso@402 375 WM=$1
pankso@351 376 fi
pankso@535 377 # User can get a new .xinitrc with tazx from cmdline.
pankso@535 378 if test $(id -u) = 0; then
pankso@535 379 echo "xorg" > /etc/X11/screen.conf
pankso@535 380 screen_config_dialog
pankso@535 381 fi
pankso@351 382 wm_config
pankso@351 383 creat_xinitrc
pankso@351 384 creat_xsession ;;
pankso@351 385 esac
pankso@4 386
pankso@4 387 exit 0