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