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@351
|
4 # This tinyutils is part of slitaz-tools. Tazx can configure Xvesa kdrive
|
pankso@351
|
5 # and Xorg with several Window Manager.
|
pankso@4
|
6 #
|
pankso@351
|
7 # (c) 2009 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 #
|
pascal@190
|
11 : ${DIALOG=tazdialog}
|
pankso@4
|
12
|
pankso@351
|
13 # Default value.
|
pankso@4
|
14 XSERVER=Xvesa
|
pankso@351
|
15 KEYBD=keyboard
|
pankso@351
|
16 MOUSE=mouse,5,/dev/input/mice
|
pankso@351
|
17 WM=openbox
|
pankso@351
|
18
|
pankso@339
|
19 # Default user for config files in Live mode.
|
erjo@359
|
20 [ -z $USER ] && USER=`cat /etc/passwd | grep 1000 | cut -d ":" -f 1`
|
pankso@4
|
21
|
pankso@66
|
22 ####################
|
pankso@66
|
23 # Tazx functions #
|
pankso@66
|
24 ####################
|
pankso@66
|
25
|
pankso@260
|
26 # Patch xorg.conf to set keymap layout.
|
pankso@260
|
27 patch_xorg_kbd()
|
pankso@260
|
28 {
|
pankso@260
|
29 KEYMAP=`cat /etc/keymap.conf`
|
pankso@260
|
30 case $KEYMAP in
|
pankso@260
|
31 fr_CH-latin1)
|
pankso@260
|
32 # Swiss FrenCH
|
pankso@260
|
33 patch -p0 <<EOF
|
pankso@260
|
34 --- /etc/X11/xorg.conf
|
pankso@260
|
35 +++ /etc/X11/xorg.conf
|
pankso@260
|
36 @@ -30,2 +30,3 @@
|
pankso@260
|
37 Driver "kbd"
|
pankso@260
|
38 + Option "XkbLayout" "ch"
|
pankso@260
|
39 + Option "XkbVariant" "fr"
|
pankso@260
|
40 EndSection
|
pankso@260
|
41 EOF
|
pankso@260
|
42 ;;
|
pankso@260
|
43 en)
|
pankso@260
|
44 # Englisk UK
|
pankso@260
|
45 patch -p0 <<EOF
|
pankso@260
|
46 --- /etc/X11/xorg.conf
|
pankso@260
|
47 +++ /etc/X11/xorg.conf
|
pankso@260
|
48 @@ -30,2 +30,3 @@
|
pankso@260
|
49 Driver "kbd"
|
pankso@260
|
50 + Option "XkbLayout" "en"
|
pankso@260
|
51 + Option "XkbVariant" "en"
|
pankso@260
|
52 EndSection
|
pankso@260
|
53 EOF
|
pankso@260
|
54 ;;
|
pankso@260
|
55 ru)
|
pankso@260
|
56 # Russian
|
pankso@260
|
57 patch -p0 <<EOF
|
pankso@260
|
58 --- /etc/X11/xorg.conf
|
pankso@260
|
59 +++ /etc/X11/xorg.conf
|
pankso@260
|
60 @@ -30,2 +30,3 @@
|
pankso@260
|
61 Driver "kbd"
|
pankso@260
|
62 + Option "XkbLayout" "us,ru(winkeys)"
|
pankso@260
|
63 + Option "XkbVariant" "grp:alt_shift_toggle"
|
pankso@260
|
64 EndSection
|
pankso@260
|
65 EOF
|
pankso@260
|
66 ;;
|
pankso@303
|
67 slovene)
|
pankso@303
|
68 # Slovenian
|
pankso@303
|
69 patch -p0 <<EOF
|
pankso@303
|
70 --- /etc/X11/xorg.conf
|
pankso@303
|
71 +++ /etc/X11/xorg.conf
|
pankso@303
|
72 @@ -30,2 +30,3 @@
|
pankso@303
|
73 Driver "kbd"
|
pankso@303
|
74 + Option "XkbLayout" "si"
|
pankso@303
|
75 + Option "XkbOptions" "grp:alt_shift_toggle"
|
pankso@303
|
76 EndSection
|
pankso@303
|
77 EOF
|
pankso@308
|
78 ;;
|
pankso@260
|
79 *)
|
pankso@260
|
80 # Use clean /etc/keymap.conf value.
|
pankso@260
|
81 KEYMAP=${KEYMAP%-latin1}
|
pankso@260
|
82 KEYMAP=${KEYMAP%-lat2}
|
pankso@260
|
83 KEYMAP=${KEYMAP%-lat6}
|
pankso@260
|
84 KEYMAP=${KEYMAP%-abnt2}
|
pankso@260
|
85 patch -p0 <<EOF
|
pankso@260
|
86 --- /etc/X11/xorg.conf
|
pankso@260
|
87 +++ /etc/X11/xorg.conf
|
pankso@260
|
88 @@ -30,2 +30,3 @@
|
pankso@260
|
89 Driver "kbd"
|
pankso@260
|
90 + Option "XkbLayout" "$KEYMAP"
|
pankso@260
|
91 EndSection
|
pankso@260
|
92 EOF
|
pankso@260
|
93 ;;
|
pankso@260
|
94 esac
|
pankso@260
|
95 }
|
pankso@260
|
96
|
pankso@117
|
97 # Install xorg server
|
pankso@117
|
98 install_xorg()
|
pankso@117
|
99 {
|
pankso@117
|
100 tazpkg recharge
|
pankso@117
|
101 exec 3>&1
|
pankso@117
|
102 value=`$DIALOG --clear --colors --title " Install Xorg " \
|
pankso@117
|
103 --menu \
|
paul@334
|
104 "The 'tazx' application helps you to select your X driver." 16 70 5 \
|
pankso@117
|
105 $(grep xorg-xf86-video /var/lib/tazpkg/packages.list | cut -d- -f4 | while read x; do echo $x; echo driver; done) \
|
pankso@117
|
106 "quit" "Quitter" \
|
pankso@117
|
107 2>&1 1>&3`
|
pankso@117
|
108 retval=$?
|
pankso@117
|
109 exec 3>&-
|
pankso@117
|
110 # Continue, exit...
|
pankso@117
|
111 case $retval in
|
pankso@117
|
112 1)
|
pankso@117
|
113 echo "Cancel pressed..."
|
pankso@117
|
114 exit 0 ;;
|
pankso@117
|
115 255)
|
pankso@117
|
116 if test -z "$value"; then
|
pankso@117
|
117 echo "ESC pressed..."
|
pankso@117
|
118 exit 0
|
pankso@117
|
119 fi ;;
|
pankso@117
|
120 esac
|
pankso@117
|
121 # Set selected value.
|
pankso@117
|
122 case $value in
|
pankso@117
|
123 quit)
|
pankso@117
|
124 echo "Quit..."
|
pankso@117
|
125 exit 0 ;;
|
pankso@117
|
126 *)
|
pankso@117
|
127 tazpkg get-install xorg-server
|
pankso@117
|
128 tazpkg get-install xorg-xf86-video-$value
|
pascal@124
|
129 Xorg -configure :1
|
pankso@351
|
130 mv -f /root/xorg.conf.new /etc/X11/xorg.conf
|
pankso@260
|
131 patch_xorg_kbd
|
pankso@117
|
132 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
|
pankso@117
|
133 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
|
pankso@351
|
134 XSERVER=Xorg ;;
|
pankso@117
|
135 esac
|
pankso@117
|
136 }
|
pankso@117
|
137
|
pankso@66
|
138 # Screen configuration dialog.
|
pankso@66
|
139 screen_config_dialog()
|
pankso@66
|
140 {
|
pankso@66
|
141 exec 3>&1
|
pankso@340
|
142 value=`$DIALOG \
|
pankso@66
|
143 --clear --colors \
|
pankso@66
|
144 --title " Configure X " \
|
pankso@66
|
145 --menu \
|
paul@334
|
146 "The 'tazx' application helps you to configure your X session.\n\
|
paul@334
|
147 Window Manager : \Z2$WM\Zn" 16 70 5 \
|
pankso@118
|
148 $(Xvesa -listmodes 2>&1 | grep ^0x | awk '{ printf "%s %s\n",$2,$3 }' | sort -nr | grep x[1-2][4-6]) \
|
pankso@66
|
149 "xterm" "800x600x16" \
|
pankso@117
|
150 "xorg" "Installer Xorg" \
|
pankso@66
|
151 "quit" "Quitter" \
|
pankso@66
|
152 2>&1 1>&3`
|
pankso@66
|
153 retval=$?
|
pankso@66
|
154 exec 3>&-
|
pankso@66
|
155 # Continue, exit or help...
|
pankso@66
|
156 case $retval in
|
pankso@66
|
157 0)
|
pankso@66
|
158 continue ;;
|
pankso@66
|
159 1)
|
pankso@66
|
160 echo "Cancel pressed..."
|
pankso@66
|
161 exit 0 ;;
|
pankso@66
|
162 255)
|
pankso@66
|
163 if test -n "$value"; then
|
pankso@66
|
164 continue
|
pankso@66
|
165 else
|
pankso@66
|
166 echo "ESC pressed..."
|
pankso@66
|
167 exit 0
|
pankso@66
|
168 fi ;;
|
pankso@66
|
169 esac
|
pankso@66
|
170 # Set selected value.
|
pankso@66
|
171 case $value in
|
pankso@117
|
172 xorg)
|
pankso@339
|
173 install_xorg ;;
|
pankso@66
|
174 xterm)
|
pankso@66
|
175 Xvesa -ac -shadow -screen 800x600x16 -br &
|
pankso@66
|
176 exec xterm -cr orange -geometry 80x35+0-0 ;;
|
pankso@66
|
177 *)
|
pankso@68
|
178 NEW_SCREEN=$value ;;
|
pankso@66
|
179 esac
|
pankso@66
|
180 }
|
pankso@4
|
181
|
pankso@65
|
182 # Slim config if root.
|
pankso@66
|
183 slim_config()
|
pankso@66
|
184 {
|
pankso@66
|
185 if test $(id -u) = 0; then
|
paul@317
|
186 # /etc/X11/screen.conf exists for Live mode, if this file does not
|
pankso@68
|
187 # exist tazx is executed at boot time.
|
pankso@68
|
188 mkdir -p /etc/X11
|
pankso@68
|
189 echo "SCREEN=$NEW_SCREEN" > /etc/X11/screen.conf
|
pankso@67
|
190 # Get current screen size and sed config file with the new value.
|
pankso@66
|
191 if [ -f /etc/slim.conf ]; then
|
pankso@351
|
192 RES=$(grep ^xserver_arguments /etc/slim.conf | \
|
pankso@351
|
193 sed 's/xserver_arguments.*-screen *//' | awk '{ print $1 }')
|
pankso@351
|
194 #sed -i "s/\(xserver_arguments.*-screen\).*/\1 $NEW_SCREEN/" /etc/slim.conf
|
pankso@351
|
195 sed -i s/"-screen $RES"/"-screen $NEW_SCREEN"/ /etc/slim.conf
|
pankso@66
|
196 fi
|
pankso@65
|
197 fi
|
pankso@66
|
198 }
|
pankso@66
|
199
|
pankso@339
|
200 # Window manager specific configuration.
|
pankso@339
|
201 wm_config()
|
pankso@66
|
202 {
|
pankso@339
|
203 case $WM in
|
pankso@339
|
204 ob|openbox)
|
pankso@339
|
205 WM=openbox-session
|
pankso@339
|
206 XSEVER_OPTS="dpms +extension Composite"
|
pankso@339
|
207 # Check if a personal autostart script exists if OB is installed.
|
pankso@339
|
208 if [ -d "/var/lib/tazpkg/installed/openbox" ]; then
|
pankso@339
|
209 if [ ! -f "$HOME/.config/openbox/autostart.sh" ]; then
|
pankso@339
|
210 mkdir -p $HOME/.config/openbox
|
pankso@339
|
211 cp /etc/xdg/openbox/autostart.sh $HOME/.config/openbox
|
pankso@339
|
212 fi
|
pankso@339
|
213 # Script for default user (uid=1000).
|
pankso@339
|
214 if [ ! -f "/home/$USER/.config/openbox/autostart.sh" ]; then
|
pankso@339
|
215 mkdir -p /home/$USER/.config/openbox
|
pankso@339
|
216 cp /etc/xdg/openbox/autostart.sh /home/$USER/.config/openbox
|
pankso@339
|
217 fi
|
pankso@339
|
218 if [ ! -f "/home/$USER/.config/openbox/menu.xml" ]; then
|
pankso@339
|
219 mkdir -p /home/$USER/.config/openbox
|
pankso@339
|
220 cp /etc/xdg/openbox/menu.xml /home/$USER/.config/openbox
|
pankso@339
|
221 fi
|
pankso@339
|
222 chown -R $USER.$USER /home/$USER/.config
|
pankso@339
|
223 fi ;;
|
pankso@339
|
224 jwm)
|
pankso@339
|
225 WM=jwm
|
pankso@339
|
226 XSEVER_OPTS="dpms +extension Composite"
|
pankso@339
|
227 JWM_CONFIG=$HOME/.jwmrc
|
pankso@339
|
228 if [ -d "/var/lib/tazpkg/installed/jwm" ]; then
|
pankso@339
|
229 if [ ! -f "$JWM_CONFIG" ]; then
|
pankso@339
|
230 cp /etc/jwm/system.jwmrc $JWM_CONFIG
|
pankso@339
|
231 fi
|
pankso@339
|
232 # In Live mode default user/root JWM config does not exist and
|
pankso@339
|
233 # $HOME is not set, this is because tazx is executed by boot
|
pankso@339
|
234 # scripts.
|
pankso@339
|
235 if [ ! -f "/home/$USER/.jwmrc" ]; then
|
pankso@339
|
236 cp /etc/jwm/system.jwmrc /home/$USER/.jwmrc
|
pankso@339
|
237 chown $USER.$USER /home/$USER/.jwmrc
|
pankso@339
|
238 fi
|
pankso@339
|
239 if [ ! -f "/root/.jwmrc" -a `id -u` = 0 ]; then
|
pankso@339
|
240 cp /etc/jwm/system.jwmrc /root/.jwmrc
|
pankso@339
|
241 fi
|
pankso@339
|
242 fi ;;
|
pankso@339
|
243 pekwm)
|
pankso@339
|
244 WM=pekwm
|
pankso@339
|
245 XSEVER_OPTS="dpms"
|
pankso@339
|
246 if [ -d "/var/lib/tazpkg/installed/pekwm" ]; then
|
pankso@339
|
247 if [ -d "$HOME/.pekwm" ]; then
|
pankso@339
|
248 cp -R /etc/pekwm $HOME/.pekwm
|
pankso@339
|
249 fi
|
pankso@339
|
250 # In Live mode we want config before starting pekwm the first time.
|
pankso@339
|
251 if [ ! -d "/home/$USER/.pekwm" ]; then
|
pankso@339
|
252 cp -R /etc/pekwm /home/$USER/.pekwm
|
pankso@339
|
253 chown -R $USER.$USER /home/$USER/.pekwm
|
pankso@339
|
254 chmod +x /home/$USER/.pekwm/start
|
pankso@339
|
255 fi
|
pankso@339
|
256 if [ ! -d "/root/.pekwm" -a `id -u` = 0 ]; then
|
pankso@339
|
257 cp -R /etc/pekwm /root/.pekwm
|
pankso@339
|
258 chmod +x /root/.pekwm/start
|
pankso@339
|
259 fi
|
pankso@339
|
260 fi ;;
|
pankso@339
|
261 e17|enlightenment)
|
pankso@339
|
262 WM=enlightenment_start
|
pankso@339
|
263 XSEVER_OPTS="dpms -terminate" ;;
|
pankso@339
|
264 fluxbox)
|
pankso@339
|
265 WM=startfluxbox
|
pankso@339
|
266 XSEVER_OPTS="dpms" ;;
|
pankso@339
|
267 dwm|karmen)
|
pankso@339
|
268 WM=$WM-session
|
pankso@339
|
269 XSEVER_OPTS="dpms" ;;
|
pankso@339
|
270 awesome)
|
pankso@339
|
271 WM=awesome
|
pankso@339
|
272 XSEVER_OPTS="dpms" ;;
|
pankso@339
|
273 esac
|
pankso@81
|
274 }
|
pankso@81
|
275
|
pankso@68
|
276 # Sample xinitrc for user (WM can be specified with F1 at slim login).
|
pankso@68
|
277 xinitrc_sample()
|
pankso@68
|
278 {
|
pankso@68
|
279 cat > $FILE << "EOF"
|
pankso@68
|
280 # ~/.xinitrc: Executed by slim login manager to startx X session.
|
pankso@339
|
281 # You can use F1 with Slim to chage your window manager or configure
|
pankso@339
|
282 # it permanently with your personnal applications.conf file.
|
pankso@68
|
283 #
|
pankso@339
|
284 . $HOME/.config/slitaz/applications.conf
|
pankso@99
|
285
|
pankso@117
|
286 case $1 in
|
pankso@339
|
287 e17|enlightenment*)
|
pankso@315
|
288 exec enlightenment_start ;;
|
pankso@162
|
289 openbox|openbox-session|ob)
|
pankso@315
|
290 exec openbox-session ;;
|
pankso@315
|
291 dwm|dwm-session)
|
pankso@315
|
292 exec dwm-session ;;
|
pankso@339
|
293 fluxbox|startfluxbox)
|
pankso@339
|
294 exec startfluxbox ;;
|
pankso@339
|
295 awesome)
|
pankso@339
|
296 exec awesome ;;
|
pankso@339
|
297 pekwm)
|
pankso@339
|
298 exec pekwm ;;
|
pankso@339
|
299 karmen|karmen-session)
|
pankso@339
|
300 exec karmen-session ;;
|
pankso@117
|
301 jwm)
|
pankso@81
|
302 lxpanel &
|
pankso@315
|
303 exec jwm ;;
|
pankso@117
|
304 *)
|
pankso@339
|
305 exec $WINDOW_MANAGER ;;
|
pankso@68
|
306 esac
|
pankso@68
|
307 EOF
|
pankso@339
|
308 # Set default WM in applications.conf user file. Default WM can be
|
pankso@339
|
309 # configured graphicaly with 'desktopbox tazapps'
|
pankso@339
|
310 . $CONFIG
|
pankso@339
|
311 sed -i s/"WINDOW_MANAGER=.*"/"WINDOW_MANAGER=\"$WM\""/ \
|
pankso@339
|
312 $CONFIG
|
pankso@68
|
313 }
|
pankso@68
|
314
|
pankso@65
|
315 # ~/.xinitrc for slim login.
|
pankso@66
|
316 creat_xinitrc()
|
pankso@66
|
317 {
|
pankso@68
|
318 FILE=$HOME/.xinitrc
|
pankso@339
|
319 CONFIG=$HOME/.config/slitaz/applications.conf
|
pankso@339
|
320 if [ ! -f $CONFIG ]; then
|
pankso@339
|
321 mkdir -p $HOME/.config/slitaz
|
pankso@339
|
322 cp /etc/slitaz/applications.conf $CONFIG
|
pankso@339
|
323 fi
|
pankso@68
|
324 xinitrc_sample
|
pankso@209
|
325 # In Live mode default user needs a xinitrc, since tazx
|
pankso@68
|
326 # is executed only by root.
|
pankso@209
|
327 if [ ! -f /home/$USER/.xinitrc ]; then
|
pankso@209
|
328 FILE=/home/$USER/.xinitrc
|
pankso@339
|
329 CONFIG=/home/$USER/.config/slitaz/applications.conf
|
pankso@339
|
330 if [ ! -f $CONFIG ]; then
|
pankso@339
|
331 mkdir -p /home/$USER/.config/slitaz
|
pankso@339
|
332 cp /etc/slitaz/applications.conf $CONFIG
|
pankso@339
|
333 fi
|
pankso@68
|
334 xinitrc_sample
|
pankso@209
|
335 chown $USER.$USER $FILE
|
pankso@339
|
336 chown -R $USER.$USER /home/$USER/.config/slitaz
|
pankso@105
|
337 fi
|
pankso@66
|
338 }
|
pankso@45
|
339
|
MikeDSmith25@252
|
340 # Create ~/.xsession to keep the configuration selected (used
|
MikeDSmith25@252
|
341 # only by startx, Slim login manager uses .xinitrc).
|
pankso@66
|
342 creat_xsession()
|
pankso@66
|
343 {
|
pankso@68
|
344 cat > $HOME/.xsession << _EOF_
|
pankso@68
|
345 # ~/.xsession: Start X window session manually on your system (startx).
|
pankso@37
|
346 #
|
pankso@68
|
347 _EOF_
|
pankso@117
|
348 if [ "$XSERVER " == "Xorg" ]; then
|
pankso@117
|
349 echo 'Xorg &' >> $HOME/.xsession
|
pankso@117
|
350 else
|
pankso@351
|
351 cat >> $HOME/.xsession << _EOT_
|
pankso@351
|
352 $XSERVER -ac -shadow $XSEVER_OPTS \\
|
pankso@351
|
353 -screen $NEW_SCREEN \\
|
pankso@351
|
354 -keybd $KEYBD \\
|
pankso@351
|
355 -mouse $MOUSE &
|
pankso@351
|
356 _EOT_
|
pankso@117
|
357 fi
|
pankso@117
|
358 echo '#xterm &' >> $HOME/.xsession
|
pankso@117
|
359 echo '#xpad &' >> $HOME/.xsession
|
pankso@99
|
360 # LXpanel by default with JWM.
|
pankso@117
|
361 if [ "$WM" = "jwm" ]; then
|
pankso@99
|
362 echo 'lxpanel &' >> $HOME/.xsession
|
pankso@99
|
363 fi
|
pankso@104
|
364 echo "exec $WM" >> $HOME/.xsession
|
pankso@66
|
365 chmod 700 $HOME/.xsession
|
pankso@66
|
366 }
|
pankso@4
|
367
|
pankso@66
|
368 ###################
|
pankso@66
|
369 # Tazx sequence #
|
pankso@66
|
370 ###################
|
pankso@66
|
371
|
pankso@351
|
372 case "$1" in
|
pankso@351
|
373 show-config)
|
pankso@351
|
374 . /etc/X11/screen.conf
|
pankso@351
|
375 echo ""
|
pankso@351
|
376 echo "X11 screen resolution: $SCREEN"
|
pankso@351
|
377 echo ""
|
pankso@351
|
378 echo "Slim configuration for X server:"
|
pankso@351
|
379 cat /etc/slim.conf | grep ^default_xserver
|
pankso@351
|
380 cat /etc/slim.conf | grep ^xserver_arguments
|
pankso@351
|
381 echo "" ;;
|
pankso@351
|
382 install-xorg)
|
pankso@351
|
383 # WM can be specified on cmdline.
|
pankso@351
|
384 if [ -n "$2" ]; then
|
pankso@351
|
385 WM=$2
|
pankso@351
|
386 fi
|
pankso@351
|
387 install_xorg
|
pankso@351
|
388 slim_config
|
pankso@351
|
389 wm_config
|
pankso@351
|
390 creat_xinitrc
|
pankso@351
|
391 creat_xsession ;;
|
pankso@351
|
392 *)
|
pankso@351
|
393 # WM can be specified on cmdline.
|
pankso@351
|
394 if [ -n "$1" ]; then
|
pankso@351
|
395 WM=$1
|
pankso@351
|
396 fi
|
pankso@351
|
397 [ -n "$NEW_SCREEN" ] || screen_config_dialog
|
pankso@351
|
398 slim_config
|
pankso@351
|
399 wm_config
|
pankso@351
|
400 creat_xinitrc
|
pankso@351
|
401 creat_xsession ;;
|
pankso@351
|
402 esac
|
pankso@4
|
403
|
pankso@4
|
404 exit 0
|