slitaz-tools annotate tinyutils/tazx @ rev 104

WM please when startx from Linux terminal
author Christophe Lincoln <pankso@slitaz.org>
date Wed Mar 12 21:08:51 2008 +0100 (2008-03-12)
parents 413b0181d008
children 4817d0937e06
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@81 6 # 20080306 <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@46 19 WM=jwm
pankso@46 20 fi
pankso@4 21
pankso@66 22 ####################
pankso@66 23 # Tazx functions #
pankso@66 24 ####################
pankso@66 25
pankso@65 26 # Change backgroud image if the 3/4 is not respected.
pankso@65 27 change_jwm_background()
pankso@65 28 {
pankso@65 29 if echo $NEW_SCREEN | grep -q '1280x1024'; then
pankso@65 30 sed -i s/'1024x768.png'/'1280x1024.png'/ $JWM_CONFIG
pankso@67 31 sed -i s/'1280x800.png'/'1280x1024.png'/ $JWM_CONFIG
pankso@65 32 fi
pankso@65 33 if echo $NEW_SCREEN | grep -q '1024x768'; then
pankso@65 34 sed -i s/'1280x1024.png'/'1024x768.png'/ $JWM_CONFIG
pankso@67 35 sed -i s/'1280x800.png'/'1024x768.png'/ $JWM_CONFIG
pankso@65 36 fi
pankso@65 37 if echo $NEW_SCREEN | grep -q '1280x800'; then
pankso@67 38 sed -i s/'1024x768.png'/'1280x800.png'/ $JWM_CONFIG
pankso@67 39 sed -i s/'1280x1024.png'/'1280x800.png'/ $JWM_CONFIG
pankso@65 40 fi
pankso@65 41 }
pankso@65 42
pankso@66 43 # Screen configuration dialog.
pankso@66 44 screen_config_dialog()
pankso@66 45 {
pankso@66 46 exec 3>&1
pankso@66 47 value=`$DIALOG --help-button \
pankso@66 48 --clear --colors \
pankso@66 49 --title " Configure X " \
pankso@66 50 --menu \
pankso@66 51 "L'application 'tazx' permet de configurer une session X.\n\
pankso@66 52 Gestionnaire de fenêtres : \Z2$WM\Zn" 16 70 5 \
pankso@66 53 "640x400x16" "TrueColor" \
pankso@66 54 "640x400x24" "TrueColor" \
pankso@66 55 "640x480x16" "TrueColor" \
pankso@66 56 "640x480x24" "TrueColor" \
pankso@66 57 "800x600x16" "TrueColor" \
pankso@66 58 "800x600x24" "TrueColor" \
pankso@66 59 "1024x768x16" "TrueColor" \
pankso@66 60 "1024x768x24" "TrueColor" \
pankso@66 61 "1280x800x16" "TrueColor" \
pankso@66 62 "1280x800x24" "TrueColor" \
pankso@66 63 "1280x1024x16" "TrueColor" \
pankso@66 64 "1280x1024x24" "TrueColor" \
pankso@66 65 "1600x1200x16" "TrueColor" \
pankso@66 66 "1600x1200x24" "TrueColor" \
pankso@66 67 "1920x1440x16" "TrueColor" \
pankso@66 68 "xterm" "800x600x16" \
pankso@66 69 "quit" "Quitter" \
pankso@66 70 2>&1 1>&3`
pankso@66 71 retval=$?
pankso@66 72 exec 3>&-
pankso@66 73 # Continue, exit or help...
pankso@66 74 case $retval in
pankso@66 75 0)
pankso@66 76 continue ;;
pankso@66 77 1)
pankso@66 78 echo "Cancel pressed..."
pankso@66 79 exit 0 ;;
pankso@66 80 2)
pankso@66 81 $DIALOG --clear \
pankso@66 82 --title " Aide - Help " --textbox "$DOC" 16 70
pankso@66 83 exec tazx ;;
pankso@66 84 255)
pankso@66 85 if test -n "$value"; then
pankso@66 86 continue
pankso@66 87 else
pankso@66 88 echo "ESC pressed..."
pankso@66 89 exit 0
pankso@66 90 fi ;;
pankso@66 91 esac
pankso@66 92 # Set selected value.
pankso@66 93 case $value in
pankso@66 94 xterm)
pankso@66 95 Xvesa -ac -shadow -screen 800x600x16 -br &
pankso@66 96 exec xterm -cr orange -geometry 80x35+0-0 ;;
pankso@66 97 *)
pankso@68 98 NEW_SCREEN=$value ;;
pankso@66 99 esac
pankso@66 100 }
pankso@4 101
pankso@65 102 # Slim config if root.
pankso@66 103 slim_config()
pankso@66 104 {
pankso@66 105 if test $(id -u) = 0; then
pankso@68 106 # /etc/X11/screen.conf exist for Live mode, if this file dos not
pankso@68 107 # exist tazx is executed at boot time.
pankso@68 108 mkdir -p /etc/X11
pankso@68 109 echo "SCREEN=$NEW_SCREEN" > /etc/X11/screen.conf
pankso@67 110 # Get current screen size and sed config file with the new value.
pankso@66 111 if [ -f /etc/slim.conf ]; then
pankso@67 112 RES=$(grep ^xserver_arguments /etc/slim.conf | sed 's/xserver_arguments.*-screen *//')
pankso@69 113 sed -i "s/\(xserver_arguments.*-screen\).*/\1 $NEW_SCREEN/" /etc/slim.conf
pankso@66 114 fi
pankso@66 115 JWM_CONFIG=/etc/jwm/system.jwmrc
pankso@66 116 change_jwm_background
pankso@65 117 fi
pankso@66 118 }
pankso@66 119
pankso@66 120 # e17 start with enlightenment_start.
pankso@66 121 e17_stuff()
pankso@66 122 {
pankso@66 123 if [ "$WM" == "e17" ]; then
pankso@66 124 WM=enlightenment_start
pankso@66 125 XSEVER_OPTS="dpms -terminate"
pankso@65 126 fi
pankso@66 127 }
pankso@65 128
pankso@81 129 # Openbox with openbox-session.
pankso@81 130 openbox_stuff()
pankso@81 131 {
pankso@81 132 if [ "$WM" == "openbox" -o "$WM" == "ob" ]; then
pankso@81 133 WM=openbox-session
pankso@81 134 XSEVER_OPTS="dpms -terminate"
pankso@81 135 fi
pankso@81 136 # Check if a personnal autostart script exist if OB is installed.
pankso@81 137 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
pankso@81 138 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
pankso@81 139 mkdir -p $HOME/.config/openbox
pankso@81 140 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
pankso@81 141 fi
pankso@81 142 # Script for hacker, Openbox can be used with a LiveCD flavor or
pankso@81 143 # LiveUSB.
pankso@81 144 if [ ! -f "/home/hacker/.config/openbox/autostart.sh" ]; then
pankso@81 145 mkdir -p /home/hacker/.config/openbox
pankso@81 146 cp /etc/xdg/openbox/autostart.sh /home/hacker/.config/openbox
pankso@91 147 chown -R hacker.hacker /home/hacker/.config
pankso@81 148 fi
pankso@81 149 fi
pankso@81 150 }
pankso@81 151
pankso@68 152 # Sample xinitrc for user (WM can be specified with F1 at slim login).
pankso@68 153 xinitrc_sample()
pankso@68 154 {
pankso@68 155 cat > $FILE << "EOF"
pankso@68 156 # ~/.xinitrc: Executed by slim login manager to startx X session.
pankso@99 157 # You can use F1 with Slim or 'tazx' to configure permanantly
pankso@99 158 # your default WM: tazx e17
pankso@68 159 #
pankso@99 160 WM=jwm
pankso@99 161
pankso@99 162 if [ -n $1 ]; then
pankso@99 163 WM=$1
pankso@81 164 fi
pankso@81 165
pankso@99 166 case $WM in
pankso@68 167 e17|enlightenment_start)
pankso@68 168 exec enlightenment_start
pankso@68 169 ;;
pankso@81 170 openbox|openbox-session)
pankso@81 171 exec openbox-session
pankso@81 172 ;;
pankso@81 173 jwm|*)
pankso@81 174 lxpanel &
pankso@68 175 exec jwm
pankso@68 176 ;;
pankso@68 177 esac
pankso@68 178 EOF
pankso@68 179 }
pankso@68 180
pankso@65 181 # ~/.xinitrc for slim login.
pankso@66 182 creat_xinitrc()
pankso@66 183 {
pankso@68 184 FILE=$HOME/.xinitrc
pankso@68 185 xinitrc_sample
pankso@99 186
pankso@99 187
pankso@68 188 # In Live mode hacker needs a xinitrc, since tazx
pankso@68 189 # is executed only by root.
pankso@66 190 if [ ! -f /home/hacker/.xinitrc ]; then
pankso@68 191 FILE=/home/hacker/.xinitrc
pankso@68 192 xinitrc_sample
pankso@68 193 chown hacker.hacker $FILE
pankso@66 194 fi
pankso@99 195 # Set default WM.
pankso@99 196 RES=`grep ^WM=[e-o] $HOME/.xinitrc`
pankso@99 197 sed -i s/"$RES"/"WM=$WM"/ $HOME/.xinitrc
pankso@66 198 }
pankso@65 199
pankso@66 200 # Copy a JWM system config if any present in user home.
pankso@66 201 jwm_config()
pankso@66 202 {
pankso@81 203 JWM_CONFIG=$HOME/.jwmrc
pankso@81 204 if [ ! -f "$JWM_CONFIG" ]; then
pankso@81 205 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@66 206 fi
pankso@81 207 change_jwm_background
pankso@66 208 # In Live mode hacker JWM config dose not exist, this is
pankso@66 209 # because tazx is executed at boot time by root.
pankso@66 210 if [ ! -f "/home/hacker/.jwmrc" ]; then
pankso@66 211 JWM_CONFIG=/home/hacker/.jwmrc
pankso@81 212 cp /etc/jwm/system.jwmrc $JWM_CONFIG
pankso@66 213 change_jwm_background
pankso@66 214 chown hacker.hacker $JWM_CONFIG
pankso@66 215 fi
pankso@66 216 }
pankso@45 217
pankso@66 218 # Creat ~/.xsession to keep the configuration selected (used
pankso@66 219 # only by startx, Slim login manager use .xinitrc).
pankso@66 220 creat_xsession()
pankso@66 221 {
pankso@68 222 cat > $HOME/.xsession << _EOF_
pankso@68 223 # ~/.xsession: Start X window session manually on your system (startx).
pankso@37 224 #
pankso@65 225 $XSERVER -ac -shadow $XSEVER_OPTS -screen $NEW_SCREEN -mouse $MOUSE &
pankso@65 226 #xterm &
pankso@37 227 #xpad &
pankso@68 228 _EOF_
pankso@99 229 # LXpanel by default with JWM.
pankso@99 230 if [ "$WM" = "jwm" ];then
pankso@99 231 echo 'lxpanel &' >> $HOME/.xsession
pankso@99 232 fi
pankso@104 233 echo "exec $WM" >> $HOME/.xsession
pankso@66 234 chmod 700 $HOME/.xsession
pankso@66 235 }
pankso@4 236
pankso@66 237 ###################
pankso@66 238 # Tazx sequence #
pankso@66 239 ###################
pankso@66 240
pascal@96 241 [ -n "$NEW_SCREEN" ] || screen_config_dialog
pankso@66 242 slim_config
pankso@66 243 e17_stuff
pankso@81 244 openbox_stuff
pankso@66 245 creat_xinitrc
pankso@66 246 jwm_config
pankso@66 247 creat_xsession
pankso@4 248
pankso@4 249 exit 0