slitaz-tools annotate tinyutils/tazx @ rev 1006

Update translations.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Nov 19 23:26:17 2016 +0200 (2016-11-19)
parents 53c750021d6d
children c187e3d49df6
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.
al@926 4 # This tinyutil is part of slitaz-tools. Tazx can configure Xorg with
pankso@626 5 # several Window Managers. The GTK interface to configure X is in tazbox.
pankso@4 6 #
al@939 7 # (c) 2011-2015 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 #
pankso@837 11
paul@838 12 # 20140317: most xsession, xinitrc are obsolete, provided system files
pankso@840 13 # are in /etc/skel and WM config files should no longer be copied by
pankso@840 14 # tazx to user home. If some configs are needed by WMs they should
pankso@840 15 # be set by a /usr/bin/wmname-session script I guess. - Pankso
pankso@837 16
al@813 17 . /lib/libtaz.sh
al@813 18 . /etc/slitaz/slitaz.conf
pankso@840 19
al@813 20 export TEXTDOMAIN='slitaz-tools' #i18n
pascal@916 21 : ${DIALOG=dialog --timeout 60}
pankso@4 22
al@939 23
pankso@534 24 # Default user for config files in Live mode, id is 1000 since it is
pankso@534 25 # created by /etc/init.d/bootopts.sh.
al@926 26
al@926 27 USER=$(awk -F: '/1000/{print $1}' /etc/passwd)
al@926 28
pankso@4 29
pankso@628 30 #
pankso@615 31 # Functions
pankso@628 32 #
pankso@615 33
al@926 34
al@813 35 # Save chunk of xorg.conf into specified file
al@926 36
al@813 37 save_chunk() {
al@813 38 sed -e '/Section "'${1#*-}'"/,/EndSection/!d' \
al@926 39 -e "s/EndSection/&\n/" $xorg_template > \
al@813 40 $xorg_config/$1.conf
pankso@615 41 }
pankso@66 42
al@926 43
al@926 44 # Create a xorg.conf if needed
al@926 45
pankso@871 46 gen_xorg_conf_file() {
pankso@871 47 if [ ! -f /etc/X11/xorg.conf ]; then
pankso@871 48 cat > /etc/X11/xorg.conf << EOT
pankso@871 49 # You can put here your own Xorg configurations. This config file is read
pankso@871 50 # before all files in /etc/X11/xorg.conf.d and will NOT be erased by any
pankso@871 51 # updates.
pankso@871 52 EOT
pankso@871 53 fi
pankso@871 54 }
pankso@871 55
al@926 56
al@926 57 # Add or remove xkb applet from lxpanel
al@926 58
al@926 59 xkb() {
al@926 60 case $(id -u) in
al@926 61 0)
al@926 62 # Empty if lxpanel not running, else something like:
al@926 63 # tux lxpanel -p slitaz
al@926 64 LXPS=$(ps -ouser,args | sed -n '/[l]xpanel/ s| *| |p' | \
al@926 65 fgrep -v '[' | fgrep -v 'xkb' | fgrep -v 'sh')
al@926 66
al@926 67 # Stop lxpanel
al@926 68 if [ -n "$LXPS" ]; then
al@926 69 lxpanelctl exit
al@926 70 killall lxpanel
al@926 71 fi
al@926 72
al@926 73 # For all human users
al@926 74 for USER in $(awk -F: '/\/home\//{print $1}' /etc/passwd); do
al@926 75 su $USER -c '. ~/.profile; tazx xkb'
al@926 76 done
al@926 77
al@926 78 # Re-run lxpanel
al@926 79 [ -n "$LXPS" ] && su ${LXPS%% *} -c "exec ${LXPS#* }" &
al@926 80 ;;
al@926 81
al@926 82 *)
al@926 83 DOTCONFIG=${XDG_CONFIG_HOME:-$HOME/.config}
al@926 84 CFG_LXPANEL=$DOTCONFIG/lxpanel
al@926 85
al@926 86 if [ ! -d $CFG_LXPANEL ]; then
al@926 87 mkdir -p $DOTCONFIG
al@926 88 cp -r /etc/lxpanel $DOTCONFIG
al@926 89 fi
al@926 90
al@926 91 case $(fgrep 'XkbLayout' /etc/X11/xorg.conf.d/40-Keyboard.conf | \
al@926 92 fgrep -o ',') in
al@926 93 '')
al@926 94 for CFG in $(find $CFG_LXPANEL -type f -name panel); do
al@1006 95 if [ -n "$(grep 'type *= *xkb' $CFG)" ]; then
al@926 96 echo "Remove xkb applet from $CFG"
al@926 97 sed -i "$(grep -n -e "^Plugin {" -e "^}" -e "xkb" \
al@926 98 $CFG | grep -C 1 xkb | grep -v xkb | cut -d: \
al@926 99 -f1 | tr '\n' ' ' | sed 's| |,|')d" $CFG
al@926 100 fi
al@926 101 done ;;
al@926 102 ',')
al@926 103 for CFG in $(find $CFG_LXPANEL -type f -name panel); do
al@1006 104 if [ -z "$(grep 'type *= *xkb' $CFG)" ]; then
al@926 105 echo "Add xkb applet to $CFG"
al@926 106 XKB='Plugin {\
al@926 107 type = xkb\
al@926 108 Config {\
al@952 109 DisplayType=1\
al@926 110 PerWinLayout=0\
al@926 111 NoResetOpt=0\
al@926 112 KeepSysLayouts=1\
al@926 113 Model=pc105\
al@926 114 LayoutsList=us\
al@926 115 VariantsList=,\
al@926 116 ToggleOpt=shift_caps_toggle\
al@926 117 FlagSize=4\
al@926 118 }\
al@926 119 }\
al@926 120 '
al@926 121 sed -i "$(grep -n -e "^Plugin {" -e "tray" $CFG | \
al@926 122 grep -B1 tray | head -n1 | cut -d: -f1) i\\
al@926 123 $XKB" $CFG
al@926 124 fi
al@926 125 done ;;
al@926 126 esac ;;
al@926 127 esac
al@926 128 }
al@926 129
al@926 130
pankso@870 131 # Generate or regenerate 40-Keyboard.conf
al@926 132
pankso@870 133 keyboard_conf() {
al@926 134 # Configure the keyboard with the right keymap
al@813 135 keymap=$(cat /etc/keymap.conf)
pankso@874 136 keyboard_config="/etc/X11/xorg.conf.d/40-Keyboard.conf"
al@779 137 variant=""
al@926 138
al@779 139 # this XkbOption moved from 40-evdev.conf (xorg-xf86-input-evdev)
al@779 140 options="terminate:ctrl_alt_bksp"
al@926 141 _n 'Creating:'; echo -n " $keyboard_config"
pankso@874 142 mkdir -p $(dirname $keyboard_config)
al@926 143
al@948 144 # Reference: syslinux receipt; LXPanel keyboard layout switcher
pankso@874 145 case "$keymap" in
al@948 146 # Swiss FrenCH
al@948 147 fr_CH-latin1) layout='ch'; variant='fr' ;;
al@948 148 # English UK
al@948 149 uk) layout='gb' ;;
al@948 150 # Greek
al@948 151 gr) layout='us,gr'
al@946 152 options="grp:ctrl_shift_toggle, grp_led:scroll, compose:ralt, $options" ;;
al@948 153 # Russian
al@948 154 ru) layout='us,ru'
al@926 155 options="grp:ctrl_shift_toggle, grp_led:scroll, compose:ralt, $options" ;;
al@948 156 # Ukrainian
al@948 157 ua) layout='us,ua,ru'
al@926 158 options="grp:ctrl_shift_toggle, compose:ralt, $options" ;;
al@948 159 # Slovenian
al@948 160 slovene) layout='si' ;;
al@948 161 # Brasil (us-acentos); English US (acentos)
al@948 162 us-acentos) layout='us'; variant='intl' ;;
al@948 163 # Deutsch Schweiz
al@948 164 de_CH-latin1) layout='ch' ;;
al@948 165 # Deutsch Schweiz (sg) in syslinux menu
al@948 166 sg-latin1)
al@948 167 # I can't guess appropriate layout for this one
al@948 168 ;;
al@948 169 # Dvorak
al@948 170 dvorak) layout='us'; variant='dvorak' ;;
al@948 171 dvorak-l) layout='us'; variant='dvorak-l' ;;
al@948 172 dvorak-r) layout='us'; variant='dvorak-r' ;;
al@948 173 # French (Canada)
al@948 174 cf) layout='ca' ;;
al@948 175 # Croatian
al@948 176 hr,croat|croat) layout='hr' ;;
al@948 177 # Japanese
al@948 178 jp106) layout='jp' ;; # is ok?
al@948 179 # Dutch
al@948 180 nl2) layout='nl' ;;
al@948 181 # Polish
al@948 182 pl2) layout='pl' ;;
al@948 183 # Turkish
al@948 184 trq) layout='tr' ;;
al@948 185 tr_q-latin5) layout='tr'; variant='ku' ;; # is ok?
al@952 186 # Persian(Farsi) (Iran)
al@952 187 ir) layout='us,ir'
al@952 188 options="grp:alt_shift_toggle, grp_led:scroll, $options" ;;
pankso@260 189 *)
pankso@260 190 # Use clean /etc/keymap.conf value.
gokhlayeh@492 191 keymap=${keymap%-latin1}
gokhlayeh@492 192 keymap=${keymap%-lat2}
gokhlayeh@492 193 keymap=${keymap%-lat6}
al@779 194 layout=${keymap%-abnt2}
pankso@260 195 esac
al@926 196
al@959 197 update_conf=''
al@959 198 if [ -e "$keyboard_config" ]; then
al@959 199 actual_layout="$(awk 'BEGIN{FS="\""}{if($2=="XkbLayout")print $4}' $keyboard_config)"
al@959 200 # config not matched '/etc/keymap.conf', update
al@959 201 [ "$layout" != "$actual_layout" ] && update_conf='1'
al@959 202 else
al@959 203 # config absent, create
al@959 204 update_conf='1'
al@959 205 fi
al@959 206
al@959 207 [ -n "$update_conf" ] && cat > $keyboard_config << EOC
al@779 208 Section "InputClass"
al@779 209 Identifier "Keyboard Defaults"
al@779 210 MatchIsKeyboard "yes"
al@779 211 Option "XkbLayout" "$layout"
al@779 212 Option "XkbVariant" "$variant"
al@779 213 Option "XkbOptions" "$options"
al@779 214 EndSection
al@779 215 EOC
al@926 216
pankso@874 217 status
al@926 218 [ -z "$variant" ] && sed -i '/XkbVariant/d' $keyboard_config
psychomaniak@932 219 [ -z $(busybox which lxpanel) ] || xkb
pankso@870 220 }
pankso@870 221
al@926 222
al@926 223 # Populate xorg.conf.d
al@926 224
pankso@870 225 xorg_conf_d() {
pankso@870 226 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d)
pankso@870 227 xorg_config=/etc/X11/xorg.conf.d
pankso@870 228
pankso@870 229 # Define the xorg.conf.new place.
pankso@870 230 xorg_template=/root/xorg.conf.new
pankso@870 231
pankso@870 232 # Obtain a default configuration file from Xorg.
pankso@870 233 Xorg -configure :2
pankso@870 234
pankso@870 235 # Backup existing config.
al@926 236 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null
pankso@870 237
pankso@870 238 # Put the different sections in separate files in the config directory.
pankso@870 239 save_chunk 10-ServerLayout
pankso@870 240 sed -i '/Core/d' $xorg_config/10-ServerLayout.conf
pankso@870 241 save_chunk 20-Files
pankso@870 242 save_chunk 30-Module
pankso@870 243 save_chunk 50-Monitor
pankso@870 244 save_chunk 60-Device
pankso@870 245 save_chunk 70-Screen
pankso@870 246
pankso@870 247 # Remove the template.
pankso@870 248 rm $xorg_template
pankso@870 249
pankso@871 250 # Keyboard & xorg.conf
pankso@870 251 keyboard_conf
pankso@871 252 gen_xorg_conf_file
pankso@260 253 }
pankso@260 254
al@926 255
al@926 256 # Process dialog's return code.
al@926 257
psychomaniak@912 258 dialog_end() {
psychomaniak@912 259 retval=$?
psychomaniak@912 260 exec 3>&-
psychomaniak@912 261 # Continue or exit.
psychomaniak@912 262 case $retval in
al@926 263 0|3) continue ;;
al@926 264 1|255) exit 0 ;;
psychomaniak@912 265 esac
psychomaniak@912 266 }
psychomaniak@912 267
al@926 268
paul@549 269 # Install xorg server.
al@926 270
al@813 271 install_xorg() {
al@926 272 [ -f "$PKGS_DB/packages.list" ] || tazpkg recharge
al@926 273
pankso@117 274 exec 3>&1
al@926 275
al@926 276 driver=$($DIALOG \
al@926 277 --clear --colors --scrollbar --title " $(_ 'Install Xorg') " \
al@926 278 --menu "$(_ 'Tazx helps you to select your X driver.')" 16 70 9 \
al@926 279 'auto' "$(_ 'Auto configuring')" \
al@926 280 $(fgrep xorg-xf86-video- $PKGS_DB/packages.list | cut -d- -f4 | \
al@926 281 sed "s|.*|& $(_ 'driver')|") \
al@926 282 'quit' "$(_ 'Quit')" \
al@926 283 2>&1 1>&3)
al@926 284
psychomaniak@912 285 dialog_end
al@813 286
al@926 287 case $driver in
pankso@628 288 quit) exit 0 ;;
al@926 289 auto) autoselect_driver ;;
pankso@117 290 *)
psychomaniak@912 291 inst_pkg xorg-server
al@926 292 inst_pkg xorg-xf86-video-$driver
pankso@628 293 xorg_conf_d ;;
pankso@117 294 esac
pankso@117 295 }
pankso@117 296
al@925 297
al@926 298 # Auto-select and install Xorg driver.
al@926 299
psychomaniak@918 300 autoselect_driver() {
al@925 301 inst_pkg xorg-server
al@925 302
al@924 303 for VID in $(busybox lspci | grep 'Class 03' | cut -c21-24 | sort -u); do
al@924 304 case $VID in
al@924 305 1022|1002) d=ati ;;
al@924 306 8086) d=intel ;;
al@924 307 10de) d=nouveau ;;
al@924 308 1039) d=sis ;;
al@924 309 15ad) d=vmware ;;
al@925 310 *) d=''; $DIALOG --colors --msgbox \
al@926 311 "\n\Z1$(_n 'Failed to setup driver')\Zn $(_ '(unknown hardware)')" 7 68 ;;
al@924 312 esac
al@925 313 [ -n "$d" ] && inst_pkg xorg-xf86-video-$d
psychomaniak@978 314 [ -n "$d" ] && inst_pkg mesa-dri-$d
al@924 315 done
psychomaniak@918 316 }
psychomaniak@918 317
al@926 318
al@926 319 # Install specified package.
al@926 320
psychomaniak@912 321 inst_pkg() {
al@926 322 pkg="$@"
al@943 323 colorize 3 $(_ 'Installing pkg: %s' "$pkg")
al@926 324
al@926 325 case $(id -u) in
al@926 326 0) CMD="tazpkg -gi $@" ;;
al@926 327 *) CMD="sudo tazpkg -gi $@" ;;
al@926 328 esac
al@926 329 [ -d "$INSTALLED/$@" ] || $CMD
psychomaniak@909 330 }
psychomaniak@909 331
al@926 332
al@926 333 # Select/install Window Manager and favorite applications.
al@926 334
psychomaniak@912 335 apps_dialog() {
psychomaniak@931 336 slitaz_apps_conf
al@926 337 . $user_conf
al@926 338
psychomaniak@912 339 exec 3>&1
al@926 340
psychomaniak@978 341 app=$($DIALOG --clear --colors --backtitle "$msg" --ok-label " $(_n 'Install')..." \
al@926 342 --title "{\Z3 $(_n 'Install Window Manager and applications') \Zn}" \
psychomaniak@918 343 --inputmenu "" 21 52 18 \
al@926 344 $(for a in WINDOW_MANAGER EDITOR BROWSER TERMINAL FILE_MANAGER; do
al@926 345 eval n='$'$a; echo $a $n;
al@926 346 done) 2>&1 1>&3)
psychomaniak@912 347 dialog_end
al@926 348
psychomaniak@912 349 case $app in
psychomaniak@935 350 RENAMED*) # like: RENAMED EDITOR myeditor
al@926 351 appname=$(echo $app | cut -d" " -f3)
al@926 352 app=$(echo $app | cut -d" " -f2) ;;
psychomaniak@912 353 *)
al@926 354 app_name_dialog only-installed ;;
psychomaniak@912 355 esac
al@926 356
al@943 357 if [ "$appname" != " " ]; then
al@943 358 if [ "$appname" == 'show_ALL' ]; then
al@926 359 app_name_dialog full-list
psychomaniak@931 360 inst_pkg $appname
psychomaniak@912 361 fi
al@926 362 if [ -z $(busybox which $appname) ]; then
psychomaniak@935 363 inst_pkg $appname
al@926 364 inst_pkg $(lzcat $PKGS_DB/files.list.lzma | fgrep /bin/$appname | head -n1 | cut -d: -f1)
al@926 365 fi
psychomaniak@931 366 sed -i "/$app/ s|=.*$|=\"$appname\"|" $user_conf
psychomaniak@912 367 fi
al@926 368
al@926 369 msg=''; apps_dialog # loop
psychomaniak@912 370 }
psychomaniak@912 371
al@926 372
al@926 373 # Show list of applications to choose.
al@926 374
psychomaniak@912 375 app_name_dialog() {
al@926 376 case $1 in
al@943 377 full-list) height='24' ;;
al@943 378 *) height='18' ;;
al@926 379 esac
al@926 380
psychomaniak@912 381 exec 3>&1
al@926 382
al@926 383 appname=$($DIALOG --clear --colors --title "$app" \
al@926 384 --menu '' $height 50 24 $(gen_applist $app $@) 2>&1 1>&3)
psychomaniak@912 385 dialog_end
psychomaniak@912 386 }
psychomaniak@912 387
al@926 388
al@926 389 # Generate application list for Dialog or Yad.
al@926 390
psychomaniak@912 391 gen_applist() {
al@926 392 # $1 = [ FILE_MANAGER | BROWSER | EDITOR | TERMINAL | WINDOW_MANAGER ]
al@926 393 # $2 = [ only-installed | full-list ]
al@926 394 # $3 = [ yad | * ]
al@926 395
al@926 396 . $user_conf
al@926 397
al@926 398 FILE_MANAGERS="clex caja emelfm2 mc pathfinder pcmanfm pcmanfm-qt ranger \
al@926 399 spacefm thunar xfe ytree"
al@926 400
al@926 401 BROWSERS="arora chrome cream dillo elinks firefox firefox-official iron \
psychomaniak@978 402 links lynx midori netsurf opera palemoon QtWeb qupzilla retawq seamonkey surf \
psychomaniak@978 403 tazweb w3m xombrero"
al@926 404
psychomaniak@931 405 EDITORS="adie beaver bluefish emacs geany jed joe juffed ht le leafpad \
psychomaniak@931 406 mcedit mousepad mp-5 nano qedit SciTE tea vi vim xedit xfw zile"
al@926 407
al@926 408 TERMINALS="aterm evilvte lxterminal mrxvt qterminal sakura stjerm tilda \
psychomaniak@931 409 urxvt vte xfce4-terminal xterm yeahconsole"
al@926 410
al@926 411 WINDOW_MANAGERS="awesome blackbox compiz dwm echinus enlightenment fluxbox \
al@926 412 icewm jwm lxde-session lxqt karmen matchbox openbox-session pekwm ratpoison \
al@926 413 xfwm4"
psychomaniak@912 414
psychomaniak@912 415 eval list='$'"$1"S
psychomaniak@912 416 eval current='$'"$1"
al@926 417
al@926 418 for i in $current $(echo " $list " | sed "s| $current | |g"); do
al@926 419
al@926 420 case $(busybox which $i) in
al@926 421 '') # not installed
al@926 422 t='---' ;;
al@926 423 *) # installed
al@926 424 t='<--' ;;
al@926 425 esac
al@926 426
al@926 427 if [ "$2" == 'full-list' ] || [ "$t" == '<--' ]; then
al@926 428 echo "$i"
al@926 429
al@926 430 if [ "$3" != 'yad' ]; then
al@926 431 echo "$(echo $t | sed "s|---|$(_n 'Install')|g")"
al@926 432 fi
al@926 433 fi
al@926 434 done
al@926 435
al@926 436 if [ "$2" == 'only-installed' ] && [ "$3" != 'yad' ]; then
al@926 437 echo 'show_ALL' "+$(_n 'Install')"
psychomaniak@912 438 fi
psychomaniak@912 439 }
psychomaniak@912 440
al@926 441
psychomaniak@912 442 # Screen configuration dialog.
al@926 443
al@813 444 config_dialog() {
al@926 445 . /etc/rcS.conf
al@926 446 case $LOGIN_MANAGER in
al@926 447 slim) LM="$(_ 'ON')" ;;
al@926 448 *) LM="$(_ 'OFF')" ;;
al@926 449 esac
psychomaniak@909 450
pankso@66 451 exec 3>&1
al@926 452
al@813 453 value=$($DIALOG \
pankso@535 454 --clear --colors \
pankso@840 455 --title "{ $(_n 'SliTaz Xorg config') }" \
pankso@840 456 --menu "" 16 72 10 \
pankso@840 457 "xorg" "$(_n 'Install or reconfigure Xorg')" \
pankso@840 458 "xorg-light" "$(_n 'Install Xorg server (light version)')" \
al@926 459 "onboot" "$(_n 'AutoStart Xorg by SLiM on boot'): \Z5$LM\Zn" \
psychomaniak@909 460 "slim" "$(_n '(Re)Start Simple Login Manager now')" \
al@926 461 "wm_apps" "$(_n 'Install Window Manager and applications')" \
pankso@840 462 "quit" "$(_n 'Quit Tazx utility')" \
al@813 463 2>&1 1>&3)
psychomaniak@912 464 dialog_end
al@926 465
pankso@840 466 case "$value" in
psychomaniak@912 467 xorg)
pankso@339 468 install_xorg ;;
al@926 469
pankso@840 470 xorg-light)
psychomaniak@912 471 inst_pkg xorg-server-light
psychomaniak@912 472 inst_pkg xorg-xf86-video-fbdev
pankso@840 473 xorg_conf_d ;;
al@926 474
psychomaniak@909 475 onboot)
al@926 476 inst_pkg slim
al@926 477 inst_pkg dbus
al@926 478
al@926 479 if [ $LM == "$(_ 'OFF')" ]; then
al@926 480 LM='slim'
al@926 481 else
al@926 482 LM=''
psychomaniak@909 483 fi
al@926 484 sed -i "/LOGIN_MANAGER/ s|=.*$|=$LM|" /etc/rcS.conf
al@926 485
al@926 486 [ -z "$LM" ] && LM='disabled'
al@926 487 _n "Start X on boot:"; boldify " $LM" ;;
al@926 488
psychomaniak@909 489 slim)
al@926 490 inst_pkg slim
al@926 491 inst_pkg dbus
al@926 492 if [ -z $XAUTHORITY ]; then
al@926 493 stopd slim; sleep 2; startd slim
al@926 494 fi ;;
al@926 495
psychomaniak@912 496 wm_apps)
al@926 497 apps_dialog ;;
al@926 498
pankso@840 499 *)
pankso@840 500 exit 0 ;;
pankso@66 501 esac
pankso@66 502 }
pankso@4 503
al@926 504
pankso@870 505 # ~/.config/slitaz/applications.conf: Missing = failed to login
pankso@876 506 # Make users applications.conf in /etc/skel so new added user will get
pankso@876 507 # a working X session. Note --> flavors can have a custom config in
pankso@876 508 # /etc/slitaz/applications that we must use.
al@926 509
pankso@870 510 slitaz_apps_conf() {
pankso@840 511 apps_conf=/etc/slitaz/applications.conf
al@926 512
psychomaniak@933 513 [ -f $apps_conf ] || inst_pkg slitaz-configs --forced
psychomaniak@933 514
al@943 515 if [ "$(id -u)" -eq 0 ]; then
al@943 516 user_conf="$apps_conf"
al@943 517 new_user_conf='/etc/skel/.config/slitaz/applications.conf'
al@926 518 mkdir -p $(dirname $new_user_conf)
al@926 519 cp -f $apps_conf $new_user_conf
pankso@876 520 else
pankso@876 521 # If started by: startx and with boot opts screen=text
al@926 522 user_conf="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf"
pankso@876 523 if [ ! -f "$user_conf" ]; then
al@926 524 mkdir -p $(dirname $user_conf)
al@926 525 cp $apps_conf $user_conf
pankso@876 526 fi
slaxemulator@538 527 fi
psychomaniak@918 528 [ -f "$HOME/.xinitrc" ] || inst_pkg slitaz-configs-base --forced
pankso@66 529 }
pankso@4 530
al@926 531
psychomaniak@933 532 # Handle live options: screen= video=
al@939 533
psychomaniak@933 534 proc_cmdline()
psychomaniak@933 535 {
psychomaniak@933 536 if grep -qs 'screen=' /proc/cmdline ; then
psychomaniak@933 537 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
psychomaniak@933 538 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
psychomaniak@933 539 -i ${xorg_config}/70-Screen.conf
psychomaniak@933 540 elif grep -qs 'video=' /proc/cmdline ; then
psychomaniak@933 541 MODE="$(sed 's/.*video=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
psychomaniak@933 542 DEPTH=$(sed 's/.*video=.*-\([0-9]*\).*/\1/' < /proc/cmdline)
psychomaniak@933 543 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
psychomaniak@933 544 -i ${xorg_config}/70-Screen.conf
psychomaniak@933 545 set_depth $DEPTH
psychomaniak@933 546 fi
psychomaniak@933 547 }
psychomaniak@933 548
al@939 549
psychomaniak@933 550 set_depth()
psychomaniak@933 551 {
psychomaniak@933 552 case "$1" in
psychomaniak@935 553 8|15|16|24|32) colors=$1 ;;
psychomaniak@933 554 *)
psychomaniak@933 555 exec 3>&1
psychomaniak@933 556 colors=$($DIALOG --menu " " 12 12 12 \
psychomaniak@935 557 32 truecolor 24 truecolor 16 hicolor 15 hicolor 8 256colors 2>&1 1>&3)
psychomaniak@933 558 dialog_end ;;
psychomaniak@933 559 esac
psychomaniak@978 560 (grep -q 'DefaultDepth' ${xorg_config}/70-Screen.conf) || \
psychomaniak@933 561 sed 's|Monitor.*"$|&\n\tDefaultDepth '$colors'|' -i ${xorg_config}/70-Screen.conf
psychomaniak@933 562 }
psychomaniak@933 563
psychomaniak@933 564
psychomaniak@933 565
pankso@840 566 # Commands
pankso@66 567
pankso@351 568 case "$1" in
pankso@351 569 install-xorg)
pankso@840 570 check_root
pankso@351 571 install_xorg
pankso@870 572 slitaz_apps_conf ;;
al@926 573
pankso@415 574 config-xorg)
pankso@840 575 check_root
pankso@870 576 slitaz_apps_conf
pankso@840 577 xorg_conf_d
psychomaniak@933 578 proc_cmdline ;;
al@926 579
pankso@870 580 init)
paul@885 581 # We don't need much config files with last Xorg version, So just
paul@885 582 # get files for starting an X session and config the keyboard.
pankso@870 583 check_root
psychomaniak@933 584 slitaz_apps_conf
al@926 585 keyboard_conf
pankso@871 586 gen_xorg_conf_file ;;
al@926 587
pankso@879 588 keyboard)
pankso@870 589 keyboard_conf ;;
al@926 590
psychomaniak@912 591 get-applist)
psychomaniak@912 592 slitaz_apps_conf
psychomaniak@912 593 gen_applist $2 $3 $4 ;;
al@926 594
psychomaniak@918 595 auto)
al@925 596 autoselect_driver ;;
al@926 597
psychomaniak@918 598 bpp)
psychomaniak@918 599 check_root
psychomaniak@918 600 xorg_conf_d
psychomaniak@935 601 proc_cmdline
psychomaniak@933 602 set_depth $2 ;;
al@926 603
al@926 604 xkb)
al@926 605 xkb ;;
al@926 606
psychomaniak@935 607
psychomaniak@933 608 *help|-h|-?)
al@926 609 emsg "
paul@929 610 <b>tazx</b> - $(_ 'Configuration tool for SliTaz GNU/Linux')
al@926 611
al@926 612 <c 33>$(_ 'Usage:')</c> <b>tazx</b> <c 34>$(_ 'command')</c> $(_ 'parameter')
al@926 613
al@926 614 <c 34>$(_ 'Commands:')</c>
al@926 615 install-xorg $(_ 'Install Xorg and selected Xorg driver')
al@926 616 config-xorg $(_ 'Configure Xorg, generate configuration files')
al@926 617 bpp $(_ 'Set monitor default depth (valid parameters: 8, 15, 16 or 24)')
al@926 618 auto $(_ 'Auto-select and install Xorg driver')
al@926 619 init $(_ 'Get files for starting an X session and config the keyboard')
al@926 620 keyboard $(_ 'Generate or regenerate Xorg keyboard config')
al@926 621 "
al@926 622 ;;
al@926 623
pankso@351 624 *)
pankso@615 625 # User can get a new .xinitrc with tazx from cmdline.
al@926 626 case $(id -u) in
al@926 627 0)
al@926 628 config_dialog ;;
al@926 629 *)
al@926 630 msg="\Z1 $(_n 'Run tazx as root if you need to configure xorg') \Zn"
al@926 631 apps_dialog ;;
al@926 632 esac
psychomaniak@912 633 # gen_xsession
psychomaniak@912 634 ;;
pankso@351 635 esac
pankso@4 636
pankso@4 637 exit 0