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