slitaz-tools annotate tinyutils/tazx @ rev 952
tazx: by default display keyboard layout as text (not flag), add "ir" layout handler
(kmap=ir in the Kernel commandline)
(kmap=ir in the Kernel commandline)
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Sat Nov 07 22:00:04 2015 +0200 (2015-11-07) |
parents | d2690cb5e6d1 |
children | c6b3e0d9a922 |
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@926 | 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@926 | 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@779 | 197 cat > $keyboard_config << EOC |
al@779 | 198 Section "InputClass" |
al@779 | 199 Identifier "Keyboard Defaults" |
al@779 | 200 MatchIsKeyboard "yes" |
al@779 | 201 Option "XkbLayout" "$layout" |
al@779 | 202 Option "XkbVariant" "$variant" |
al@779 | 203 Option "XkbOptions" "$options" |
al@779 | 204 EndSection |
al@779 | 205 EOC |
al@926 | 206 |
pankso@874 | 207 status |
al@926 | 208 [ -z "$variant" ] && sed -i '/XkbVariant/d' $keyboard_config |
psychomaniak@932 | 209 [ -z $(busybox which lxpanel) ] || xkb |
pankso@870 | 210 } |
pankso@870 | 211 |
al@926 | 212 |
al@926 | 213 # Populate xorg.conf.d |
al@926 | 214 |
pankso@870 | 215 xorg_conf_d() { |
pankso@870 | 216 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d) |
pankso@870 | 217 xorg_config=/etc/X11/xorg.conf.d |
pankso@870 | 218 |
pankso@870 | 219 # Define the xorg.conf.new place. |
pankso@870 | 220 xorg_template=/root/xorg.conf.new |
pankso@870 | 221 |
pankso@870 | 222 # Obtain a default configuration file from Xorg. |
pankso@870 | 223 Xorg -configure :2 |
pankso@870 | 224 |
pankso@870 | 225 # Backup existing config. |
al@926 | 226 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null |
pankso@870 | 227 |
pankso@870 | 228 # Put the different sections in separate files in the config directory. |
pankso@870 | 229 save_chunk 10-ServerLayout |
pankso@870 | 230 sed -i '/Core/d' $xorg_config/10-ServerLayout.conf |
pankso@870 | 231 save_chunk 20-Files |
pankso@870 | 232 save_chunk 30-Module |
pankso@870 | 233 save_chunk 50-Monitor |
pankso@870 | 234 save_chunk 60-Device |
pankso@870 | 235 save_chunk 70-Screen |
pankso@870 | 236 |
pankso@870 | 237 # Remove the template. |
pankso@870 | 238 rm $xorg_template |
pankso@870 | 239 |
pankso@871 | 240 # Keyboard & xorg.conf |
pankso@870 | 241 keyboard_conf |
pankso@871 | 242 gen_xorg_conf_file |
pankso@260 | 243 } |
pankso@260 | 244 |
al@926 | 245 |
al@926 | 246 # Process dialog's return code. |
al@926 | 247 |
psychomaniak@912 | 248 dialog_end() { |
psychomaniak@912 | 249 retval=$? |
psychomaniak@912 | 250 exec 3>&- |
psychomaniak@912 | 251 # Continue or exit. |
psychomaniak@912 | 252 case $retval in |
al@926 | 253 0|3) continue ;; |
al@926 | 254 1|255) exit 0 ;; |
psychomaniak@912 | 255 esac |
psychomaniak@912 | 256 } |
psychomaniak@912 | 257 |
al@926 | 258 |
paul@549 | 259 # Install xorg server. |
al@926 | 260 |
al@813 | 261 install_xorg() { |
al@926 | 262 [ -f "$PKGS_DB/packages.list" ] || tazpkg recharge |
al@926 | 263 |
pankso@117 | 264 exec 3>&1 |
al@926 | 265 |
al@926 | 266 driver=$($DIALOG \ |
al@926 | 267 --clear --colors --scrollbar --title " $(_ 'Install Xorg') " \ |
al@926 | 268 --menu "$(_ 'Tazx helps you to select your X driver.')" 16 70 9 \ |
al@926 | 269 'auto' "$(_ 'Auto configuring')" \ |
al@926 | 270 $(fgrep xorg-xf86-video- $PKGS_DB/packages.list | cut -d- -f4 | \ |
al@926 | 271 sed "s|.*|& $(_ 'driver')|") \ |
al@926 | 272 'quit' "$(_ 'Quit')" \ |
al@926 | 273 2>&1 1>&3) |
al@926 | 274 |
psychomaniak@912 | 275 dialog_end |
al@813 | 276 |
al@926 | 277 case $driver in |
pankso@628 | 278 quit) exit 0 ;; |
al@926 | 279 auto) autoselect_driver ;; |
pankso@117 | 280 *) |
psychomaniak@912 | 281 inst_pkg xorg-server |
al@926 | 282 inst_pkg xorg-xf86-video-$driver |
pankso@628 | 283 xorg_conf_d ;; |
pankso@117 | 284 esac |
pankso@117 | 285 } |
pankso@117 | 286 |
al@925 | 287 |
al@926 | 288 # Auto-select and install Xorg driver. |
al@926 | 289 |
psychomaniak@918 | 290 autoselect_driver() { |
al@925 | 291 inst_pkg xorg-server |
al@925 | 292 |
al@924 | 293 for VID in $(busybox lspci | grep 'Class 03' | cut -c21-24 | sort -u); do |
al@924 | 294 case $VID in |
al@924 | 295 1022|1002) d=ati ;; |
al@924 | 296 8086) d=intel ;; |
al@924 | 297 10de) d=nouveau ;; |
al@924 | 298 1039) d=sis ;; |
al@924 | 299 15ad) d=vmware ;; |
al@925 | 300 *) d=''; $DIALOG --colors --msgbox \ |
al@926 | 301 "\n\Z1$(_n 'Failed to setup driver')\Zn $(_ '(unknown hardware)')" 7 68 ;; |
al@924 | 302 esac |
al@925 | 303 [ -n "$d" ] && inst_pkg xorg-xf86-video-$d |
al@924 | 304 done |
psychomaniak@918 | 305 } |
psychomaniak@918 | 306 |
al@926 | 307 |
al@926 | 308 # Install specified package. |
al@926 | 309 |
psychomaniak@912 | 310 inst_pkg() { |
al@926 | 311 pkg="$@" |
al@943 | 312 colorize 3 $(_ 'Installing pkg: %s' "$pkg") |
al@926 | 313 |
al@926 | 314 case $(id -u) in |
al@926 | 315 0) CMD="tazpkg -gi $@" ;; |
al@926 | 316 *) CMD="sudo tazpkg -gi $@" ;; |
al@926 | 317 esac |
al@926 | 318 [ -d "$INSTALLED/$@" ] || $CMD |
psychomaniak@909 | 319 } |
psychomaniak@909 | 320 |
al@926 | 321 |
al@926 | 322 # Select/install Window Manager and favorite applications. |
al@926 | 323 |
psychomaniak@912 | 324 apps_dialog() { |
psychomaniak@931 | 325 slitaz_apps_conf |
al@926 | 326 . $user_conf |
al@926 | 327 |
psychomaniak@912 | 328 exec 3>&1 |
al@926 | 329 |
psychomaniak@918 | 330 app=$($DIALOG --clear --colors --backtitle "$msg" \ |
al@926 | 331 --title "{\Z3 $(_n 'Install Window Manager and applications') \Zn}" \ |
psychomaniak@918 | 332 --inputmenu "" 21 52 18 \ |
al@926 | 333 $(for a in WINDOW_MANAGER EDITOR BROWSER TERMINAL FILE_MANAGER; do |
al@926 | 334 eval n='$'$a; echo $a $n; |
al@926 | 335 done) 2>&1 1>&3) |
psychomaniak@912 | 336 dialog_end |
al@926 | 337 |
psychomaniak@912 | 338 case $app in |
psychomaniak@935 | 339 RENAMED*) # like: RENAMED EDITOR myeditor |
al@926 | 340 appname=$(echo $app | cut -d" " -f3) |
al@926 | 341 app=$(echo $app | cut -d" " -f2) ;; |
psychomaniak@912 | 342 *) |
al@926 | 343 app_name_dialog only-installed ;; |
psychomaniak@912 | 344 esac |
al@926 | 345 |
al@943 | 346 if [ "$appname" != " " ]; then |
al@943 | 347 if [ "$appname" == 'show_ALL' ]; then |
al@926 | 348 app_name_dialog full-list |
psychomaniak@931 | 349 inst_pkg $appname |
psychomaniak@912 | 350 fi |
al@926 | 351 if [ -z $(busybox which $appname) ]; then |
psychomaniak@935 | 352 inst_pkg $appname |
al@926 | 353 inst_pkg $(lzcat $PKGS_DB/files.list.lzma | fgrep /bin/$appname | head -n1 | cut -d: -f1) |
al@926 | 354 fi |
psychomaniak@931 | 355 sed -i "/$app/ s|=.*$|=\"$appname\"|" $user_conf |
psychomaniak@912 | 356 fi |
al@926 | 357 |
al@926 | 358 msg=''; apps_dialog # loop |
psychomaniak@912 | 359 } |
psychomaniak@912 | 360 |
al@926 | 361 |
al@926 | 362 # Show list of applications to choose. |
al@926 | 363 |
psychomaniak@912 | 364 app_name_dialog() { |
al@926 | 365 case $1 in |
al@943 | 366 full-list) height='24' ;; |
al@943 | 367 *) height='18' ;; |
al@926 | 368 esac |
al@926 | 369 |
psychomaniak@912 | 370 exec 3>&1 |
al@926 | 371 |
al@926 | 372 appname=$($DIALOG --clear --colors --title "$app" \ |
al@926 | 373 --menu '' $height 50 24 $(gen_applist $app $@) 2>&1 1>&3) |
psychomaniak@912 | 374 dialog_end |
psychomaniak@912 | 375 } |
psychomaniak@912 | 376 |
al@926 | 377 |
al@926 | 378 # Generate application list for Dialog or Yad. |
al@926 | 379 |
psychomaniak@912 | 380 gen_applist() { |
al@926 | 381 # $1 = [ FILE_MANAGER | BROWSER | EDITOR | TERMINAL | WINDOW_MANAGER ] |
al@926 | 382 # $2 = [ only-installed | full-list ] |
al@926 | 383 # $3 = [ yad | * ] |
al@926 | 384 |
al@926 | 385 . $user_conf |
al@926 | 386 |
al@926 | 387 FILE_MANAGERS="clex caja emelfm2 mc pathfinder pcmanfm pcmanfm-qt ranger \ |
al@926 | 388 spacefm thunar xfe ytree" |
al@926 | 389 |
al@926 | 390 BROWSERS="arora chrome cream dillo elinks firefox firefox-official iron \ |
al@943 | 391 links lynx midori netsurf opera QtWeb qupzilla retawq seamonkey surf tazweb \ |
al@943 | 392 w3m xombrero" |
al@926 | 393 |
psychomaniak@931 | 394 EDITORS="adie beaver bluefish emacs geany jed joe juffed ht le leafpad \ |
psychomaniak@931 | 395 mcedit mousepad mp-5 nano qedit SciTE tea vi vim xedit xfw zile" |
al@926 | 396 |
al@926 | 397 TERMINALS="aterm evilvte lxterminal mrxvt qterminal sakura stjerm tilda \ |
psychomaniak@931 | 398 urxvt vte xfce4-terminal xterm yeahconsole" |
al@926 | 399 |
al@926 | 400 WINDOW_MANAGERS="awesome blackbox compiz dwm echinus enlightenment fluxbox \ |
al@926 | 401 icewm jwm lxde-session lxqt karmen matchbox openbox-session pekwm ratpoison \ |
al@926 | 402 xfwm4" |
psychomaniak@912 | 403 |
psychomaniak@912 | 404 eval list='$'"$1"S |
psychomaniak@912 | 405 eval current='$'"$1" |
al@926 | 406 |
al@926 | 407 for i in $current $(echo " $list " | sed "s| $current | |g"); do |
al@926 | 408 |
al@926 | 409 case $(busybox which $i) in |
al@926 | 410 '') # not installed |
al@926 | 411 t='---' ;; |
al@926 | 412 *) # installed |
al@926 | 413 t='<--' ;; |
al@926 | 414 esac |
al@926 | 415 |
al@926 | 416 if [ "$2" == 'full-list' ] || [ "$t" == '<--' ]; then |
al@926 | 417 echo "$i" |
al@926 | 418 |
al@926 | 419 if [ "$3" != 'yad' ]; then |
al@926 | 420 echo "$(echo $t | sed "s|---|$(_n 'Install')|g")" |
al@926 | 421 fi |
al@926 | 422 fi |
al@926 | 423 done |
al@926 | 424 |
al@926 | 425 if [ "$2" == 'only-installed' ] && [ "$3" != 'yad' ]; then |
al@926 | 426 echo 'show_ALL' "+$(_n 'Install')" |
psychomaniak@912 | 427 fi |
psychomaniak@912 | 428 } |
psychomaniak@912 | 429 |
al@926 | 430 |
psychomaniak@912 | 431 # Screen configuration dialog. |
al@926 | 432 |
al@813 | 433 config_dialog() { |
al@926 | 434 . /etc/rcS.conf |
al@926 | 435 case $LOGIN_MANAGER in |
al@926 | 436 slim) LM="$(_ 'ON')" ;; |
al@926 | 437 *) LM="$(_ 'OFF')" ;; |
al@926 | 438 esac |
psychomaniak@909 | 439 |
pankso@66 | 440 exec 3>&1 |
al@926 | 441 |
al@813 | 442 value=$($DIALOG \ |
pankso@535 | 443 --clear --colors \ |
pankso@840 | 444 --title "{ $(_n 'SliTaz Xorg config') }" \ |
pankso@840 | 445 --menu "" 16 72 10 \ |
pankso@840 | 446 "xorg" "$(_n 'Install or reconfigure Xorg')" \ |
pankso@840 | 447 "xorg-light" "$(_n 'Install Xorg server (light version)')" \ |
al@926 | 448 "onboot" "$(_n 'AutoStart Xorg by SLiM on boot'): \Z5$LM\Zn" \ |
psychomaniak@909 | 449 "slim" "$(_n '(Re)Start Simple Login Manager now')" \ |
al@926 | 450 "wm_apps" "$(_n 'Install Window Manager and applications')" \ |
pankso@840 | 451 "quit" "$(_n 'Quit Tazx utility')" \ |
al@813 | 452 2>&1 1>&3) |
psychomaniak@912 | 453 dialog_end |
al@926 | 454 |
pankso@840 | 455 case "$value" in |
psychomaniak@912 | 456 xorg) |
pankso@339 | 457 install_xorg ;; |
al@926 | 458 |
pankso@840 | 459 xorg-light) |
psychomaniak@912 | 460 inst_pkg xorg-server-light |
psychomaniak@912 | 461 inst_pkg xorg-xf86-video-fbdev |
pankso@840 | 462 xorg_conf_d ;; |
al@926 | 463 |
psychomaniak@909 | 464 onboot) |
al@926 | 465 inst_pkg slim |
al@926 | 466 inst_pkg dbus |
al@926 | 467 |
al@926 | 468 if [ $LM == "$(_ 'OFF')" ]; then |
al@926 | 469 LM='slim' |
al@926 | 470 else |
al@926 | 471 LM='' |
psychomaniak@909 | 472 fi |
al@926 | 473 sed -i "/LOGIN_MANAGER/ s|=.*$|=$LM|" /etc/rcS.conf |
al@926 | 474 |
al@926 | 475 [ -z "$LM" ] && LM='disabled' |
al@926 | 476 _n "Start X on boot:"; boldify " $LM" ;; |
al@926 | 477 |
psychomaniak@909 | 478 slim) |
al@926 | 479 inst_pkg slim |
al@926 | 480 inst_pkg dbus |
al@926 | 481 if [ -z $XAUTHORITY ]; then |
al@926 | 482 stopd slim; sleep 2; startd slim |
al@926 | 483 fi ;; |
al@926 | 484 |
psychomaniak@912 | 485 wm_apps) |
al@926 | 486 apps_dialog ;; |
al@926 | 487 |
pankso@840 | 488 *) |
pankso@840 | 489 exit 0 ;; |
pankso@66 | 490 esac |
pankso@66 | 491 } |
pankso@4 | 492 |
al@926 | 493 |
pankso@870 | 494 # ~/.config/slitaz/applications.conf: Missing = failed to login |
pankso@876 | 495 # Make users applications.conf in /etc/skel so new added user will get |
pankso@876 | 496 # a working X session. Note --> flavors can have a custom config in |
pankso@876 | 497 # /etc/slitaz/applications that we must use. |
al@926 | 498 |
pankso@870 | 499 slitaz_apps_conf() { |
pankso@840 | 500 apps_conf=/etc/slitaz/applications.conf |
al@926 | 501 |
psychomaniak@933 | 502 [ -f $apps_conf ] || inst_pkg slitaz-configs --forced |
psychomaniak@933 | 503 |
al@943 | 504 if [ "$(id -u)" -eq 0 ]; then |
al@943 | 505 user_conf="$apps_conf" |
al@943 | 506 new_user_conf='/etc/skel/.config/slitaz/applications.conf' |
al@926 | 507 mkdir -p $(dirname $new_user_conf) |
al@926 | 508 cp -f $apps_conf $new_user_conf |
pankso@876 | 509 else |
pankso@876 | 510 # If started by: startx and with boot opts screen=text |
al@926 | 511 user_conf="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf" |
pankso@876 | 512 if [ ! -f "$user_conf" ]; then |
al@926 | 513 mkdir -p $(dirname $user_conf) |
al@926 | 514 cp $apps_conf $user_conf |
pankso@876 | 515 fi |
slaxemulator@538 | 516 fi |
psychomaniak@918 | 517 [ -f "$HOME/.xinitrc" ] || inst_pkg slitaz-configs-base --forced |
pankso@66 | 518 } |
pankso@4 | 519 |
al@926 | 520 |
psychomaniak@933 | 521 # Handle live options: screen= video= |
al@939 | 522 |
psychomaniak@933 | 523 proc_cmdline() |
psychomaniak@933 | 524 { |
psychomaniak@933 | 525 if grep -qs 'screen=' /proc/cmdline ; then |
psychomaniak@933 | 526 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)" |
psychomaniak@933 | 527 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \ |
psychomaniak@933 | 528 -i ${xorg_config}/70-Screen.conf |
psychomaniak@933 | 529 elif grep -qs 'video=' /proc/cmdline ; then |
psychomaniak@933 | 530 MODE="$(sed 's/.*video=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)" |
psychomaniak@933 | 531 DEPTH=$(sed 's/.*video=.*-\([0-9]*\).*/\1/' < /proc/cmdline) |
psychomaniak@933 | 532 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \ |
psychomaniak@933 | 533 -i ${xorg_config}/70-Screen.conf |
psychomaniak@933 | 534 set_depth $DEPTH |
psychomaniak@933 | 535 fi |
psychomaniak@933 | 536 } |
psychomaniak@933 | 537 |
al@939 | 538 |
psychomaniak@933 | 539 set_depth() |
psychomaniak@933 | 540 { |
psychomaniak@933 | 541 case "$1" in |
psychomaniak@935 | 542 8|15|16|24|32) colors=$1 ;; |
psychomaniak@933 | 543 *) |
psychomaniak@933 | 544 exec 3>&1 |
psychomaniak@933 | 545 colors=$($DIALOG --menu " " 12 12 12 \ |
psychomaniak@935 | 546 32 truecolor 24 truecolor 16 hicolor 15 hicolor 8 256colors 2>&1 1>&3) |
psychomaniak@933 | 547 dialog_end ;; |
psychomaniak@933 | 548 esac |
psychomaniak@933 | 549 sed 's|Monitor.*"$|&\n\tDefaultDepth '$colors'|' -i ${xorg_config}/70-Screen.conf |
psychomaniak@933 | 550 } |
psychomaniak@933 | 551 |
psychomaniak@933 | 552 |
psychomaniak@933 | 553 |
pankso@840 | 554 # Commands |
pankso@66 | 555 |
pankso@351 | 556 case "$1" in |
pankso@351 | 557 install-xorg) |
pankso@840 | 558 check_root |
pankso@351 | 559 install_xorg |
pankso@870 | 560 slitaz_apps_conf ;; |
al@926 | 561 |
pankso@415 | 562 config-xorg) |
pankso@840 | 563 check_root |
pankso@870 | 564 slitaz_apps_conf |
pankso@840 | 565 xorg_conf_d |
psychomaniak@933 | 566 proc_cmdline ;; |
al@926 | 567 |
pankso@870 | 568 init) |
paul@885 | 569 # We don't need much config files with last Xorg version, So just |
paul@885 | 570 # get files for starting an X session and config the keyboard. |
pankso@870 | 571 check_root |
psychomaniak@933 | 572 slitaz_apps_conf |
al@926 | 573 keyboard_conf |
pankso@871 | 574 gen_xorg_conf_file ;; |
al@926 | 575 |
pankso@879 | 576 keyboard) |
pankso@870 | 577 keyboard_conf ;; |
al@926 | 578 |
psychomaniak@912 | 579 get-applist) |
psychomaniak@912 | 580 slitaz_apps_conf |
psychomaniak@912 | 581 gen_applist $2 $3 $4 ;; |
al@926 | 582 |
psychomaniak@918 | 583 auto) |
al@925 | 584 autoselect_driver ;; |
al@926 | 585 |
psychomaniak@918 | 586 bpp) |
psychomaniak@918 | 587 check_root |
psychomaniak@918 | 588 xorg_conf_d |
psychomaniak@935 | 589 proc_cmdline |
psychomaniak@933 | 590 set_depth $2 ;; |
al@926 | 591 |
al@926 | 592 xkb) |
al@926 | 593 xkb ;; |
al@926 | 594 |
psychomaniak@935 | 595 |
psychomaniak@933 | 596 *help|-h|-?) |
al@926 | 597 emsg " |
paul@929 | 598 <b>tazx</b> - $(_ 'Configuration tool for SliTaz GNU/Linux') |
al@926 | 599 |
al@926 | 600 <c 33>$(_ 'Usage:')</c> <b>tazx</b> <c 34>$(_ 'command')</c> $(_ 'parameter') |
al@926 | 601 |
al@926 | 602 <c 34>$(_ 'Commands:')</c> |
al@926 | 603 install-xorg $(_ 'Install Xorg and selected Xorg driver') |
al@926 | 604 config-xorg $(_ 'Configure Xorg, generate configuration files') |
al@926 | 605 bpp $(_ 'Set monitor default depth (valid parameters: 8, 15, 16 or 24)') |
al@926 | 606 auto $(_ 'Auto-select and install Xorg driver') |
al@926 | 607 init $(_ 'Get files for starting an X session and config the keyboard') |
al@926 | 608 keyboard $(_ 'Generate or regenerate Xorg keyboard config') |
al@926 | 609 " |
al@926 | 610 ;; |
al@926 | 611 |
pankso@351 | 612 *) |
pankso@615 | 613 # User can get a new .xinitrc with tazx from cmdline. |
al@926 | 614 case $(id -u) in |
al@926 | 615 0) |
al@926 | 616 config_dialog ;; |
al@926 | 617 *) |
al@926 | 618 msg="\Z1 $(_n 'Run tazx as root if you need to configure xorg') \Zn" |
al@926 | 619 apps_dialog ;; |
al@926 | 620 esac |
psychomaniak@912 | 621 # gen_xsession |
psychomaniak@912 | 622 ;; |
pankso@351 | 623 esac |
pankso@4 | 624 |
pankso@4 | 625 exit 0 |