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