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