slitaz-tools annotate tinyutils/tazx @ rev 840

Add slitaz-config and clean tazx
author Christophe Lincoln <pankso@slitaz.org>
date Sun Mar 23 14:52:32 2014 +0100 (2014-03-23)
parents 66de501eccc6
children 0746b6a94061
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
gokhlayeh@492 44 # Populate xorg.conf.d.
al@813 45 xorg_conf_d() {
gokhlayeh@492 46 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d)
gokhlayeh@492 47 xorg_config=/etc/X11/xorg.conf.d
gokhlayeh@492 48
gokhlayeh@492 49 # Define the xorg.conf.new place.
gokhlayeh@492 50 xorg_template=/root/xorg.conf.new
gokhlayeh@492 51
gokhlayeh@492 52 # Obtain a default configuration file from Xorg.
pankso@719 53 Xorg -configure :2
gokhlayeh@492 54
paul@515 55 # Backup existing config.
gokhlayeh@513 56 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null
gokhlayeh@513 57
paul@725 58 # Put the different sections in separate files in the config directory.
al@813 59 save_chunk 10-ServerLayout
al@813 60 sed -i '/Core/d' $xorg_config/10-ServerLayout.conf
al@813 61 save_chunk 20-Files
al@813 62 save_chunk 30-Module
al@813 63 save_chunk 50-Monitor
al@813 64 save_chunk 60-Device
al@813 65 save_chunk 70-Screen
gokhlayeh@492 66
gokhlayeh@492 67 # Remove the template.
gokhlayeh@492 68 rm $xorg_template
gokhlayeh@492 69
gokhlayeh@492 70 # Configure the keyboard with the right keymap.
al@813 71 keymap=$(cat /etc/keymap.conf)
gokhlayeh@492 72 keyboard_config=$xorg_config/40-Keyboard.conf
al@779 73 variant=""
al@779 74 # this XkbOption moved from 40-evdev.conf (xorg-xf86-input-evdev)
al@779 75 options="terminate:ctrl_alt_bksp"
gokhlayeh@494 76 case $keymap in
pankso@260 77 fr_CH-latin1)
pankso@260 78 # Swiss FrenCH
al@779 79 layout="ch"; variant="fr" ;;
pankso@597 80 uk)
paul@617 81 # English UK
al@779 82 layout="gb" ;;
pankso@260 83 ru)
pankso@260 84 # Russian
al@779 85 layout="us,ru"
al@779 86 options="grp:ctrl_shift_toggle, grp_led:scroll, $options" ;;
al@813 87 ua)
al@813 88 # Ukrainian
al@813 89 layout="us,ua,ru"
al@813 90 options="grp:ctrl_shift_toggle, $options" ;;
pankso@303 91 slovene)
pankso@303 92 # Slovenian
al@779 93 layout="si"; options="grp:alt_shift_toggle, $options" ;;
pankso@577 94 us-acentos)
al@779 95 layout="us"; variant="intl" ;;
pankso@260 96 *)
pankso@260 97 # Use clean /etc/keymap.conf value.
gokhlayeh@492 98 keymap=${keymap%-latin1}
gokhlayeh@492 99 keymap=${keymap%-lat2}
gokhlayeh@492 100 keymap=${keymap%-lat6}
al@779 101 layout=${keymap%-abnt2}
pankso@260 102 esac
gokhlayeh@492 103
al@779 104 cat > $keyboard_config << EOC
al@779 105 Section "InputClass"
al@779 106 Identifier "Keyboard Defaults"
al@779 107 MatchIsKeyboard "yes"
al@779 108 Option "XkbLayout" "$layout"
al@779 109 Option "XkbVariant" "$variant"
al@779 110 Option "XkbOptions" "$options"
al@779 111 EndSection
al@779 112 EOC
al@813 113 [ x$variant == x ] && sed -i '/XkbVariant/d' $keyboard_config
gokhlayeh@492 114
gokhlayeh@492 115 # Create a xorg.conf if needed.
pankso@628 116 if [ ! -f /etc/X11/xorg.conf ]; then
pankso@628 117 cat > /etc/X11/xorg.conf << EOT
pankso@628 118 # You can put here your own Xorg configurations. This config file is read
pankso@628 119 # before all files in /etc/X11/xorg.conf.d and will NOT be erased by any
slaxemulator@645 120 # updates.
pankso@628 121 EOT
pankso@628 122 fi
pankso@260 123 }
pankso@260 124
paul@549 125 # Install xorg server.
al@813 126 install_xorg() {
pankso@628 127 [ -f "/var/lib/tazpkg/packages.list" ] || tazpkg recharge
pankso@117 128 exec 3>&1
al@813 129 value=$($DIALOG \
al@813 130 --clear --colors \
al@813 131 --title " $(_n 'Install Xorg') " \
al@813 132 --menu "$(_n 'Tazx helps you to select your X driver.')" 16 70 8 \
pankso@635 133 $(fgrep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | \
al@813 134 while read x; do echo $x; _ 'driver'; done) \
al@813 135 "quit" "$(_n 'Quit')" \
al@813 136 2>&1 1>&3)
pankso@117 137 retval=$?
pankso@117 138 exec 3>&-
al@813 139
pankso@628 140 # Continue or exit.
pankso@117 141 case $retval in
pankso@628 142 0) continue ;;
pankso@628 143 1|255) exit 0 ;;
pankso@117 144 esac
al@813 145
pankso@117 146 # Set selected value.
pankso@117 147 case $value in
pankso@628 148 quit) exit 0 ;;
pankso@117 149 *)
pankso@840 150 [ -d "$installed/xorg-server" ] || tazpkg -gi xorg-server
pankso@628 151 [ -d "$installed/xorg-xf86-video-$value" ] || \
pankso@840 152 tazpkg -gi xorg-xf86-video-$value
pankso@628 153 xorg_conf_d ;;
pankso@117 154 esac
pankso@117 155 }
pankso@117 156
pankso@628 157 # Screen configuration dialog. TODO: menus items to enable/disable X on boot
pankso@628 158 # and sed /etc/rcS.conf to remove slim from RUN_DAEMONS.
al@813 159 config_dialog() {
pankso@66 160 exec 3>&1
al@813 161 value=$($DIALOG \
pankso@535 162 --clear --colors \
pankso@840 163 --title "{ $(_n 'SliTaz Xorg config') }" \
pankso@840 164 --menu "" 16 72 10 \
pankso@840 165 "xorg" "$(_n 'Install or reconfigure Xorg')" \
pankso@840 166 "xorg-light" "$(_n 'Install Xorg server (light version)')" \
pankso@840 167 "quit" "$(_n 'Quit Tazx utility')" \
al@813 168 2>&1 1>&3)
pankso@66 169 retval=$?
pankso@66 170 exec 3>&-
al@813 171
pankso@628 172 # Continue or exit.
pankso@66 173 case $retval in
pankso@628 174 0) continue ;;
pankso@628 175 1|255) exit 0 ;;
pankso@66 176 esac
al@813 177
pankso@66 178 # Set selected value.
pankso@840 179 case "$value" in
pankso@840 180 xorg)
pankso@339 181 install_xorg ;;
pankso@840 182 xorg-light)
pankso@840 183 [ -d "$installed/xorg-server-light" ] || \
pankso@840 184 tazpkg -gi xorg-server-light
pankso@840 185 [ -d "$installed/xorg-xf86-video-fbdev" ] || \
pankso@840 186 tazpkg -gi xorg-xf86-video-fbdev
pankso@840 187 xorg_conf_d ;;
pankso@840 188 *)
pankso@840 189 exit 0 ;;
pankso@66 190 esac
pankso@66 191 }
pankso@4 192
pankso@535 193 # ~/.xinitrc for X login from a DM.
al@813 194 creat_xinitrc() {
pankso@840 195 apps_conf=/etc/slitaz/applications.conf
pankso@840 196 user_conf="$HOME/.config/slitaz/applications.conf"
pankso@840 197 xinitrc="$HOME/.xinitrc"
pankso@840 198 if [ ! -f "$user_conf" ]; then
pankso@840 199 mkdir -p $(dirname $user_conf); cp ${apps_conf} ${user_conf}
pankso@339 200 fi
pankso@840 201 if [ ! -f "$xinitrc" ]; then
pankso@840 202 cp /etc/skel/.xinitrc ${xinitrc}
pankso@840 203 fi
al@813 204
al@813 205 # Make .xinitrc and config for /etc/skel so new added user will get
pankso@535 206 # a working X session.
pankso@535 207 if test $(id -u) = 0; then
pankso@840 208 user_conf="/etc/skel/.config/slitaz/applications.conf"
pankso@840 209 mkdir -p $(dirname $user_conf); cp -f ${apps_conf} ${user_conf}
pankso@535 210 fi
al@813 211
pankso@840 212 # In Live mode default user needs a xinitrc, since tazx is executed
pankso@840 213 # only by root.
pankso@840 214 user_conf="/home/$USER/.config/slitaz/applications.conf"
pankso@840 215 xinitrc="/home/$USER/.xinitrc"
pankso@840 216 if [ ! -f "$user_conf" ]; then
pankso@840 217 mkdir -p $(dirname $user_conf); cp ${apps_conf} ${user_conf}
pankso@840 218 chown -R $USER.users $(dirname $user_conf)
slaxemulator@538 219 fi
pankso@840 220 if [ ! -f "$xinitrc" ]; then
pankso@840 221 cp -f /etc/skel/.xinitrc ${xinitrc}
pankso@840 222 chown $USER.users ${xinitrc}
pankso@105 223 fi
pankso@66 224 }
pankso@45 225
MikeDSmith25@252 226 # Create ~/.xsession to keep the configuration selected (used
MikeDSmith25@252 227 # only by startx, Slim login manager uses .xinitrc).
al@813 228 creat_xsession() {
al@813 229 local xsession=$HOME/.xsession
pankso@840 230 [ -f "$xsession" ] && cp -f ${xsession} ${xsession}.bak
pankso@840 231 cat > ${xsession} << EOT
pankso@840 232 # ~/.xsession: Start X session manually on your system with: startx
pankso@37 233 #
pankso@535 234 Xorg &
pankso@535 235 #xterm &
pankso@840 236 exec $WM
pankso@840 237 EOT
pankso@840 238 chmod 700 ${xsession}
pankso@66 239 }
pankso@4 240
pankso@840 241 # Commands
pankso@66 242
pankso@351 243 case "$1" in
pankso@351 244 install-xorg)
pankso@840 245 check_root
pankso@351 246 install_xorg
pankso@351 247 creat_xinitrc
pankso@351 248 creat_xsession ;;
pankso@840 249
pankso@415 250 config-xorg)
pankso@840 251 check_root
pankso@415 252 creat_xinitrc
pankso@415 253 creat_xsession
pankso@840 254 xorg_conf_d
pankso@840 255 # Handle live option: screen=
pascal@564 256 if grep -qs screen= /proc/cmdline ; then
pascal@564 257 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
pascal@564 258 sed -i "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
pascal@564 259 /etc/X11/xorg.conf.d/70-Screen.conf
pascal@564 260 fi ;;
pankso@840 261
pankso@840 262 *help)
pankso@840 263 echo "Usage: $(basename $0) [install-xorg|config-xorg|]" ;;
pankso@840 264
pankso@351 265 *)
pankso@615 266 # User can get a new .xinitrc with tazx from cmdline.
pankso@840 267 [ $(id -u) == 0 ] && config_dialog
pankso@351 268 creat_xinitrc
pankso@351 269 creat_xsession ;;
pankso@351 270 esac
pankso@4 271
pankso@4 272 exit 0