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.
|
al@926
|
4 # This tinyutil is part of slitaz-tools. Tazx can configure Xorg with
|
pankso@626
|
5 # several Window Managers. The GTK interface to configure X is in tazbox.
|
pankso@4
|
6 #
|
al@939
|
7 # (c) 2011-2015 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 #
|
pankso@837
|
11
|
paul@838
|
12 # 20140317: most xsession, xinitrc are obsolete, provided system files
|
pankso@840
|
13 # are in /etc/skel and WM config files should no longer be copied by
|
pankso@840
|
14 # tazx to user home. If some configs are needed by WMs they should
|
pankso@840
|
15 # be set by a /usr/bin/wmname-session script I guess. - Pankso
|
pankso@837
|
16
|
al@813
|
17 . /lib/libtaz.sh
|
al@813
|
18 . /etc/slitaz/slitaz.conf
|
pankso@840
|
19
|
al@813
|
20 export TEXTDOMAIN='slitaz-tools' #i18n
|
pascal@916
|
21 : ${DIALOG=dialog --timeout 60}
|
pankso@4
|
22
|
al@939
|
23
|
pankso@534
|
24 # Default user for config files in Live mode, id is 1000 since it is
|
pankso@534
|
25 # created by /etc/init.d/bootopts.sh.
|
al@926
|
26
|
al@926
|
27 USER=$(awk -F: '/1000/{print $1}' /etc/passwd)
|
al@926
|
28
|
pankso@4
|
29
|
pankso@628
|
30 #
|
pankso@615
|
31 # Functions
|
pankso@628
|
32 #
|
pankso@615
|
33
|
al@926
|
34
|
al@813
|
35 # Save chunk of xorg.conf into specified file
|
al@926
|
36
|
al@813
|
37 save_chunk() {
|
al@813
|
38 sed -e '/Section "'${1#*-}'"/,/EndSection/!d' \
|
al@926
|
39 -e "s/EndSection/&\n/" $xorg_template > \
|
al@813
|
40 $xorg_config/$1.conf
|
pankso@615
|
41 }
|
pankso@66
|
42
|
al@926
|
43
|
al@926
|
44 # Create a xorg.conf if needed
|
al@926
|
45
|
pankso@871
|
46 gen_xorg_conf_file() {
|
pankso@871
|
47 if [ ! -f /etc/X11/xorg.conf ]; then
|
pankso@871
|
48 cat > /etc/X11/xorg.conf << EOT
|
pankso@871
|
49 # You can put here your own Xorg configurations. This config file is read
|
pankso@871
|
50 # before all files in /etc/X11/xorg.conf.d and will NOT be erased by any
|
pankso@871
|
51 # updates.
|
pankso@871
|
52 EOT
|
pankso@871
|
53 fi
|
pankso@871
|
54 }
|
pankso@871
|
55
|
al@926
|
56
|
al@926
|
57 # Add or remove xkb applet from lxpanel
|
al@926
|
58
|
al@926
|
59 xkb() {
|
al@926
|
60 case $(id -u) in
|
al@926
|
61 0)
|
al@926
|
62 # Empty if lxpanel not running, else something like:
|
al@926
|
63 # tux lxpanel -p slitaz
|
al@926
|
64 LXPS=$(ps -ouser,args | sed -n '/[l]xpanel/ s| *| |p' | \
|
al@926
|
65 fgrep -v '[' | fgrep -v 'xkb' | fgrep -v 'sh')
|
al@926
|
66
|
al@926
|
67 # Stop lxpanel
|
al@926
|
68 if [ -n "$LXPS" ]; then
|
al@926
|
69 lxpanelctl exit
|
al@926
|
70 killall lxpanel
|
al@926
|
71 fi
|
al@926
|
72
|
al@926
|
73 # For all human users
|
al@926
|
74 for USER in $(awk -F: '/\/home\//{print $1}' /etc/passwd); do
|
al@926
|
75 su $USER -c '. ~/.profile; tazx xkb'
|
al@926
|
76 done
|
al@926
|
77
|
al@926
|
78 # Re-run lxpanel
|
al@926
|
79 [ -n "$LXPS" ] && su ${LXPS%% *} -c "exec ${LXPS#* }" &
|
al@926
|
80 ;;
|
al@926
|
81
|
al@926
|
82 *)
|
al@926
|
83 DOTCONFIG=${XDG_CONFIG_HOME:-$HOME/.config}
|
al@926
|
84 CFG_LXPANEL=$DOTCONFIG/lxpanel
|
al@926
|
85
|
al@926
|
86 if [ ! -d $CFG_LXPANEL ]; then
|
al@926
|
87 mkdir -p $DOTCONFIG
|
al@926
|
88 cp -r /etc/lxpanel $DOTCONFIG
|
al@926
|
89 fi
|
al@926
|
90
|
al@926
|
91 case $(fgrep 'XkbLayout' /etc/X11/xorg.conf.d/40-Keyboard.conf | \
|
al@926
|
92 fgrep -o ',') in
|
al@926
|
93 '')
|
al@926
|
94 for CFG in $(find $CFG_LXPANEL -type f -name panel); do
|
al@926
|
95 if [ -n "$(grep 'type = xkb' $CFG)" ]; then
|
al@926
|
96 echo "Remove xkb applet from $CFG"
|
al@926
|
97 sed -i "$(grep -n -e "^Plugin {" -e "^}" -e "xkb" \
|
al@926
|
98 $CFG | grep -C 1 xkb | grep -v xkb | cut -d: \
|
al@926
|
99 -f1 | tr '\n' ' ' | sed 's| |,|')d" $CFG
|
al@926
|
100 fi
|
al@926
|
101 done ;;
|
al@926
|
102 ',')
|
al@926
|
103 for CFG in $(find $CFG_LXPANEL -type f -name panel); do
|
al@926
|
104 if [ -z "$(grep 'type = xkb' $CFG)" ]; then
|
al@926
|
105 echo "Add xkb applet to $CFG"
|
al@926
|
106 XKB='Plugin {\
|
al@926
|
107 type = xkb\
|
al@926
|
108 Config {\
|
al@952
|
109 DisplayType=1\
|
al@926
|
110 PerWinLayout=0\
|
al@926
|
111 NoResetOpt=0\
|
al@926
|
112 KeepSysLayouts=1\
|
al@926
|
113 Model=pc105\
|
al@926
|
114 LayoutsList=us\
|
al@926
|
115 VariantsList=,\
|
al@926
|
116 ToggleOpt=shift_caps_toggle\
|
al@926
|
117 FlagSize=4\
|
al@926
|
118 }\
|
al@926
|
119 }\
|
al@926
|
120 '
|
al@926
|
121 sed -i "$(grep -n -e "^Plugin {" -e "tray" $CFG | \
|
al@926
|
122 grep -B1 tray | head -n1 | cut -d: -f1) i\\
|
al@926
|
123 $XKB" $CFG
|
al@926
|
124 fi
|
al@926
|
125 done ;;
|
al@926
|
126 esac ;;
|
al@926
|
127 esac
|
al@926
|
128 }
|
al@926
|
129
|
al@926
|
130
|
pankso@870
|
131 # Generate or regenerate 40-Keyboard.conf
|
al@926
|
132
|
pankso@870
|
133 keyboard_conf() {
|
al@926
|
134 # Configure the keyboard with the right keymap
|
al@813
|
135 keymap=$(cat /etc/keymap.conf)
|
pankso@874
|
136 keyboard_config="/etc/X11/xorg.conf.d/40-Keyboard.conf"
|
al@779
|
137 variant=""
|
al@926
|
138
|
al@779
|
139 # this XkbOption moved from 40-evdev.conf (xorg-xf86-input-evdev)
|
al@779
|
140 options="terminate:ctrl_alt_bksp"
|
al@926
|
141 _n 'Creating:'; echo -n " $keyboard_config"
|
pankso@874
|
142 mkdir -p $(dirname $keyboard_config)
|
al@926
|
143
|
al@948
|
144 # Reference: syslinux receipt; LXPanel keyboard layout switcher
|
pankso@874
|
145 case "$keymap" in
|
al@948
|
146 # Swiss FrenCH
|
al@948
|
147 fr_CH-latin1) layout='ch'; variant='fr' ;;
|
al@948
|
148 # English UK
|
al@948
|
149 uk) layout='gb' ;;
|
al@948
|
150 # Greek
|
al@948
|
151 gr) layout='us,gr'
|
al@946
|
152 options="grp:ctrl_shift_toggle, grp_led:scroll, compose:ralt, $options" ;;
|
al@948
|
153 # Russian
|
al@948
|
154 ru) layout='us,ru'
|
al@926
|
155 options="grp:ctrl_shift_toggle, grp_led:scroll, compose:ralt, $options" ;;
|
al@948
|
156 # Ukrainian
|
al@948
|
157 ua) layout='us,ua,ru'
|
al@926
|
158 options="grp:ctrl_shift_toggle, compose:ralt, $options" ;;
|
al@948
|
159 # Slovenian
|
al@948
|
160 slovene) layout='si' ;;
|
al@948
|
161 # Brasil (us-acentos); English US (acentos)
|
al@948
|
162 us-acentos) layout='us'; variant='intl' ;;
|
al@948
|
163 # Deutsch Schweiz
|
al@948
|
164 de_CH-latin1) layout='ch' ;;
|
al@948
|
165 # Deutsch Schweiz (sg) in syslinux menu
|
al@948
|
166 sg-latin1)
|
al@948
|
167 # I can't guess appropriate layout for this one
|
al@948
|
168 ;;
|
al@948
|
169 # Dvorak
|
al@948
|
170 dvorak) layout='us'; variant='dvorak' ;;
|
al@948
|
171 dvorak-l) layout='us'; variant='dvorak-l' ;;
|
al@948
|
172 dvorak-r) layout='us'; variant='dvorak-r' ;;
|
al@948
|
173 # French (Canada)
|
al@948
|
174 cf) layout='ca' ;;
|
al@948
|
175 # Croatian
|
al@948
|
176 hr,croat|croat) layout='hr' ;;
|
al@948
|
177 # Japanese
|
al@948
|
178 jp106) layout='jp' ;; # is ok?
|
al@948
|
179 # Dutch
|
al@948
|
180 nl2) layout='nl' ;;
|
al@948
|
181 # Polish
|
al@948
|
182 pl2) layout='pl' ;;
|
al@948
|
183 # Turkish
|
al@948
|
184 trq) layout='tr' ;;
|
al@948
|
185 tr_q-latin5) layout='tr'; variant='ku' ;; # is ok?
|
al@952
|
186 # Persian(Farsi) (Iran)
|
al@952
|
187 ir) layout='us,ir'
|
al@952
|
188 options="grp:alt_shift_toggle, grp_led:scroll, $options" ;;
|
pankso@260
|
189 *)
|
pankso@260
|
190 # Use clean /etc/keymap.conf value.
|
gokhlayeh@492
|
191 keymap=${keymap%-latin1}
|
gokhlayeh@492
|
192 keymap=${keymap%-lat2}
|
gokhlayeh@492
|
193 keymap=${keymap%-lat6}
|
al@779
|
194 layout=${keymap%-abnt2}
|
pankso@260
|
195 esac
|
al@926
|
196
|
al@959
|
197 update_conf=''
|
al@959
|
198 if [ -e "$keyboard_config" ]; then
|
al@959
|
199 actual_layout="$(awk 'BEGIN{FS="\""}{if($2=="XkbLayout")print $4}' $keyboard_config)"
|
al@959
|
200 # config not matched '/etc/keymap.conf', update
|
al@959
|
201 [ "$layout" != "$actual_layout" ] && update_conf='1'
|
al@959
|
202 else
|
al@959
|
203 # config absent, create
|
al@959
|
204 update_conf='1'
|
al@959
|
205 fi
|
al@959
|
206
|
al@959
|
207 [ -n "$update_conf" ] && cat > $keyboard_config << EOC
|
al@779
|
208 Section "InputClass"
|
al@779
|
209 Identifier "Keyboard Defaults"
|
al@779
|
210 MatchIsKeyboard "yes"
|
al@779
|
211 Option "XkbLayout" "$layout"
|
al@779
|
212 Option "XkbVariant" "$variant"
|
al@779
|
213 Option "XkbOptions" "$options"
|
al@779
|
214 EndSection
|
al@779
|
215 EOC
|
al@926
|
216
|
pankso@874
|
217 status
|
al@926
|
218 [ -z "$variant" ] && sed -i '/XkbVariant/d' $keyboard_config
|
psychomaniak@932
|
219 [ -z $(busybox which lxpanel) ] || xkb
|
pankso@870
|
220 }
|
pankso@870
|
221
|
al@926
|
222
|
al@926
|
223 # Populate xorg.conf.d
|
al@926
|
224
|
pankso@870
|
225 xorg_conf_d() {
|
pankso@870
|
226 # Define the xorg.conf.d (can be /etc/X11/xorg.conf.d or /usr/share/X11/xorg.conf.d)
|
pankso@870
|
227 xorg_config=/etc/X11/xorg.conf.d
|
pankso@870
|
228
|
pankso@870
|
229 # Define the xorg.conf.new place.
|
pankso@870
|
230 xorg_template=/root/xorg.conf.new
|
pankso@870
|
231
|
pankso@870
|
232 # Obtain a default configuration file from Xorg.
|
pankso@870
|
233 Xorg -configure :2
|
pankso@870
|
234
|
pankso@870
|
235 # Backup existing config.
|
al@926
|
236 tar -cf $xorg_config/../Previous_xorg.conf.d.tar $xorg_config/ &> /dev/null
|
pankso@870
|
237
|
pankso@870
|
238 # Put the different sections in separate files in the config directory.
|
pankso@870
|
239 save_chunk 10-ServerLayout
|
pankso@870
|
240 sed -i '/Core/d' $xorg_config/10-ServerLayout.conf
|
pankso@870
|
241 save_chunk 20-Files
|
pankso@870
|
242 save_chunk 30-Module
|
pankso@870
|
243 save_chunk 50-Monitor
|
pankso@870
|
244 save_chunk 60-Device
|
pankso@870
|
245 save_chunk 70-Screen
|
pankso@870
|
246
|
pankso@870
|
247 # Remove the template.
|
pankso@870
|
248 rm $xorg_template
|
pankso@870
|
249
|
pankso@871
|
250 # Keyboard & xorg.conf
|
pankso@870
|
251 keyboard_conf
|
pankso@871
|
252 gen_xorg_conf_file
|
pankso@260
|
253 }
|
pankso@260
|
254
|
al@926
|
255
|
al@926
|
256 # Process dialog's return code.
|
al@926
|
257
|
psychomaniak@912
|
258 dialog_end() {
|
psychomaniak@912
|
259 retval=$?
|
psychomaniak@912
|
260 exec 3>&-
|
psychomaniak@912
|
261 # Continue or exit.
|
psychomaniak@912
|
262 case $retval in
|
al@926
|
263 0|3) continue ;;
|
al@926
|
264 1|255) exit 0 ;;
|
psychomaniak@912
|
265 esac
|
psychomaniak@912
|
266 }
|
psychomaniak@912
|
267
|
al@926
|
268
|
paul@549
|
269 # Install xorg server.
|
al@926
|
270
|
al@813
|
271 install_xorg() {
|
al@926
|
272 [ -f "$PKGS_DB/packages.list" ] || tazpkg recharge
|
al@926
|
273
|
pankso@117
|
274 exec 3>&1
|
al@926
|
275
|
al@926
|
276 driver=$($DIALOG \
|
al@926
|
277 --clear --colors --scrollbar --title " $(_ 'Install Xorg') " \
|
al@926
|
278 --menu "$(_ 'Tazx helps you to select your X driver.')" 16 70 9 \
|
al@926
|
279 'auto' "$(_ 'Auto configuring')" \
|
al@926
|
280 $(fgrep xorg-xf86-video- $PKGS_DB/packages.list | cut -d- -f4 | \
|
al@926
|
281 sed "s|.*|& $(_ 'driver')|") \
|
al@926
|
282 'quit' "$(_ 'Quit')" \
|
al@926
|
283 2>&1 1>&3)
|
al@926
|
284
|
psychomaniak@912
|
285 dialog_end
|
al@813
|
286
|
al@926
|
287 case $driver in
|
pankso@628
|
288 quit) exit 0 ;;
|
al@926
|
289 auto) autoselect_driver ;;
|
pankso@117
|
290 *)
|
psychomaniak@912
|
291 inst_pkg xorg-server
|
al@926
|
292 inst_pkg xorg-xf86-video-$driver
|
pankso@628
|
293 xorg_conf_d ;;
|
pankso@117
|
294 esac
|
pankso@117
|
295 }
|
pankso@117
|
296
|
al@925
|
297
|
al@926
|
298 # Auto-select and install Xorg driver.
|
al@926
|
299
|
psychomaniak@918
|
300 autoselect_driver() {
|
al@925
|
301 inst_pkg xorg-server
|
al@925
|
302
|
al@924
|
303 for VID in $(busybox lspci | grep 'Class 03' | cut -c21-24 | sort -u); do
|
al@924
|
304 case $VID in
|
al@924
|
305 1022|1002) d=ati ;;
|
al@924
|
306 8086) d=intel ;;
|
al@924
|
307 10de) d=nouveau ;;
|
al@924
|
308 1039) d=sis ;;
|
al@924
|
309 15ad) d=vmware ;;
|
al@925
|
310 *) d=''; $DIALOG --colors --msgbox \
|
al@926
|
311 "\n\Z1$(_n 'Failed to setup driver')\Zn $(_ '(unknown hardware)')" 7 68 ;;
|
al@924
|
312 esac
|
al@925
|
313 [ -n "$d" ] && inst_pkg xorg-xf86-video-$d
|
al@924
|
314 done
|
psychomaniak@918
|
315 }
|
psychomaniak@918
|
316
|
al@926
|
317
|
al@926
|
318 # Install specified package.
|
al@926
|
319
|
psychomaniak@912
|
320 inst_pkg() {
|
al@926
|
321 pkg="$@"
|
al@943
|
322 colorize 3 $(_ 'Installing pkg: %s' "$pkg")
|
al@926
|
323
|
al@926
|
324 case $(id -u) in
|
al@926
|
325 0) CMD="tazpkg -gi $@" ;;
|
al@926
|
326 *) CMD="sudo tazpkg -gi $@" ;;
|
al@926
|
327 esac
|
al@926
|
328 [ -d "$INSTALLED/$@" ] || $CMD
|
psychomaniak@909
|
329 }
|
psychomaniak@909
|
330
|
al@926
|
331
|
al@926
|
332 # Select/install Window Manager and favorite applications.
|
al@926
|
333
|
psychomaniak@912
|
334 apps_dialog() {
|
psychomaniak@931
|
335 slitaz_apps_conf
|
al@926
|
336 . $user_conf
|
al@926
|
337
|
psychomaniak@912
|
338 exec 3>&1
|
al@926
|
339
|
psychomaniak@918
|
340 app=$($DIALOG --clear --colors --backtitle "$msg" \
|
al@926
|
341 --title "{\Z3 $(_n 'Install Window Manager and applications') \Zn}" \
|
psychomaniak@918
|
342 --inputmenu "" 21 52 18 \
|
al@926
|
343 $(for a in WINDOW_MANAGER EDITOR BROWSER TERMINAL FILE_MANAGER; do
|
al@926
|
344 eval n='$'$a; echo $a $n;
|
al@926
|
345 done) 2>&1 1>&3)
|
psychomaniak@912
|
346 dialog_end
|
al@926
|
347
|
psychomaniak@912
|
348 case $app in
|
psychomaniak@935
|
349 RENAMED*) # like: RENAMED EDITOR myeditor
|
al@926
|
350 appname=$(echo $app | cut -d" " -f3)
|
al@926
|
351 app=$(echo $app | cut -d" " -f2) ;;
|
psychomaniak@912
|
352 *)
|
al@926
|
353 app_name_dialog only-installed ;;
|
psychomaniak@912
|
354 esac
|
al@926
|
355
|
al@943
|
356 if [ "$appname" != " " ]; then
|
al@943
|
357 if [ "$appname" == 'show_ALL' ]; then
|
al@926
|
358 app_name_dialog full-list
|
psychomaniak@931
|
359 inst_pkg $appname
|
psychomaniak@912
|
360 fi
|
al@926
|
361 if [ -z $(busybox which $appname) ]; then
|
psychomaniak@935
|
362 inst_pkg $appname
|
al@926
|
363 inst_pkg $(lzcat $PKGS_DB/files.list.lzma | fgrep /bin/$appname | head -n1 | cut -d: -f1)
|
al@926
|
364 fi
|
psychomaniak@931
|
365 sed -i "/$app/ s|=.*$|=\"$appname\"|" $user_conf
|
psychomaniak@912
|
366 fi
|
al@926
|
367
|
al@926
|
368 msg=''; apps_dialog # loop
|
psychomaniak@912
|
369 }
|
psychomaniak@912
|
370
|
al@926
|
371
|
al@926
|
372 # Show list of applications to choose.
|
al@926
|
373
|
psychomaniak@912
|
374 app_name_dialog() {
|
al@926
|
375 case $1 in
|
al@943
|
376 full-list) height='24' ;;
|
al@943
|
377 *) height='18' ;;
|
al@926
|
378 esac
|
al@926
|
379
|
psychomaniak@912
|
380 exec 3>&1
|
al@926
|
381
|
al@926
|
382 appname=$($DIALOG --clear --colors --title "$app" \
|
al@926
|
383 --menu '' $height 50 24 $(gen_applist $app $@) 2>&1 1>&3)
|
psychomaniak@912
|
384 dialog_end
|
psychomaniak@912
|
385 }
|
psychomaniak@912
|
386
|
al@926
|
387
|
al@926
|
388 # Generate application list for Dialog or Yad.
|
al@926
|
389
|
psychomaniak@912
|
390 gen_applist() {
|
al@926
|
391 # $1 = [ FILE_MANAGER | BROWSER | EDITOR | TERMINAL | WINDOW_MANAGER ]
|
al@926
|
392 # $2 = [ only-installed | full-list ]
|
al@926
|
393 # $3 = [ yad | * ]
|
al@926
|
394
|
al@926
|
395 . $user_conf
|
al@926
|
396
|
al@926
|
397 FILE_MANAGERS="clex caja emelfm2 mc pathfinder pcmanfm pcmanfm-qt ranger \
|
al@926
|
398 spacefm thunar xfe ytree"
|
al@926
|
399
|
al@926
|
400 BROWSERS="arora chrome cream dillo elinks firefox firefox-official iron \
|
al@943
|
401 links lynx midori netsurf opera QtWeb qupzilla retawq seamonkey surf tazweb \
|
al@943
|
402 w3m xombrero"
|
al@926
|
403
|
psychomaniak@931
|
404 EDITORS="adie beaver bluefish emacs geany jed joe juffed ht le leafpad \
|
psychomaniak@931
|
405 mcedit mousepad mp-5 nano qedit SciTE tea vi vim xedit xfw zile"
|
al@926
|
406
|
al@926
|
407 TERMINALS="aterm evilvte lxterminal mrxvt qterminal sakura stjerm tilda \
|
psychomaniak@931
|
408 urxvt vte xfce4-terminal xterm yeahconsole"
|
al@926
|
409
|
al@926
|
410 WINDOW_MANAGERS="awesome blackbox compiz dwm echinus enlightenment fluxbox \
|
al@926
|
411 icewm jwm lxde-session lxqt karmen matchbox openbox-session pekwm ratpoison \
|
al@926
|
412 xfwm4"
|
psychomaniak@912
|
413
|
psychomaniak@912
|
414 eval list='$'"$1"S
|
psychomaniak@912
|
415 eval current='$'"$1"
|
al@926
|
416
|
al@926
|
417 for i in $current $(echo " $list " | sed "s| $current | |g"); do
|
al@926
|
418
|
al@926
|
419 case $(busybox which $i) in
|
al@926
|
420 '') # not installed
|
al@926
|
421 t='---' ;;
|
al@926
|
422 *) # installed
|
al@926
|
423 t='<--' ;;
|
al@926
|
424 esac
|
al@926
|
425
|
al@926
|
426 if [ "$2" == 'full-list' ] || [ "$t" == '<--' ]; then
|
al@926
|
427 echo "$i"
|
al@926
|
428
|
al@926
|
429 if [ "$3" != 'yad' ]; then
|
al@926
|
430 echo "$(echo $t | sed "s|---|$(_n 'Install')|g")"
|
al@926
|
431 fi
|
al@926
|
432 fi
|
al@926
|
433 done
|
al@926
|
434
|
al@926
|
435 if [ "$2" == 'only-installed' ] && [ "$3" != 'yad' ]; then
|
al@926
|
436 echo 'show_ALL' "+$(_n 'Install')"
|
psychomaniak@912
|
437 fi
|
psychomaniak@912
|
438 }
|
psychomaniak@912
|
439
|
al@926
|
440
|
psychomaniak@912
|
441 # Screen configuration dialog.
|
al@926
|
442
|
al@813
|
443 config_dialog() {
|
al@926
|
444 . /etc/rcS.conf
|
al@926
|
445 case $LOGIN_MANAGER in
|
al@926
|
446 slim) LM="$(_ 'ON')" ;;
|
al@926
|
447 *) LM="$(_ 'OFF')" ;;
|
al@926
|
448 esac
|
psychomaniak@909
|
449
|
pankso@66
|
450 exec 3>&1
|
al@926
|
451
|
al@813
|
452 value=$($DIALOG \
|
pankso@535
|
453 --clear --colors \
|
pankso@840
|
454 --title "{ $(_n 'SliTaz Xorg config') }" \
|
pankso@840
|
455 --menu "" 16 72 10 \
|
pankso@840
|
456 "xorg" "$(_n 'Install or reconfigure Xorg')" \
|
pankso@840
|
457 "xorg-light" "$(_n 'Install Xorg server (light version)')" \
|
al@926
|
458 "onboot" "$(_n 'AutoStart Xorg by SLiM on boot'): \Z5$LM\Zn" \
|
psychomaniak@909
|
459 "slim" "$(_n '(Re)Start Simple Login Manager now')" \
|
al@926
|
460 "wm_apps" "$(_n 'Install Window Manager and applications')" \
|
pankso@840
|
461 "quit" "$(_n 'Quit Tazx utility')" \
|
al@813
|
462 2>&1 1>&3)
|
psychomaniak@912
|
463 dialog_end
|
al@926
|
464
|
pankso@840
|
465 case "$value" in
|
psychomaniak@912
|
466 xorg)
|
pankso@339
|
467 install_xorg ;;
|
al@926
|
468
|
pankso@840
|
469 xorg-light)
|
psychomaniak@912
|
470 inst_pkg xorg-server-light
|
psychomaniak@912
|
471 inst_pkg xorg-xf86-video-fbdev
|
pankso@840
|
472 xorg_conf_d ;;
|
al@926
|
473
|
psychomaniak@909
|
474 onboot)
|
al@926
|
475 inst_pkg slim
|
al@926
|
476 inst_pkg dbus
|
al@926
|
477
|
al@926
|
478 if [ $LM == "$(_ 'OFF')" ]; then
|
al@926
|
479 LM='slim'
|
al@926
|
480 else
|
al@926
|
481 LM=''
|
psychomaniak@909
|
482 fi
|
al@926
|
483 sed -i "/LOGIN_MANAGER/ s|=.*$|=$LM|" /etc/rcS.conf
|
al@926
|
484
|
al@926
|
485 [ -z "$LM" ] && LM='disabled'
|
al@926
|
486 _n "Start X on boot:"; boldify " $LM" ;;
|
al@926
|
487
|
psychomaniak@909
|
488 slim)
|
al@926
|
489 inst_pkg slim
|
al@926
|
490 inst_pkg dbus
|
al@926
|
491 if [ -z $XAUTHORITY ]; then
|
al@926
|
492 stopd slim; sleep 2; startd slim
|
al@926
|
493 fi ;;
|
al@926
|
494
|
psychomaniak@912
|
495 wm_apps)
|
al@926
|
496 apps_dialog ;;
|
al@926
|
497
|
pankso@840
|
498 *)
|
pankso@840
|
499 exit 0 ;;
|
pankso@66
|
500 esac
|
pankso@66
|
501 }
|
pankso@4
|
502
|
al@926
|
503
|
pankso@870
|
504 # ~/.config/slitaz/applications.conf: Missing = failed to login
|
pankso@876
|
505 # Make users applications.conf in /etc/skel so new added user will get
|
pankso@876
|
506 # a working X session. Note --> flavors can have a custom config in
|
pankso@876
|
507 # /etc/slitaz/applications that we must use.
|
al@926
|
508
|
pankso@870
|
509 slitaz_apps_conf() {
|
pankso@840
|
510 apps_conf=/etc/slitaz/applications.conf
|
al@926
|
511
|
psychomaniak@933
|
512 [ -f $apps_conf ] || inst_pkg slitaz-configs --forced
|
psychomaniak@933
|
513
|
al@943
|
514 if [ "$(id -u)" -eq 0 ]; then
|
al@943
|
515 user_conf="$apps_conf"
|
al@943
|
516 new_user_conf='/etc/skel/.config/slitaz/applications.conf'
|
al@926
|
517 mkdir -p $(dirname $new_user_conf)
|
al@926
|
518 cp -f $apps_conf $new_user_conf
|
pankso@876
|
519 else
|
pankso@876
|
520 # If started by: startx and with boot opts screen=text
|
al@926
|
521 user_conf="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf"
|
pankso@876
|
522 if [ ! -f "$user_conf" ]; then
|
al@926
|
523 mkdir -p $(dirname $user_conf)
|
al@926
|
524 cp $apps_conf $user_conf
|
pankso@876
|
525 fi
|
slaxemulator@538
|
526 fi
|
psychomaniak@918
|
527 [ -f "$HOME/.xinitrc" ] || inst_pkg slitaz-configs-base --forced
|
pankso@66
|
528 }
|
pankso@4
|
529
|
al@926
|
530
|
psychomaniak@933
|
531 # Handle live options: screen= video=
|
al@939
|
532
|
psychomaniak@933
|
533 proc_cmdline()
|
psychomaniak@933
|
534 {
|
psychomaniak@933
|
535 if grep -qs 'screen=' /proc/cmdline ; then
|
psychomaniak@933
|
536 MODE="$(sed 's/.*screen=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
|
psychomaniak@933
|
537 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
|
psychomaniak@933
|
538 -i ${xorg_config}/70-Screen.conf
|
psychomaniak@933
|
539 elif grep -qs 'video=' /proc/cmdline ; then
|
psychomaniak@933
|
540 MODE="$(sed 's/.*video=\([0-9]*x[0-9]*\).*/\1/' < /proc/cmdline)"
|
psychomaniak@933
|
541 DEPTH=$(sed 's/.*video=.*-\([0-9]*\).*/\1/' < /proc/cmdline)
|
psychomaniak@933
|
542 sed "s/.*EndSubSection.*/\\t\\tModes\\t\"$MODE\"\\n&/" \
|
psychomaniak@933
|
543 -i ${xorg_config}/70-Screen.conf
|
psychomaniak@933
|
544 set_depth $DEPTH
|
psychomaniak@933
|
545 fi
|
psychomaniak@933
|
546 }
|
psychomaniak@933
|
547
|
al@939
|
548
|
psychomaniak@933
|
549 set_depth()
|
psychomaniak@933
|
550 {
|
psychomaniak@933
|
551 case "$1" in
|
psychomaniak@935
|
552 8|15|16|24|32) colors=$1 ;;
|
psychomaniak@933
|
553 *)
|
psychomaniak@933
|
554 exec 3>&1
|
psychomaniak@933
|
555 colors=$($DIALOG --menu " " 12 12 12 \
|
psychomaniak@935
|
556 32 truecolor 24 truecolor 16 hicolor 15 hicolor 8 256colors 2>&1 1>&3)
|
psychomaniak@933
|
557 dialog_end ;;
|
psychomaniak@933
|
558 esac
|
psychomaniak@933
|
559 sed 's|Monitor.*"$|&\n\tDefaultDepth '$colors'|' -i ${xorg_config}/70-Screen.conf
|
psychomaniak@933
|
560 }
|
psychomaniak@933
|
561
|
psychomaniak@933
|
562
|
psychomaniak@933
|
563
|
pankso@840
|
564 # Commands
|
pankso@66
|
565
|
pankso@351
|
566 case "$1" in
|
pankso@351
|
567 install-xorg)
|
pankso@840
|
568 check_root
|
pankso@351
|
569 install_xorg
|
pankso@870
|
570 slitaz_apps_conf ;;
|
al@926
|
571
|
pankso@415
|
572 config-xorg)
|
pankso@840
|
573 check_root
|
pankso@870
|
574 slitaz_apps_conf
|
pankso@840
|
575 xorg_conf_d
|
psychomaniak@933
|
576 proc_cmdline ;;
|
al@926
|
577
|
pankso@870
|
578 init)
|
paul@885
|
579 # We don't need much config files with last Xorg version, So just
|
paul@885
|
580 # get files for starting an X session and config the keyboard.
|
pankso@870
|
581 check_root
|
psychomaniak@933
|
582 slitaz_apps_conf
|
al@926
|
583 keyboard_conf
|
pankso@871
|
584 gen_xorg_conf_file ;;
|
al@926
|
585
|
pankso@879
|
586 keyboard)
|
pankso@870
|
587 keyboard_conf ;;
|
al@926
|
588
|
psychomaniak@912
|
589 get-applist)
|
psychomaniak@912
|
590 slitaz_apps_conf
|
psychomaniak@912
|
591 gen_applist $2 $3 $4 ;;
|
al@926
|
592
|
psychomaniak@918
|
593 auto)
|
al@925
|
594 autoselect_driver ;;
|
al@926
|
595
|
psychomaniak@918
|
596 bpp)
|
psychomaniak@918
|
597 check_root
|
psychomaniak@918
|
598 xorg_conf_d
|
psychomaniak@935
|
599 proc_cmdline
|
psychomaniak@933
|
600 set_depth $2 ;;
|
al@926
|
601
|
al@926
|
602 xkb)
|
al@926
|
603 xkb ;;
|
al@926
|
604
|
psychomaniak@935
|
605
|
psychomaniak@933
|
606 *help|-h|-?)
|
al@926
|
607 emsg "
|
paul@929
|
608 <b>tazx</b> - $(_ 'Configuration tool for SliTaz GNU/Linux')
|
al@926
|
609
|
al@926
|
610 <c 33>$(_ 'Usage:')</c> <b>tazx</b> <c 34>$(_ 'command')</c> $(_ 'parameter')
|
al@926
|
611
|
al@926
|
612 <c 34>$(_ 'Commands:')</c>
|
al@926
|
613 install-xorg $(_ 'Install Xorg and selected Xorg driver')
|
al@926
|
614 config-xorg $(_ 'Configure Xorg, generate configuration files')
|
al@926
|
615 bpp $(_ 'Set monitor default depth (valid parameters: 8, 15, 16 or 24)')
|
al@926
|
616 auto $(_ 'Auto-select and install Xorg driver')
|
al@926
|
617 init $(_ 'Get files for starting an X session and config the keyboard')
|
al@926
|
618 keyboard $(_ 'Generate or regenerate Xorg keyboard config')
|
al@926
|
619 "
|
al@926
|
620 ;;
|
al@926
|
621
|
pankso@351
|
622 *)
|
pankso@615
|
623 # User can get a new .xinitrc with tazx from cmdline.
|
al@926
|
624 case $(id -u) in
|
al@926
|
625 0)
|
al@926
|
626 config_dialog ;;
|
al@926
|
627 *)
|
al@926
|
628 msg="\Z1 $(_n 'Run tazx as root if you need to configure xorg') \Zn"
|
al@926
|
629 apps_dialog ;;
|
al@926
|
630 esac
|
psychomaniak@912
|
631 # gen_xsession
|
psychomaniak@912
|
632 ;;
|
pankso@351
|
633 esac
|
pankso@4
|
634
|
pankso@4
|
635 exit 0
|