tazpanel view settings.cgi @ rev 489

settings.cgi: restart_lxpanel fix - respect LXPanel profile, restart LXPanel only if current TazPanel user started it.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue May 12 15:05:51 2015 +0300 (2015-05-12)
parents 58e332bcef0b
children 470ab4241de5
line source
1 #!/bin/sh
2 #
3 # System settings CGI interface: user, locale, keyboard, date. Since we
4 # don't have multiple pages here there is only one case used to get command
5 # values and the full content is followed directly.
6 #
7 # Copyright (C) 2011-2015 SliTaz GNU/Linux - BSD License
8 #
11 # Common functions from libtazpanel
13 . lib/libtazpanel
14 get_config
16 TITLE=$(_ 'TazPanel - Settings')
19 # Get system database. LDAP compatible.
21 getdb() {
22 getent $1 2>/dev/null || cat /etc/$1
23 }
25 listdb() {
26 for item in $(getdb $1 | cut -d ":" -f 1); do
27 echo "<option>$item</option>\n"
28 done
29 }
31 restart_lxpanel() {
32 # `lxpanelctl restart` exists, but it breaks often leaving us without any panel
33 lxpanel_pid="$(ps -o comm,pid | fgrep lxpanel | awk '{print $2}')"
34 lxpanel_user="$(ps -o comm,user | fgrep lxpanel | awk '{print $2}')"
35 lxpanel_comm="$(ps -o pid,args | grep -e "^\ *$lxpanel_pid " | awk '{$1="";print}')"
37 if [ "$USER" == "$lxpanel_user" ]; then
38 kill $lxpanel_pid
39 DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' $lxpanel_comm 1>/tmp/debug1 2>/tmp/debug2 &
40 fi
41 }
45 #
46 # Commands executed before page loading.
47 #
49 case " $(GET) " in
50 *\ do\ *)
51 users=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="user") print $2}')
52 groups=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="group")print $2}')
54 case $(GET do) in
56 # Groups page
57 delgroups)
58 for i in $groups; do delgroup $i; done ;;
59 addgroup)
60 addgroup $groups ;;
61 addmember)
62 addgroup $(GET member) $groups ;;
63 delmember)
64 delgroup $(GET member) $groups ;;
66 # Users page
67 delusers)
68 for i in $users; do deluser $i; done ;;
69 lockusers)
70 for i in $users; do passwd -l $i | log; done ;;
71 unlockusers)
72 for i in $users; do passwd -u $i | log; done ;;
73 chpasswd)
74 echo "$users:$(GET password)" | chpasswd -m | log ;;
75 adduser)
76 if [ -n "$users" ]; then
77 name=$(GET name); name=${name:-SliTaz User}
78 adduser -D -s /bin/sh -g "$name" -G users -h /home/$users $users
79 echo "$user:$(GET passwd)" | chpasswd -m | log
80 for i in audio cdrom floppy video tty; do addgroup $users $i; done
81 fi ;;
83 # System time
84 settz)
85 GET tz > /etc/TZ;;
86 date) # normalize to two digits
87 date $(printf '%02d%02d%02d%02d%d.%02d' "$(GET month)" "$(GET day)" "$(GET hour)" "$(GET min)" "$(GET year)" "$(GET sec)") >/dev/null;;
88 rdate)
89 rdate -s tick.greyware.com ;;
90 hwclock)
91 hwclock -w -u ;;
93 esac
94 ;;
97 *\ gen_locale\ *)
98 new_locale=$(GET gen_locale) ;;
99 *\ gen_keymap\ *)
100 new_keymap=$(GET gen_keymap) ;;
101 *\ apply_xorg_kbd\ *)
102 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
103 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
104 *\ style*)
105 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
106 . $CONFIG ;;
109 *\ tweak\ *)
110 HOME="$(awk -F: -vu=$REMOTE_USER '$1==u{print $6}' /etc/passwd)"
111 [ -z "$HOME" ] && exit 0
113 dd="$HOME/.local/share/desktop-directories"; sd="$dd/SliTazMenu.directory"
115 case $REMOTE_USER in
116 root) color=31; ind='#';;
117 *) color=32; ind='$';;
118 esac
120 case $(GET tweak) in
121 monochrome)
122 # PS1='\u@\h:\w\$ '
123 sed -i "s|^PS1=.*|PS1='\\\\u@\\\\h:\\\\w\\\\$ind '|" $HOME/.profile;;
124 colored)
125 # PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[0;33m\]\w\[\e[0m\]\$ '
126 sed -i "s|^PS1=.*|PS1='\\\\\\[\\\\e\[0;${color}m\\\\\\]\\\\u@\\\\h\\\\\\[\\\\e\\[0m\\\\\\]:\\\\\\[\\\\e\\[0;33m\\\\\\]\\\\w\\\\\\[\\\\e\\[0m\\\\\\]\\\\$ind '|" $HOME/.profile;;
127 slitaz-*)
128 lxpanel="$HOME/.config/lxpanel"
129 if [ ! -e "$lxpanel" ]; then
130 mkdir -p "$lxpanel"; cp /etc/lxpanel/default /etc/lxpanel/slitaz $lxpanel
131 fi
133 for panel in $(find $lxpanel -type f -iname panel); do
134 awk -vicon="/usr/share/pixmaps/$(GET tweak).png" '
135 BEGIN{ found = "0"; }
136 {
137 if ($1 == "Plugin") { found = "1"; }
139 if (found == "1" && $1 == "type") {
140 if ($3 == "menu") found = "2"; else found = "0";
141 }
143 if (found == "2" && $1 == "Plugin") { found = "0"; }
145 if (found == "2" && index($1, "image")) {
146 printf " image=%s\n", icon;
147 found = 0;
148 } else {
149 print;
150 }
151 }
152 ' $panel > $panel.new
153 mv -f $panel.new $panel
154 done
156 restart_lxpanel;;
157 menu-notext)
158 mkdir -p $dd
159 echo -e '[Desktop Entry]\nType=Directory\nName=' > $sd
160 restart_lxpanel;;
161 menu-text)
162 [ -f "$sd" ] && rm "$sd"
163 restart_lxpanel;;
164 esac
165 exit 0
166 ;;
169 *\ menuIcon\ *)
170 icon="/usr/share/pixmaps/$(GET menuIcon).png"
171 [ ! -r $icon ] && exit 0
172 header "Content-Type: image/png"; cat $icon; exit 0
173 ;;
174 esac
180 #
181 # Default xHTML content
182 #
184 header
185 xhtml_header
187 case " $(GET) " in
188 *\ group*)
189 #
190 # Groups management
191 #
192 check_root_tazpanel
194 cat <<EOT
195 <h2 id="groups">$(_ 'Manage groups')</h2>
198 <section>
199 <form class="wide">
200 <header>
201 <input type="hidden" name="groups"/>
202 <!-- $(_ 'Selection:') -->
203 <button name="do" value="delgroups" data-icon="delete">$(_ 'Delete group')</button>
204 </header>
206 <div class="scroll">
207 <table class="wide zebra scroll">
208 <thead>
209 <tr class="thead">
210 <td>$(_ 'Group')</td>
211 <td>$(_ 'Group ID')</td>
212 <td>$(_ 'Members')</td>
213 </tr>
214 </thead>
215 <tbody>
216 EOT
217 for group in $(getdb group | cut -d ":" -f 1); do
218 IFS=':'
219 set -- $(getdb group | grep "^$group:")
220 unset IFS
221 gid=$3
222 members=$4
223 cat <<EOT
224 <tr>
225 <td><input type="checkbox" name="group" value="$group" id="$group"/>
226 <label for="$group" data-icon="group">$group</label></td>
227 <td>$gid</td>
228 <td>${members//,/, }</td>
229 </tr>
230 EOT
231 done
232 cat <<EOT
233 </tbody>
234 </table>
235 </div>
236 </form>
237 </section>
240 <section>
241 <header>$(_ 'Add a new group')</header>
242 <form>
243 <input type="hidden" name="groups"/>
244 <table>
245 <tr><td>$(_ 'Group name:')</td>
246 <td><input type="text" name="group"/></td>
247 </tr>
248 <tr><td colspan="2">
249 <button type="submit" name="do" value="addgroup" data-icon="add">$(_ 'Create group')</button>
250 </td></tr>
251 </table>
252 </form>
253 </section>
256 <section>
257 <header>$(_ 'Manage group membership')</header>
258 <form>
259 <input type="hidden" name="groups"/>
260 <table>
261 <tr>
262 <td>$(_ 'Group name:')</td>
263 <td><select name="group">$(listdb group)</select></td>
264 <td>$(_ 'User name:')</td>
265 <td><select name="member">$(listdb passwd)</select></td>
266 </tr>
267 <tr>
268 <td colspan="2">
269 <button name="do" value="addmember" data-icon="add">$(_ 'Add user')</button>
270 </td>
271 <td colspan="2">
272 <button name="do" value="delmember" data-icon="delete">$(_ 'Remove user')</button>
273 </td>
274 </tr>
275 </table>
276 </form>
277 </section>
279 EOT
280 ;;
283 *\ user*)
284 #
285 # Users management
286 #
287 check_root_tazpanel
289 cat <<EOT
290 <h2 id="users">$(_ 'Manage users')</h2>
292 <section>
293 <form class="wide">
294 <header>
295 <!--$(_ 'Selection:')-->
296 <button name="do" value="delusers" data-icon="delete">$(_ 'Delete user')</button>
297 <button name="do" value="lockusers" data-icon="lock" >$(_ 'Lock user' )</button>
298 <button name="do" value="unlockusers" data-icon="unlock">$(_ 'Unlock user')</button>
299 </header>
301 <table class="wide zebra center">
302 <thead>
303 <tr>
304 <td>$(_ 'Login')</td>
305 <td>$(_ 'User ID')</td>
306 <td>$(_ 'Name')</td>
307 <td>$(_ 'Home')</td>
308 <td>$(_ 'Shell')</td>
309 </tr>
310 </thead>
311 </tbody>
312 EOT
313 for login in $(getdb passwd | cut -d ":" -f 1); do
314 if [ -d /home/$login ]; then
315 colorlogin=$login
316 grep -qs "^$login:!" /etc/shadow &&
317 colorlogin="<span style='color: red;'>$login</span>"
318 IFS=':'
319 set -- $(getdb passwd | grep "^$login:")
320 unset IFS
321 cat <<EOT
322 <tr>
323 <td style="white-space: nowrap">
324 <input type="checkbox" name="user" value="$login" id="$login"/>
325 <label for="$login" data-icon="user">$colorlogin</label></td>
326 <td>$3:$4</td>
327 <td>$(echo $5 | sed s/,.*//)</td>
328 <td>$6</td>
329 <td>$7</td>
330 </tr>
331 EOT
332 fi
333 done
334 cat <<EOT
335 </tbody>
336 </table>
337 EOT
338 cat <<EOT
339 <footer>
340 <div>
341 $(_ 'Password:')
342 <input type="password" name="password"/>
343 <button type="submit" name="do" value="chpasswd" data-icon="ok">$(_ 'Change password')</button>
344 </div>
345 </footer>
346 </form>
347 </section>
350 <section>
351 <header>$(_ 'Add a new user')</header>
353 <form>
354 <input type="hidden" name="users"/>
355 <table class="summary">
356 <tr><td>$(_ 'User login:')</td>
357 <td><input type="text" name="user" size="30" pattern="[a-z]*"/></td></tr>
358 <tr><td>$(_ 'User name:')</td>
359 <td><input type="text" name="name" size="30"/></td></tr>
360 <tr><td>$(_ 'User password:')</td>
361 <td><input type="password" name="passwd" size="30"/></td></tr>
362 </table>
364 <footer>
365 <button type="submit" name="do" value="adduser" data-icon="add">$(_ 'Create user')</button>
366 </footer>
367 </form>
368 </section>
369 EOT
371 # `who` output is empty in the Live mode
372 if [ -n "$(who)" ]; then
373 cat <<EOT
374 <section>
375 <header>$(_ 'Current user sessions')</header>
376 <pre>$(who)</pre>
377 </section>
378 EOT
379 fi
381 # `last` output is empty (just header) in the Live mode
382 if [ "$(last | wc -l)" != "1" ]; then
383 cat <<EOT
384 <section>
385 <header>$(_ 'Last user sessions')</header>
386 <div class="scroll"><pre>$(last)</pre></div>
387 </section>
388 EOT
389 fi
390 ;;
393 *\ locale*)
394 #
395 # Choose locale
396 #
397 check_root_tazpanel
399 LOADING_MSG="$(_ 'Please wait...')"; loading_msg
401 cur_loc=$(locale | grep LANG | cut -d= -f2)
402 cat <<EOT
403 <h2 id="locale">$(_ 'Choose locale')</h2>
405 <section>
406 <header>$(_ 'Current locale settings:')</header>
407 <div>
408 <pre>$(locale)</pre>
409 </div>
410 </section>
412 <section>
413 <header>$(_ 'Locales that are currently installed on the machine:')</header>
414 <div>
415 <pre>$(locale -a)</pre>
416 </div>
417 </section>
418 EOT
420 is_installed "glibc-locale"
421 [ $? = 1 ] &&
422 msg tip $(_ \
423 "Can't see your language?<br/>You can \
424 <a href='pkgs.cgi?do=Install&amp;glibc-locale'>install glibc-locale</a> \
425 to see a larger list of available locales.")
428 cat <<EOT
429 <section>
430 <header>$(_ 'Available locales:')</header>
431 <form class="wide">
432 <table class="wide zebra">
433 <thead>
434 <tr><td>$(_ 'Code')</td>
435 <td>$(_ 'Language')</td>
436 <td>$(_ 'Territory')</td>
437 <td>$(_ 'Description')</td>
438 </tr>
439 </thead>
440 <tbody>
441 EOT
442 for locale in $(find /usr/share/i18n/locales -type f | sort); do
443 locale_name=$(basename $locale)
444 locale_title=$(grep -m 1 -e '^ *title' $locale | cut -d'"' -f2)
445 if [ -n "$locale_title" ]; then
446 sel=''; [ "$locale_name" == "$cur_loc" ] && sel='checked="checked"'
447 cat <<EOT
448 <tr>
449 <td>
450 <input type="radio" name="gen_locale" value="$locale_name" $sel id="$locale_name"/>
451 <label for="$locale_name">$locale_name</label>
452 </td>
453 <td>$(gettext -d iso_639 "$(grep -m 1 -e '^ *language' $locale | cut -d '"' -f2)")</td>
454 <td>$(gettext -d iso_3166 "$(grep -m 1 -e '^ *territory' $locale | cut -d '"' -f2)")</td>
455 <td>$locale_title</td>
456 </tr>
457 EOT
458 fi
459 done
460 cat <<EOT
461 </tbody>
462 </table>
464 <footer>
465 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
466 </footer>
467 </form>
468 </section>
469 EOT
470 ;;
473 *\ tweaks\ *)
474 #
475 # Small tweaks for user
476 #
478 user="$REMOTE_USER"; host="$(hostname)"
479 HOME="$(awk -F: -vu=$user '$1==u{print $6}' /etc/passwd)"
480 font="${TERM_FONT:-monospace}"; palette=$(echo $TERM_PALETTE | tr A-Z a-z)
481 case $user in
482 root) color=31; ind="#";;
483 *) color=32; ind="$";;
484 esac
486 prompt_bw="$user@$host:/usr/bin$ind"
487 prompt_c="<span class=\"color$color\">$user@$host</span>:<span class=\"color33\">/usr/bin</span>$ind"
488 cursor="<span class=\"color47\">_</span>"
489 cat <<EOT
490 <script type="text/javascript">
491 function tweak(tweakName) {
492 // Send request to the server
493 var hiddenImg = document.createElement('IMG');
494 hiddenImg.src = "settings.cgi?tweak=" + tweakName;
495 }
496 </script>
498 <section>
499 <header>$(_ 'Small quick tweaks for user %s' "$user")</header>
501 <fieldset><legend>$(_ 'Terminal prompt')</legend>
502 <table class="wide">
503 <tr>
504 <td>
505 <label>
506 <input type="radio" name="termPrompt" onclick="tweak('monochrome')"/>
507 $(_ 'Monochrome')
508 </label>
509 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
510 $prompt_bw uname -r<br/>$(uname -r)<br/>$prompt_bw date<br/>$(date)<br/>$prompt_bw $cursor
511 </pre>
512 </td>
513 <td>
514 <label>
515 <input type="radio" name="termPrompt" onclick="tweak('colored')"/>
516 $(_ 'Colored')
517 </label>
518 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
519 $prompt_c uname -r<br/>$(uname -r)<br/>$prompt_c date<br/>$(date)<br/>$prompt_c $cursor
520 </pre>
521 </td>
522 </tr>
523 </table>
525 <p>$(_ 'Manual edit: %s' "<a data-icon=\"conf\" href="index.cgi?file=$HOME/.profile">~/.profile</a>")<br/>
526 $(_ 'To take effect: log out and log in to system or execute command in the terminal:')</p>
528 <pre>. ~/.profile</pre>
529 </fieldset>
531 <br/>
533 <fieldset>
534 <legend>$(_ 'Menu button appearance')</legend>
535 <table class="wide">
536 <tr>
537 <td style="vertical-align: top">
538 <fieldset>
539 <legend>$(_ 'Icon:')</legend>
540 <label>
541 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu-empty')"/>
542 $(_ 'Do not show')
543 </label><br/>
544 <label>
545 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button-red')"/>
546 <img src="?menuIcon=slitaz-button-red"/>
547 </label><br/>
548 <label>
549 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu')"/>
550 <img src="?menuIcon=slitaz-menu"/>
551 </label><br/>
552 <label>
553 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button')"/>
554 <img src="?menuIcon=slitaz-button"/>
555 </label>
556 </fieldset>
557 </td>
558 <td style="vertical-align: top">
559 <fieldset>
560 <legend>$(_ 'Text:')</legend>
561 <label>
562 <input type="radio" name="menuText" onclick="tweak('menu-notext')"/>
563 $(_ 'Do not show')
564 </label><br/>
565 <label>
566 <input type="radio" name="menuText" onclick="tweak('menu-text')"/>
567 $(_ 'Show text')
568 </label>
569 </fieldset>
570 </td>
571 </tr>
572 </table>
573 <p>$(_ 'Manual edit: %s' \
574 "<a data-icon=\"conf\" href=\"index.cgi?file=$HOME/.local/share/desktop-directories/SliTazMenu.directory\">~/.local/share/desktop-directories/SliTazMenu.directory</a>
575 $(
576 find $HOME/.config/lxpanel -type f -name panel | awk -vh="$HOME" \
577 '{ printf "<a data-icon=\"conf\" href=\"index.cgi?file=%s\">%s</a> ", $1, gensub(h, "~", "")}'
578 )")</p>
579 </fieldset>
580 </section>
581 EOT
582 ;;
585 *)
586 #
587 # Default system settings page
588 #
589 check_root_tazpanel
591 cat <<EOT
592 <h2>$(_ 'System settings')</h2>
594 <p>$(_ 'Manage system time, users or language settings')<p>
596 <form><!--
597 --><button name="users" data-icon="user" >$(_ 'Manage users' )</button><!--
598 --><button name="groups" data-icon="group">$(_ 'Manage groups')</button>
599 </form>
601 <section>
602 <header>$(_ 'System time')</header>
603 <div>
604 <form class="wide">
605 <fieldset><legend>$(_ 'Time zone:')</legend>
606 <select name="tz">
607 $(cd /usr/share/zoneinfo; find * -type f ! -name '*.tab' | sort | \
608 awk -vtz="$(cat /etc/TZ)" \
609 '{printf("<option%s>%s</option>", ($1 == tz)?" selected":"", $1)}')
610 </select>
611 <button name="do" value="settz" data-icon="ok">$(_ 'Change')</button>
612 </fieldset>
614 <fieldset><legend>$(_ 'System time:')</legend>
615 $(date | sed 's|[0-9][0-9]:[0-9:]*|<span id="time">&</span>|')
616 <button name="do" value="rdate" data-icon="sync">$(_ 'Sync online')</button>
617 </fieldset>
619 <fieldset id="hwclock1"><legend>$(_ 'Hardware clock:')</legend>
620 $(hwclock -ur | sed 's|0.000000 seconds||')
621 <button name="do" value="hwclock" id="hwclock" data-icon="clock">$(_ 'Set hardware clock')</button>
622 </fieldset>
624 <fieldset><legend>$(_ 'Set date')</legend>
625 <input type="number" name="day" value="$(date +%d)" min="1" max="31" size="4" required/>
626 <select name="month" value="$(date +%m)">
627 $(for i in $(seq 12); do
628 sel=''; [ "$i" == "$(date +%-m)" ] && sel=' selected'
629 printf "<option value=\"%s\"$sel>%s</option>" $(date -d $i.01-01:01 '+%m %B')
630 done)
631 </select>
632 <input type="number" name="year" value="$(date +%Y)" min="2015" max="2030" size="6" required/>
633 - <input type="number" name="hour" value="$(date +%H)" min="0" max="23" size="4" required/><!--
634 -->:<input type="number" name="min" value="$(date +%M)" min="0" max="59" size="4" required/><!--
635 -->:<input type="number" name="sec" value="00" min="0" max="59" size="4" required/>
636 <button name="do" value="date" data-icon="ok">$(_ 'Set date')</button>
637 </fieldset>
638 </form>
639 </div>
641 <script type="text/javascript">
642 // Live time on page
643 Date.prototype.timeNow = function() {
644 return ((this.getHours() < 10)?"0":"") + this.getHours() + ":" + ((this.getMinutes() < 10)?"0":"") + this.getMinutes() + ":" + ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
645 }
646 setInterval(function(){document.getElementById('time').innerText = new Date().timeNow()}, 1000);
648 //document.getElementById('hwclock').disabled = 'disabled';
649 </script>
650 </section>
651 EOT
654 #
655 # Locale settings
656 #
657 cat <<EOT
658 <section>
659 <header id="locale">$(_ 'System language')</header>
660 <div>
661 <form>
662 EOT
663 # Check if a new locale was requested
664 if [ -n "$new_locale" ]; then
665 rm -rf /usr/lib/locale/$new_locale
666 localedef -i $new_locale -c -f UTF-8 \
667 /usr/lib/locale/$new_locale
668 # System configuration
669 echo "LANG=$new_locale" > /etc/locale.conf
670 echo "LC_ALL=$new_locale" >> /etc/locale.conf
671 msg warn "$(_ \
672 'You must logout and login again to your current session to use %s locale.' $new_locale)"
673 else
674 cat <<EOT
675 $(_ 'Current system locale:')
676 <strong>$(locale | grep LANG | cut -d= -f2)</strong>
677 <button name="locale" data-icon="locale">$(_ 'Change')</button>
678 EOT
679 fi
680 cat <<EOT
681 </div>
682 </form>
683 </section>
686 <section>
687 <header id="keymap">$(_ 'Keyboard layout')</header>
688 <div>
689 EOT
690 # Check if a new keymap was requested
691 if [ -n "$new_keymap" ]; then
692 echo "$new_keymap" > /etc/keymap.conf
693 if [ -x /bin/loadkeys ]; then
694 loadkeys $new_keymap
695 else
696 loadkmap < /usr/share/kmap/$new_keymap.kmap
697 fi
698 fi
700 keymap=$(cat /etc/keymap.conf)
701 _ 'Current console keymap: %s' $keymap
702 if [ -n "$keymap" ]; then
703 case "$keymap" in
704 fr_CH*)
705 keymap="ch" ;;
706 ru)
707 keymap="us,ru" ;;
708 slovene)
709 keymap=si ;;
710 *)
711 keymap=${keymap%-lat*}
712 keymap=${keymap%-abnt2} ;;
713 esac
714 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
715 cat <<EOT
716 <form id="settings"></form>
717 <form id="index" action="index.cgi"></form>
718 <br/>
719 $(_ 'Suggested keymap for Xorg:') $keymap
720 <button form="settings" name="apply_xorg_kbd" value="$keymap" data-icon="ok">$(_ 'Activate')</button>
721 <button form="index" name="file" value="$keyboard_config" data-icon="edit">$(_ 'Edit')</button>
722 <br/>
723 EOT
724 fi
725 cat <<EOT
726 <form>
727 $(_ 'Available keymaps:')
728 <select name="gen_keymap">
729 $(list_keymaps)
730 </select>
731 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
732 </form>
733 </div>
734 </section>
737 <section>
738 <header>$(_ 'Panel configuration')</header>
739 <div>
740 <form class="wide">
741 <fieldset><legend>$(_ 'Style:')</legend>
742 <select name="style">$(list_styles)</select>
743 <button data-icon="ok">$(_ 'Activate')</button>
744 </fieldset>
745 </form>
747 <fieldset><legend>$(_ 'Configuration files:')</legend>
748 <button form="index" name="file" value="$CONFIG" data-icon="edit">$(_ 'Panel')</button>
749 <button form="index" name="file" value="$HTTPD_CONF" data-icon="edit">$(_ 'Server')</button>
750 </fieldset>
752 <p>$(_ 'TazPanel provides a debugging mode and page:')
753 <a href="index.cgi?debug">debug</a>
754 </p>
755 </div>
756 </section>
757 EOT
758 ;;
759 esac
761 xhtml_footer
762 exit 0