slitaz-tools annotate tinyutils/tazx @ rev 874

Fixes for tazx and slitaz-config (correctly copy applications.conf to user config dir)
author Christophe Lincoln <pankso@slitaz.org>
date Thu May 01 09:57:49 2014 +0200 (2014-05-01)
parents 650d2b556063
children b8e9cfb8e9d0
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.
paul@835 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 #
pascal@821 7 # (c) 2011-2014 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 . /etc/slitaz/applications.conf
pankso@840 20
pankso@840 21 installed="$PKGS_DB/installed"
pankso@840 22
al@813 23 export TEXTDOMAIN='slitaz-tools' #i18n
pankso@626 24 : ${DIALOG=dialog}
pankso@4 25
pankso@535 26 # Default value.
pankso@840 27 WM=${WINDOW_MANAGER}
pankso@351 28
pankso@534 29 # Default user for config files in Live mode, id is 1000 since it is
pankso@534 30 # created by /etc/init.d/bootopts.sh.
pankso@626 31 USER=$(cat /etc/passwd | grep 1000 | cut -d ":" -f 1)
pankso@4 32
pankso@628 33 #
pankso@615 34 # Functions
pankso@628 35 #
pankso@615 36
al@813 37 # Save chunk of xorg.conf into specified file
al@813 38 save_chunk() {
al@813 39 sed -e '/Section "'${1#*-}'"/,/EndSection/!d' \
al@813 40 -e "s/EndSection/EndSection\n/" $xorg_template > \
al@813 41 $xorg_config/$1.conf
pankso@615 42 }
pankso@66 43
pankso@871 44 gen_xorg_conf_file() {
pankso@871 45 # Create a xorg.conf if needed.
pankso@871 46 if [ ! -f /etc/X11/xorg.conf ]; then
pankso@871 47 cat > /etc/X11/xorg.conf << EOT
pankso@871 48 # You can put here your own Xorg configurations. This config file is read
pankso@871 49 # before all files in /etc/X11/xorg.conf.d and will NOT be erased by any
pankso@871 50 # updates.
pankso@871 51 EOT
pankso@871 52 fi
pankso@871 53 }
pankso@871 54
pankso@870 55 # Generate or regenerate 40-Keyboard.conf
pankso@870 56 keyboard_conf() {
gokhlayeh@492 57 # Configure the keyboard with the right keymap.
al@813 58 keymap=$(cat /etc/keymap.conf)
pankso@874 59 keyboard_config="/etc/X11/xorg.conf.d/40-Keyboard.conf"
al@779 60 variant=""
al@779 61 # this XkbOption moved from 40-evdev.conf (xorg-xf86-input-evdev)
al@779 62 options="terminate:ctrl_alt_bksp"
pankso@874 63 gettext "Creating:"; echo -n " $keyboard_config"
pankso@874 64 mkdir -p $(dirname $keyboard_config)
pankso@874 65 case "$keymap" in
pankso@260 66 fr_CH-latin1)
pankso@260 67 # Swiss FrenCH
al@779 68 layout="ch"; variant="fr" ;;
pankso@597 69 uk)
paul@617 70 # English UK
al@779 71 layout="gb" ;;
pankso@260 72 ru)
pankso@260 73 # Russian
al@779 74 layout="us,ru"
al@779 75 options="grp:ctrl_shift_toggle, grp_led:scroll, $options" ;;
al@813 76 ua)
al@813 77 # Ukrainian
al@813 78 layout="us,ua,ru"
al@813 79 options="grp:ctrl_shift_toggle, $options" ;;
pankso@303 80 slovene)
pankso@303 81 # Slovenian
al@779 82 layout="si"; options="grp:alt_shift_toggle, $options" ;;
pankso@577 83 us-acentos)
al@779 84 layout="us"; variant="intl" ;;
pankso@260 85 *)
pankso@260 86 # Use clean /etc/keymap.conf value.
gokhlayeh@492 87 keymap=${keymap%-latin1}
gokhlayeh@492 88 keymap=${keymap%-lat2}
gokhlayeh@492 89 keymap=${keymap%-lat6}
al@779 90 layout=${keymap%-abnt2}
pankso@260 91 esac
al@779 92 cat > $keyboard_config << EOC
al@779 93 Section "InputClass"
al@779 94 Identifier "Keyboard Defaults"
al@779 95 MatchIsKeyboard "yes"
al@779 96 Option "XkbLayout" "$layout"
al@779 97 Option "XkbVariant" "$variant"
al@779 98 Option "XkbOptions" "$options"
al@779 99 EndSection
al@779 100 EOC
pankso@874 101 status
pankso@874 102 [ x$variant == x ] && sed -i '/XkbVariant/d' ${keyboard_config}
pankso@870 103 }
pankso@870 104
pankso@870 105 # Populate xorg.conf.d.
pankso@870 106 xorg_conf_d() {
pankso@870 107 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d)
pankso@870 108 xorg_config=/etc/X11/xorg.conf.d
pankso@870 109
pankso@870 110 # Define the xorg.conf.new place.
pankso@870 111 xorg_template=/root/xorg.conf.new
pankso@870 112
pankso@870 113 # Obtain a default configuration file from Xorg.
pankso@870 114 Xorg -configure :2
pankso@870 115
pankso@870 116 # Backup existing config.
pankso@870 117 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null
pankso@870 118
pankso@870 119 # Put the different sections in separate files in the config directory.
pankso@870 120 save_chunk 10-ServerLayout
pankso@870 121 sed -i '/Core/d' $xorg_config/10-ServerLayout.conf
pankso@870 122 save_chunk 20-Files
pankso@870 123 save_chunk 30-Module
pankso@870 124 save_chunk 50-Monitor
pankso@870 125 save_chunk 60-Device
pankso@870 126 save_chunk 70-Screen
pankso@870 127
pankso@870 128 # Remove the template.
pankso@870 129 rm $xorg_template
pankso@870 130
pankso@871 131 # Keyboard & xorg.conf
pankso@870 132 keyboard_conf
pankso@871 133 gen_xorg_conf_file
pankso@260 134 }
pankso@260 135
paul@549 136 # Install xorg server.
al@813 137 install_xorg() {
pankso@628 138 [ -f "/var/lib/tazpkg/packages.list" ] || tazpkg recharge
pankso@117 139 exec 3>&1
al@813 140 value=$($DIALOG \
al@813 141 --clear --colors \
al@813 142 --title " $(_n 'Install Xorg') " \
al@813 143 --menu "$(_n 'Tazx helps you to select your X driver.')" 16 70 8 \
pankso@635 144 $(fgrep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | \
al@813 145 while read x; do echo $x; _ 'driver'; done) \
al@813 146 "quit" "$(_n 'Quit')" \
al@813 147 2>&1 1>&3)
pankso@117 148 retval=$?
pankso@117 149 exec 3>&-
al@813 150
pankso@628 151 # Continue or exit.
pankso@117 152 case $retval in
pankso@628 153 0) continue ;;
pankso@628 154 1|255) exit 0 ;;
pankso@117 155 esac
al@813 156
pankso@117 157 # Set selected value.
pankso@117 158 case $value in
pankso@628 159 quit) exit 0 ;;
pankso@117 160 *)
pankso@840 161 [ -d "$installed/xorg-server" ] || tazpkg -gi xorg-server
pankso@628 162 [ -d "$installed/xorg-xf86-video-$value" ] || \
pankso@840 163 tazpkg -gi xorg-xf86-video-$value
pankso@628 164 xorg_conf_d ;;
pankso@117 165 esac
pankso@117 166 }
pankso@117 167
pankso@628 168 # Screen configuration dialog. TODO: menus items to enable/disable X on boot
pankso@628 169 # and sed /etc/rcS.conf to remove slim from RUN_DAEMONS.
al@813 170 config_dialog() {
pankso@66 171 exec 3>&1
al@813 172 value=$($DIALOG \
pankso@535 173 --clear --colors \
pankso@840 174 --title "{ $(_n 'SliTaz Xorg config') }" \
pankso@840 175 --menu "" 16 72 10 \
pankso@840 176 "xorg" "$(_n 'Install or reconfigure Xorg')" \
pankso@840 177 "xorg-light" "$(_n 'Install Xorg server (light version)')" \
pankso@840 178 "quit" "$(_n 'Quit Tazx utility')" \
al@813 179 2>&1 1>&3)
pankso@66 180 retval=$?
pankso@66 181 exec 3>&-
al@813 182
pankso@628 183 # Continue or exit.
pankso@66 184 case $retval in
pankso@628 185 0) continue ;;
pankso@628 186 1|255) exit 0 ;;
pankso@66 187 esac
al@813 188
pankso@66 189 # Set selected value.
pankso@840 190 case "$value" in
pankso@840 191 xorg)
pankso@339 192 install_xorg ;;
pankso@840 193 xorg-light)
pankso@840 194 [ -d "$installed/xorg-server-light" ] || \
pankso@840 195 tazpkg -gi xorg-server-light
pankso@840 196 [ -d "$installed/xorg-xf86-video-fbdev" ] || \
pankso@840 197 tazpkg -gi xorg-xf86-video-fbdev
pankso@840 198 xorg_conf_d ;;
pankso@840 199 *)
pankso@840 200 exit 0 ;;
pankso@66 201 esac
pankso@66 202 }
pankso@4 203
pankso@870 204 # ~/.config/slitaz/applications.conf: Missing = failed to login
pankso@870 205 slitaz_apps_conf() {
pankso@840 206 apps_conf=/etc/slitaz/applications.conf
pankso@840 207 user_conf="$HOME/.config/slitaz/applications.conf"
al@813 208
pankso@870 209 # Make users applications.conf in /etc/skel so new added user will get
pankso@874 210 # a working X session. It is gen now --> flavors can have a custom one
pankso@535 211 if test $(id -u) = 0; then
pankso@874 212 conf="/etc/skel/.config/slitaz/applications.conf"
pankso@874 213 mkdir -p $(dirname $user_conf); cp -f ${apps_conf} ${conf}
pankso@535 214 fi
pankso@870 215
pankso@870 216 # If started by: startx and with boot opts screen=text
pankso@840 217 if [ ! -f "$user_conf" ]; then
pankso@840 218 mkdir -p $(dirname $user_conf); cp ${apps_conf} ${user_conf}
slaxemulator@538 219 fi
pankso@66 220 }
pankso@4 221
pankso@840 222 # Commands
pankso@66 223
pankso@351 224 case "$1" in
pankso@351 225 install-xorg)
pankso@840 226 check_root
pankso@351 227 install_xorg
pankso@870 228 slitaz_apps_conf ;;
pankso@840 229
pankso@415 230 config-xorg)
pankso@840 231 check_root
pankso@870 232 slitaz_apps_conf
pankso@840 233 xorg_conf_d
pankso@840 234 # Handle live option: screen=
pankso@870 235 if grep -qs 'screen=' /proc/cmdline ; then
pascal@564 236 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
pascal@564 237 sed -i "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
pascal@564 238 /etc/X11/xorg.conf.d/70-Screen.conf
pascal@564 239 fi ;;
pankso@840 240
pankso@870 241 init)
pankso@874 242 # We dont need much config files with last Xorg verrsion, So just
pankso@874 243 # gest files for start a X session and config the keyboard.
pankso@870 244 check_root
pankso@870 245 slitaz_apps_conf
pankso@871 246 keyboard_conf
pankso@871 247 gen_xorg_conf_file ;;
pankso@870 248
pankso@874 249 keybard)
pankso@870 250 echo "Generating: 40-Keyboard.conf"
pankso@870 251 keyboard_conf ;;
pankso@870 252
pankso@840 253 *help)
pankso@870 254 echo "Usage: $(basename $0) [install-xorg|config-xorg|init|keyboard]" ;;
pankso@840 255
pankso@351 256 *)
pankso@615 257 # User can get a new .xinitrc with tazx from cmdline.
pankso@840 258 [ $(id -u) == 0 ] && config_dialog
pankso@870 259 slitaz_apps_conf
pankso@870 260 gen_xsession ;;
pankso@351 261 esac
pankso@4 262
pankso@4 263 exit 0