slitaz-tools annotate tinyutils/tazx @ rev 158

Modified tazx for Openbox as default WM
author Christophe Lincoln <pankso@slitaz.org>
date Tue Apr 22 22:58:03 2008 +0200 (2008-04-22)
parents 4704457cdc85
children b94d06e67f34
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@4 4 # This tinyutils is part of slitaz-tools.
pankso@4 5 #
pankso@105 6 # 20080313 <pankso@slitaz.org> - GNU gpl v3.
pankso@4 7 #
pankso@4 8 : ${DIALOG=dialog}
pankso@4 9
pankso@4 10 # Variables.
pankso@66 11 #
pankso@4 12 XSERVER=Xvesa
pankso@4 13 DOC=/usr/share/doc/slitaz-tools/tazx.txt
pankso@4 14 MOUSE=/dev/input/mice,5
pankso@46 15 # WM can be specified on cmdline.
pankso@46 16 if [ -n "$1" ]; then
pankso@46 17 WM=$1
pankso@46 18 else
pankso@158 19 WM=openbox
pankso@46 20 fi
pankso@4 21
pankso@66 22 ####################
pankso@66 23 # Tazx functions #
pankso@66 24 ####################
pankso@66 25
pankso@117 26 # Install xorg server
pankso@117 27 install_xorg()
pankso@117 28 {
pankso@117 29 tazpkg recharge
pankso@117 30 exec 3>&1
pankso@117 31 value=`$DIALOG --clear --colors --title " Install Xorg " \
pankso@117 32 --menu \
pankso@117 33 "L'application 'tazx' permet de configurer le driver X." 16 70 5 \
pankso@117 34 $(grep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | while read x; do echo $x; echo driver; done) \
pankso@117 35 "quit" "Quitter" \
pankso@117 36 2>&1 1>&3`
pankso@117 37 retval=$?
pankso@117 38 exec 3>&-
pankso@117 39 # Continue, exit...
pankso@117 40 case $retval in
pankso@117 41 1)
pankso@117 42 echo "Cancel pressed..."
pankso@117 43 exit 0 ;;
pankso@117 44 255)
pankso@117 45 if test -z "$value"; then
pankso@117 46 echo "ESC pressed..."
pankso@117 47 exit 0
pankso@117 48 fi ;;
pankso@117 49 esac
pankso@117 50 # Set selected value.
pankso@117 51 case $value in
pankso@117 52 quit)
pankso@117 53 echo "Quit..."
pankso@117 54 exit 0 ;;
pankso@117 55 *)
pankso@117 56 tazpkg get-install xorg-server
pankso@117 57 tazpkg get-install xorg-xf86-video-$value
pascal@124 58 Xorg -configure :1
pankso@117 59 mv /root/xorg.conf.new /etc/X11/xorg.conf
pascal@120 60 . /etc/kmap.conf
pascal@120 61 patch -p0 <<EOF
pascal@120 62 --- /etc/X11/xorg.conf
pascal@120 63 +++ /etc/X11/xorg.conf
pascal@120 64 @@ -30,2 +30,3 @@
pascal@120 65 Driver "kbd"
pascal@120 66 + Option "XkbLayout" "${KMAP%.kmap}"
pascal@120 67 EndSection
pascal@120 68 EOF
pankso@117 69 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
pankso@117 70 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
pankso@117 71 XSERVER=Xorg;;
pankso@117 72 esac
pankso@117 73 }
pankso@117 74
pankso@66 75 # Screen configuration dialog.
pankso@66 76 screen_config_dialog()
pankso@66 77 {
pankso@66 78 exec 3>&1
pankso@66 79 value=`$DIALOG --help-button \
pankso@66 80 --clear --colors \
pankso@66 81 --title " Configure X " \
pankso@66 82 --menu \
pankso@66 83 "L'application 'tazx' permet de configurer une session X.\n\
pankso@66 84 Gestionnaire de fenêtres : \Z2$WM\Zn" 16 70 5 \
pankso@118 85 $(Xvesa -listmodes 2>&1 | grep ^0x | awk '{ printf "%s %s\n",$2,$3 }' | sort -nr | grep x[1-2][4-6]) \
pankso@66 86 "xterm" "800x600x16" \
pankso@117 87 "xorg" "Installer Xorg" \
pankso@66 88 "quit" "Quitter" \
pankso@66 89 2>&1 1>&3`
pankso@66 90 retval=$?
pankso@66 91 exec 3>&-
pankso@66 92 # Continue, exit or help...
pankso@66 93 case $retval in
pankso@66 94 0)
pankso@66 95 continue ;;
pankso@66 96 1)
pankso@66 97 echo "Cancel pressed..."
pankso@66 98 exit 0 ;;
pankso@66 99 2)
pankso@66 100 $DIALOG --clear \
pankso@66 101 --title " Aide - Help " --textbox "$DOC" 16 70
pankso@66 102 exec tazx ;;
pankso@66 103 255)
pankso@66 104 if test -n "$value"; then
pankso@66 105 continue
pankso@66 106 else
pankso@66 107 echo "ESC pressed..."
pankso@66 108 exit 0
pankso@66 109 fi ;;
pankso@66 110 esac
pankso@66 111 # Set selected value.
pankso@66 112 case $value in
pankso@117 113 xorg)
pankso@117 114 install_xorg;;
pankso@66 115 xterm)
pankso@66 116 Xvesa -ac -shadow -screen 800x600x16 -br &
pankso@66 117 exec xterm -cr orange -geometry 80x35+0-0 ;;
pankso@66 118 *)
pankso@68 119 NEW_SCREEN=$value ;;
pankso@66 120 esac
pankso@66 121 }
pankso@4 122
pankso@65 123 # Slim config if root.
pankso@66 124 slim_config()
pankso@66 125 {
pankso@66 126 if test $(id -u) = 0; then
pankso@68 127 # /etc/X11/screen.conf exist for Live mode, if this file dos not
pankso@68 128 # exist tazx is executed at boot time.
pankso@68 129 mkdir -p /etc/X11
pankso@68 130 echo "SCREEN=$NEW_SCREEN" > /etc/X11/screen.conf
pankso@67 131 # Get current screen size and sed config file with the new value.
pankso@66 132 if [ -f /etc/slim.conf ]; then
pankso@67 133 RES=$(grep ^xserver_arguments /etc/slim.conf | sed 's/xserver_arguments.*-screen *//')
pankso@69 134 sed -i "s/\(xserver_arguments.*-screen\).*/\1 $NEW_SCREEN/" /etc/slim.conf
pankso@66 135 fi
pankso@66 136 JWM_CONFIG=/etc/jwm/system.jwmrc
pankso@65 137 fi
pankso@66 138 }
pankso@66 139
pankso@66 140 # e17 start with enlightenment_start.
pankso@66 141 e17_stuff()
pankso@66 142 {
pankso@66 143 if [ "$WM" == "e17" ]; then
pankso@66 144 WM=enlightenment_start
pankso@66 145 XSEVER_OPTS="dpms -terminate"
pankso@65 146 fi
pankso@66 147 }
pankso@65 148
pankso@81 149 # Openbox with openbox-session.
pankso@81 150 openbox_stuff()
pankso@81 151 {
pankso@81 152 if [ "$WM" == "openbox" -o "$WM" == "ob" ]; then
pankso@81 153 WM=openbox-session
pankso@158 154 XSEVER_OPTS="dpms +extension Composite"
pankso@81 155 fi
pankso@81 156 # Check if a personnal autostart script exist if OB is installed.
pankso@81 157 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
pankso@81 158 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
pankso@81 159 mkdir -p $HOME/.config/openbox
pankso@81 160 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
pankso@81 161 fi
pankso@158 162 # Script for hacker.
pankso@81 163 if [ ! -f "/home/hacker/.config/openbox/autostart.sh" ]; then
pankso@81 164 mkdir -p /home/hacker/.config/openbox
pankso@81 165 cp /etc/xdg/openbox/autostart.sh /home/hacker/.config/openbox
pankso@81 166 fi
pankso@158 167 if [ ! -f "/home/hacker/.config/openbox/menu.xml" ]; then
pankso@158 168 mkdir -p /home/hacker/.config/openbox
pankso@158 169 cp /etc/xdg/openbox/menu.xml /home/hacker/.config/openbox
pankso@158 170 fi
pankso@158 171 chown -R hacker.hacker /home/hacker/.config
pankso@81 172 fi
pankso@81 173 }
pankso@81 174
pankso@68 175 # Sample xinitrc for user (WM can be specified with F1 at slim login).
pankso@68 176 xinitrc_sample()
pankso@68 177 {
pankso@68 178 cat > $FILE << "EOF"
pankso@68 179 # ~/.xinitrc: Executed by slim login manager to startx X session.
pankso@99 180 # You can use F1 with Slim or 'tazx' to configure permanantly
pankso@99 181 # your default WM: tazx e17
pankso@68 182 #
pankso@158 183 WM=openbox
pankso@99 184
pankso@117 185 case $1 in
pankso@68 186 e17|enlightenment_start)
pankso@68 187 exec enlightenment_start
pankso@68 188 ;;
pankso@81 189 openbox|openbox-session)
pankso@81 190 exec openbox-session
pankso@81 191 ;;
pankso@117 192 jwm)
pankso@81 193 lxpanel &
pankso@68 194 exec jwm
pankso@68 195 ;;
pankso@117 196 *)
pankso@122 197 # LXpanel by default with JWM (use less memory started
pankso@122 198 # from here rater than from StartupCommand).
pankso@158 199 if [ "$WM" = "openbox" ]; then
pankso@117 200 lxpanel &
pankso@117 201 fi
pankso@117 202 exec $WM
pankso@117 203 ;;
pankso@68 204 esac
pankso@68 205 EOF
pankso@122 206 # Set default WM.
pankso@122 207 RES=`grep ^WM=[e-o] $FILE`
pankso@122 208 sed -i s/"$RES"/"WM=$WM"/ $FILE
pankso@68 209 }
pankso@68 210
pankso@65 211 # ~/.xinitrc for slim login.
pankso@66 212 creat_xinitrc()
pankso@66 213 {
pankso@68 214 FILE=$HOME/.xinitrc
pankso@68 215 xinitrc_sample
pankso@99 216
pankso@68 217 # In Live mode hacker needs a xinitrc, since tazx
pankso@68 218 # is executed only by root.
pankso@66 219 if [ ! -f /home/hacker/.xinitrc ]; then
pankso@68 220 FILE=/home/hacker/.xinitrc
pankso@68 221 xinitrc_sample
pankso@68 222 chown hacker.hacker $FILE
pankso@66 223 fi
pankso@66 224 }
pankso@65 225
pankso@66 226 # Copy a JWM system config if any present in user home.
pankso@66 227 jwm_config()
pankso@66 228 {
pankso@81 229 JWM_CONFIG=$HOME/.jwmrc
pankso@81 230 if [ ! -f "$JWM_CONFIG" ]; then
pankso@81 231 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@66 232 fi
pankso@105 233 # In Live mode hacker/root JWM config dose not exist ans $HOME is
pankso@105 234 # ot set, this is because tazx is executed by boot scripts.
pankso@66 235 if [ ! -f "/home/hacker/.jwmrc" ]; then
pankso@66 236 JWM_CONFIG=/home/hacker/.jwmrc
pankso@81 237 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@66 238 chown hacker.hacker $JWM_CONFIG
pankso@66 239 fi
pankso@117 240 if [ ! -f "/root/.jwmrc" -a `id -u` = 0 ]; then
pankso@105 241 JWM_CONFIG=/root/.jwmrc
pankso@105 242 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@105 243 fi
pankso@66 244 }
pankso@45 245
pankso@66 246 # Creat ~/.xsession to keep the configuration selected (used
pankso@66 247 # only by startx, Slim login manager use .xinitrc).
pankso@66 248 creat_xsession()
pankso@66 249 {
pankso@68 250 cat > $HOME/.xsession << _EOF_
pankso@68 251 # ~/.xsession: Start X window session manually on your system (startx).
pankso@37 252 #
pankso@68 253 _EOF_
pankso@117 254 if [ "$XSERVER " == "Xorg" ]; then
pankso@117 255 echo 'Xorg &' >> $HOME/.xsession
pankso@117 256 else
pankso@117 257 echo "$XSERVER -ac -shadow $XSEVER_OPTS -screen $NEW_SCREEN -mouse $MOUSE &" \
pankso@117 258 >> $HOME/.xsession
pankso@117 259 fi
pankso@117 260 echo '#xterm &' >> $HOME/.xsession
pankso@117 261 echo '#xpad &' >> $HOME/.xsession
pankso@99 262 # LXpanel by default with JWM.
pankso@117 263 if [ "$WM" = "jwm" ]; then
pankso@99 264 echo 'lxpanel &' >> $HOME/.xsession
pankso@99 265 fi
pankso@104 266 echo "exec $WM" >> $HOME/.xsession
pankso@66 267 chmod 700 $HOME/.xsession
pankso@66 268 }
pankso@4 269
pankso@66 270 ###################
pankso@66 271 # Tazx sequence #
pankso@66 272 ###################
pankso@66 273
pascal@96 274 [ -n "$NEW_SCREEN" ] || screen_config_dialog
pankso@66 275 slim_config
pankso@66 276 e17_stuff
pankso@81 277 openbox_stuff
pankso@66 278 creat_xinitrc
pankso@66 279 jwm_config
pankso@66 280 creat_xsession
pankso@4 281
pankso@4 282 exit 0