# HG changeset patch # User Aleksej Bobylev # Date 1429245302 -10800 # Node ID 5d80f6fdbdb7253df5f6a6df94811339a388572a # Parent 7bda33bbdf4861313f63b0a35d261769281aee3c tazbox: fix subox icon when ~/.local/share/applications is absent; fix working with freegeoip; write full list of icons used; all other files: 2015 and insert blank lines. diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 applications/burn-box.desktop --- a/applications/burn-box.desktop Sat Apr 11 16:46:26 2015 +0300 +++ b/applications/burn-box.desktop Fri Apr 17 07:35:02 2015 +0300 @@ -8,5 +8,5 @@ Comment=Burn ISO images or audio tracks to CD or DVD Comment[ru]=Запись образа ISO или аудио-дорожек на CD или DVD Exec=burn-box -Icon=media-optical-burn +Icon=burn-box Categories=GTK;Utility;AudioVideo;DiscBurning; diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 applications/passwd.desktop --- a/applications/passwd.desktop Sat Apr 11 16:46:26 2015 +0300 +++ b/applications/passwd.desktop Fri Apr 17 07:35:02 2015 +0300 @@ -6,5 +6,5 @@ Name[pt_BR]=Mudar Senha de Usuário Name[ru]=Пароль учётной записи Exec=terminal -h -T Passwd -geometry 60x10 -e passwd -Icon=password +Icon=user_auth Categories=ConsoleOnly;Settings;DesktopSettings; diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 applications/slitaz-logout.desktop --- a/applications/slitaz-logout.desktop Sat Apr 11 16:46:26 2015 +0300 +++ b/applications/slitaz-logout.desktop Fri Apr 17 07:35:02 2015 +0300 @@ -17,5 +17,5 @@ Name[zh_CN]=注销 Name[zh_TW]=登出 Exec=tazbox logout -Icon=slitaz-logout +Icon=system-shutdown-panel-restart StartupNotify=false diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 applications/tazbox-manage_i18n.desktop --- a/applications/tazbox-manage_i18n.desktop Sat Apr 11 16:46:26 2015 +0300 +++ b/applications/tazbox-manage_i18n.desktop Fri Apr 17 07:35:02 2015 +0300 @@ -3,5 +3,5 @@ Name=Manage locale packages Name[ru]=Управление пакетами локалей Exec=tazbox su "tazbox manage_i18n" -Icon=config-language +Icon=preferences-desktop-locale Categories=GTK;Settings;DesktopSettings; diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 applications/tazbox-tz.desktop --- a/applications/tazbox-tz.desktop Sat Apr 11 16:46:26 2015 +0300 +++ b/applications/tazbox-tz.desktop Fri Apr 17 07:35:02 2015 +0300 @@ -6,5 +6,5 @@ Name[pt_BR]=Configuração de Zona Horária Name[ru]=Часовой пояс Exec=tazbox su "tazbox tz" -Icon=time +Icon=preferences-system-time Categories=GTK;Settings;DesktopSettings; diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 boxes/burn-box --- a/boxes/burn-box Sat Apr 11 16:46:26 2015 +0300 +++ b/boxes/burn-box Fri Apr 17 07:35:02 2015 +0300 @@ -4,30 +4,38 @@ # window uncluttered and use a wizard to create audio/video/data CD/DVD. # The main box lets users burn an ISO and audio files from a single directory. # -# Copyright (C) 2012-2014 SliTaz GNU/Linux - BSD License +# Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-boxes' # i18n + # LibTaz parser and store options. Burn-box can be used with an ISO image # or an audio directory in option: burn-box --iso=/path/to/image.iso + [ "$iso" ] || iso=" " [ "$audio" ] || audio="$HOME" + # Internal variables + boxopts="--height=300 --width=620" icon=media-optical-dvd-rw options="-eject -multi" speed=$(fgrep "drive speed" /proc/sys/dev/cdrom/info | cut -f3) tmpdir=$(mktemp -d) + # # Functions # + # Help and usage + usage() { newline; _ 'Burn-box a small front end to cdrkit powered by Yad/GTK.' newline; boldify $(_ 'Usage:') @@ -52,14 +60,18 @@ newline } + # Ouput a command to a Yad/GTK box. Usage: cmd | out --title="Title" --tail + gtkout() { yad --window-icon=$icon $boxopts \ --margins=4 --fontname=monospace \ --text-info "$@" --button="gtk-close:1" } + # Decode audio files with: decode [file] + decode_audio() { _ 'Decoding files from: $audio' for f in "$audio"/*.* @@ -78,7 +90,9 @@ done } + # Burn an ISO image. + burn_iso() { if [ "${iso##*.}" != "iso" ]; then _ 'Not an ISO image: "$iso"'; exit 1 @@ -86,7 +100,9 @@ wodim -v speed=$speed $options "$iso" } + # Burn some audio tracks from a directory. + burn_audio() { decode_audio echo "TODO: check_size" @@ -95,7 +111,9 @@ rm -rf $tmpdir } + # Main GUI box function with pure Yad spec + burn_main() { yad --title="$(_ 'Burn-box')" --window-icon=$icon $boxopts \ --image=$icon --image-on-top \ @@ -111,7 +129,9 @@ --button="gtk-close:1" } + # Main function + burn() { # Store box results main=$(burn_main) @@ -138,6 +158,7 @@ fi } + # # Commands # diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 boxes/scp-box --- a/boxes/scp-box Sat Apr 11 16:46:26 2015 +0300 +++ b/boxes/scp-box Fri Apr 17 07:35:02 2015 +0300 @@ -2,32 +2,40 @@ # # SCP Box - Small front end to the secure file copy utility. # -# Copyright (C) 2008-2014 SliTaz GNU/Linux - BSD License +# Copyright (C) 2008-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-boxes' # i18n [ "$file" ] || file="$HOME" [ "$dir" ] || dir="$HOME" + # Internal variables (we need a space before options). + config=$HOME/.config/scpbox term="terminal -geometry 80x16" scpopts=" -r -P 22" + # Make sure we have config files. + if [ ! -d "$config" ] || [ -f "$config/hosts" ]; then mkdir -p $config touch $config/hosts && chmod 0600 $config/hosts fi + # # Functions # + # Help and usage + usage() { cat << EOT @@ -49,16 +57,20 @@ EOT } + # List last used hosts. + list_hosts() { for h in $(cat $config/hosts); do echo -n "!$h" done } + # Main GUI box function with pure Yad spec + scpbox_main() { - icon=folder-remote + icon='folder-remote' yad --title="$(_n 'SCP Box')" --window-icon=$icon \ --width=400 \ --image=$icon --image-on-top \ @@ -76,7 +88,9 @@ --button="gtk-close:1" } + # Main function + scpbox() { # Store box results main=$(scpbox_main) @@ -129,6 +143,7 @@ esac } + # # Commands # diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 boxes/wifi-box --- a/boxes/wifi-box Sat Apr 11 16:46:26 2015 +0300 +++ b/boxes/wifi-box Fri Apr 17 07:35:02 2015 +0300 @@ -4,10 +4,11 @@ # is most important, this tool provides a quick way to connect or change Wi-Fi # settings while full network configuration is done in TazPanel. # -# Copyright (C) 2012-2014 SliTaz GNU/Linux - GNU GPL v2 +# Copyright (C) 2012-2015 SliTaz GNU/Linux - GNU GPL v2 # # Authors: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-boxes' #i18n @@ -18,7 +19,9 @@ newline } + # Start a Wi-Fi connection + start_wifi() { sed -i \ -e s'/^DHCP=.*/DHCP="yes"/' \ @@ -30,8 +33,10 @@ /etc/init.d/network.sh start } + # Catch ESSIDs and format output for GTK tree. We get the list of # networks by Cell and without spaces. + detect_wifi() { if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then ifconfig $WIFI_INTERFACE up @@ -69,7 +74,9 @@ fi } + # Prompt for password or connect + connect_main() { case $keytype in WPA) label="$(_n 'WPA Password:')" ;; @@ -78,7 +85,7 @@ esac case $keytype in WPA|WEP) - icon=network-wireless + icon='network-wireless' yad --title="$(_n 'Wi-Fi connection')" --window-icon=$icon \ --width=520 --height=140 --on-top --center \ --image=$icon --image-on-top \ @@ -90,6 +97,7 @@ esac } + connect() { main=$(connect_main) ret=$? @@ -109,9 +117,11 @@ start_wifi } + # Main GUI box function with pure Yad spec + wifi_main() { - icon=network-wireless + icon='network-wireless' detect_wifi | yad --title="$(_n 'Wi-Fi network')" --window-icon=$icon \ --width=520 --height=300 --on-top --center \ --image=$icon --image-on-top \ @@ -123,7 +133,9 @@ --button="gtk-preferences:2" --button="gtk-close:1" } + # Main function + wifi() { # Store box results main=$(wifi_main) @@ -143,6 +155,7 @@ fi } + # # Script commands # diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 etc/init.d/firewall --- a/etc/init.d/firewall Sat Apr 11 16:46:26 2015 +0300 +++ b/etc/init.d/firewall Fri Apr 17 07:35:02 2015 +0300 @@ -4,6 +4,7 @@ # Configuration file : /etc/slitaz/firewall.conf # Firewall script : /etc/slitaz/firewall.sh # + . /etc/init.d/rc.functions . /etc/slitaz/firewall.conf @@ -13,6 +14,7 @@ # if [ "$KERNEL_SECURITY" = "yes" ] ; then echo -n "Setting up kernel security rules... " + # ICMP redirects acceptance. for conf in /proc/sys/net/ipv4/conf/*/accept_redirects ; do echo "0" > $conf @@ -20,14 +22,17 @@ for conf in /proc/sys/net/ipv4/conf/*/secure_redirects ; do echo "0" > $conf done + # IP source routing. for conf in /proc/sys/net/ipv4/conf/*/accept_source_route ; do echo "0" > $conf done + # Log impossible addresses. for conf in /proc/sys/net/ipv4/conf/*/log_martians ; do echo "1" > $conf done + # Ip spoofing protection for conf in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > $conf diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 icons.list --- a/icons.list Sat Apr 11 16:46:26 2015 +0300 +++ b/icons.list Fri Apr 17 07:35:02 2015 +0300 @@ -1,23 +1,118 @@ +# +# applications +# + # slitaz-logout.desktop -system-log-out: menu +system-shutdown-panel-restart: panel(22) + # burn-box.desktop -media-optical-burn: menu +burn-box: menu(16) big(48) + # burn-iso.desktop -iso-image-burn: menu +iso-image-burn: context-menu(16) big(48)? + # scp-box.desktop -folder-remote: menu +folder-remote: menu(16) big(48) + +# tazbox-tazapps.desktop +preferences-desktop-default-applications: menu(16) big(48) + +# slitaz-cofig.desktop +slitaz-icon: menu(16) big(48) + # wifi-box.desktop -network-wireless: menu +network-wireless: menu(16) big(48) + # gpl-license.desktop -text-x-readme: menu +text-x-readme: menu(16) big(48) + # passwd.desktop -user_auth: menu +user_auth: menu(16) big(48) + # tazbox-keymap.desktop -preferences-desktop-keyboard: menu +preferences-desktop-keyboard: menu(16) big(48) + +# tazbox-locale.desktop +preferences-desktop-locale: menu(16) big(48) + # tazbox-tz.desktop -preferences-system-time: menu -# tazbox-locale.desktop -preferences-desktop-locale: menu +preferences-system-time: menu(16) big(48) + + +# +# boxes +# # burn-box -media-optical-dvd-rw: window big +media-optical-dvd-rw: title(16) big(48) + +# scp-box +folder-remote: title(16) big(48) +gtk-close: button(16) + +# wifi-box +network-wireless: title(16) big(48) +gtk-preferences(16) +gtk-close(16) + + +# +# jwm +# + +# jwm-menu +applications-accessories.png +applications-internet.png +applications-graphics.png +applications-multimedia.png +applications-games.png +applications-development.png +text-x-generic.png +applications-system.png + + +# +# tazbox +# + +# tazbox +dialog-password: title(16) big(48) +dialog-error: title(16) big(48) +gtk-close: button(16) +dialog-information: title(16) +/usr/share/pixmaps/slitaz-icon.png: title(16) big(48) +system-log-out: button(16) +system-reboot: button(16) +system-shutdown: button(16) +locale: title(16) big(48) +preferences-desktop-locale: title(16) big(48) +gtk-cancel: button(16) +gtk-ok: button(16) +preferences-desktop-keyboard: title(16) big(48) +gtk-go-forward: button(16) +appointment-soon: big(48) +stock_properties: title(16) big(48) +reload: button(16) +system-upgrade: button(16) +tazpkg: title(16) +gtk-new: title(16) big(48) +editclear: button(16) +application-x-shellscript: button(16) +folder: button(16) +empty: button(16) +stock_bookmark: title(16) +folder-downloads: title(16) +preferences-desktop-default-applications: title(16) big(48) +text-x-generic: title(16) +/usr/share/pixmaps/gpl3.png + + +# +# tazdrop +# + +# tazdrop +text-editor: title(16) big(48) +gtk-remove: button(16) +gtk-save: button(16) +gtk-close: button(16) diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 jwm/jwm-menu --- a/jwm/jwm-menu Sat Apr 11 16:46:26 2015 +0300 +++ b/jwm/jwm-menu Fri Apr 17 07:35:02 2015 +0300 @@ -1,7 +1,7 @@ #!/bin/sh # # JWM Menus generator -# (C) 2014 SliTaz GNU/Linux - BSD Licence +# (C) 2014-2015 SliTaz GNU/Linux - BSD Licence # menus="/etc/xdg/jwm/menus.jwmrc" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tazbox/tazbox --- a/tazbox/tazbox Sat Apr 11 16:46:26 2015 +0300 +++ b/tazbox/tazbox Fri Apr 17 07:35:02 2015 +0300 @@ -3,23 +3,29 @@ # SliTaz tiny GUI boxes for the desktop (su, logout, locale, etc) # and as usual, please: KISS # -# Copyright (C) 2011-2014 SliTaz GNU/Linux - GNU GPL v3 +# Copyright (C) 2011-2015 SliTaz GNU/Linux - GNU GPL v3 # - Christophe Lincoln # - Aleksej Bobylev # + . /lib/libtaz.sh export TEXTDOMAIN='tazbox' # i18n + # download dir (may be in a config file) + DOWNLOADS=$HOME/Downloads + # some constants to be used inside functions + tmp=/tmp/keymap.list db=/usr/share/i18n/locales zi=/usr/share/zoneinfo/ ztab=${zi}zone-mini.tab csv=/tmp/freegeoip.csv + # # Functions # @@ -48,20 +54,26 @@ newline } + # try to find icon in .desktop files + find_icon() { - local desktop - desktop=$(find $HOME/.local/share/applications /usr/share/applications \ + local_desktop=$(find $HOME/.local/share/applications -name ${1##*/}.desktop 2&>/dev/null | head -n1) - [ x$desktop != x ] && cat $desktop | sed '/\[Desktop\ Entry\]/,/^\[/!d' | \ + system_desktop=$(find /usr/share/applications \ + -name ${1##*/}.desktop 2&>/dev/null | head -n1) + desktop="${local_desktop:-$system_desktop}" + [ -n "$desktop" ] && cat $desktop | sed '/\[Desktop\ Entry\]/,/^\[/!d' | \ sed '/^Icon=/!d' | head -n1 | cut -d= -f2 } + # su frontend GUIs + su_main() { CMD1="$1"; shift; CMD2="$(echo $@ | sed 's|&|&|g')" : ${icon=$(find_icon $CMD1)} - [ x$icon == x ] && icon=gtk-dialog-authentication + icon="${icon:-dialog-password}" yad --title="$(_n 'SliTaz admin password')" --window-icon=$icon \ --width=520 --on-top --center \ @@ -73,8 +85,9 @@ --field="$(_n 'Autosave password'):CHK" $CHECKED } + su_error() { - icon=gtk-dialog-error + icon='dialog-error' yad --title="$(_n 'Error')" --window-icon=$icon \ --width=320 --on-top --center \ --image=$icon --image-on-top \ @@ -82,7 +95,9 @@ --button="gtk-close:1" } + # user may press cancel on download. + cancel_dl() { if [ "$?" == 1 ]; then _ "CANCEL" @@ -90,10 +105,12 @@ fi } + # output a command in a GTK window + output_command() { : ${title=$(_n 'TazBox Output')} - : ${icon=gtk-dialog-info} + : ${icon=dialog-information} yad --title="$title" --window-icon=$icon \ --geometry="600x220+0-24" --fore="#ffffff" --back="#000000" \ @@ -101,20 +118,24 @@ --button="gtk-close:1" } + # logout GUI function + logout_main() { - icon=/usr/share/pixmaps/slitaz-icon.png + icon='/usr/share/pixmaps/slitaz-icon.png' yad --title="$(_n 'SliTaz Logout')" --window-icon=$icon \ --on-top --center --height=130 \ --image=$icon --image-on-top \ --text="$(_n 'SliTaz Logout - Please choose an action:')" \ --always-print-result \ --button "$(_n 'Close X session')!system-log-out:4" \ - --button "$(_n 'Reboot system')!reload:3" \ + --button "$(_n 'Reboot system')!system-reboot:3" \ --button "$(_n 'Shutdown system')!system-shutdown:2" } + # generate keymap list + gen_kmap_list() { echo > $tmp cd /usr/share/kbd/keymaps/i386 @@ -124,9 +145,11 @@ done } + # Initial Config functions + setup_main() { - icon=locale + icon='locale' gen_kmap_list locale=$(ls -1 $db | grep ^[a-z][a-z]_[A-Z][A-Z] | tr "\n" "!") keymap=$(cat $tmp | sort | tr "\n" "!") @@ -141,6 +164,7 @@ --field "$(_n 'Timezone'):CB" $timezone } + setup() { choices=$(setup_main) locale=$(echo $choices | cut -d"|" -f1) @@ -157,7 +181,7 @@ # locale_main() { - icon=preferences-desktop-locale + icon='preferences-desktop-locale' for locale in $(ls -1 $db | grep '[a-z]_[A-Z]'); do desc=$(fgrep -m1 title $db/$locale | cut -d'"' -f2) ll_CC=${locale%%@*} @@ -175,6 +199,7 @@ --button="gtk-cancel:1" --button="gtk-ok:0" } + locale() { locale=$(locale_main) # Deal with --button values @@ -191,10 +216,11 @@ fi } + # Keymap functions + keymap_main() { - #icon=preferences-desktop-keyboard - icon=input-keyboard + icon='preferences-desktop-keyboard' gen_kmap_list for i in $(sort $tmp); do echo "$i" | tr '|' '\n' @@ -208,6 +234,7 @@ rm -f $tmp } + keymap() { keymap=$(keymap_main) # Deal with --button values @@ -216,18 +243,23 @@ [ "$keymap" ] && tazkeymap $keymap } + # Free GeoIP service # Response: IP,CountryCode,CountryName, ... + geoip() { [ ! -e $csv ] && wget -q -T3 -O $csv http://freegeoip.net/csv/ 2&>/dev/null [ -e $csv ] && cut -d, -f2 $csv } + # # TZ functions # + # list of all existing available locations for country + tz_list() { find $zi | \ grep -E "$(cat $ztab | grep "^$1 " | cut -d' ' -f2 | tr ' ' '|')" | \ @@ -235,12 +267,14 @@ sed 's|.*/||g' | sort } + # ask for confirmation only if we have what to choose + tz_suggest() { CountryCode=$(geoip) if [ "x$CountryCode" != x ]; then if [ "x$(tz_list $CountryCode)" != x ]; then - CountryName=$(cut -d'"' -f6 $csv) + CountryName=$(cut -d, -f3 $csv) yad --title="$(_ 'SliTaz TZ')" --window-icon=$icon \ --on-top --center \ --image=$CountryCode --image-on-top \ @@ -252,6 +286,7 @@ fi } + tz_select() { case x$1 in x) @@ -310,6 +345,7 @@ esac } + tz() { icon=clock arg=$(tz_suggest) @@ -332,16 +368,21 @@ rm -f $tmpcc } + # # Manage i18n packages # + # if installed + if_installed() { [ -d /var/lib/tazpkg/installed/$1 ] } + # get package's description, install flag and sizes + desc_etc() { INFO="$(grep -m1 -A3 -x -F $1 /var/lib/tazpkg/packages.txt)" @@ -357,12 +398,16 @@ echo -e "$INST\n$1\n$DESC\n${SIZE1//.0}\n${SIZE2//.0}" >> $PKGS_LIST } + # remove temp + rm_temp() { rm -f $PKGS_LIST $ORIG_LIST $ANSWER $NEW_LIST $LIST1 $LIST2 } + # install/remove locale packages + manage_i18n() { tazbox notify "$(_ 'Please wait')" appointment-soon & @@ -430,7 +475,7 @@ done fi - icon=stock_properties + icon='stock_properties' cat $PKGS_LIST | \ { yad --title="$(_n 'Manage locale packages')" --window-icon=$icon \ @@ -476,22 +521,24 @@ # New file functions + newfile_main() { - icon=gtk-new + icon='gtk-new' yad --title="$(_n 'New file')" --window-icon=$icon \ --width=460 --height=160 --on-top --center \ --image=$icon --image-on-top \ + --icon=$icon \ --text="$(_n 'Create a new file or folder on your desktop')" \ --entry --entry-label="$(_n 'File name')" \ --ricon=editclear \ --always-print-result \ --button="$(_n 'SHell script')!application-x-shellscript:4" \ - --button="$(_n 'Folder')!stock_folder:3" \ - --icon="gtk-new" \ - --button="$(_n 'File')!application-text:2" \ + --button="$(_n 'Folder')!folder:3" \ + --button="$(_n 'File')!empty:2" \ --button="gtk-cancel:1" } + newfile() { file=$(newfile_main) ret=$? @@ -510,9 +557,11 @@ esac } + # All applications + all_apps() { - icon=stock_bookmark + icon='stock_bookmark' yad --title="$(_n 'All Applications')" --window-icon=$icon \ --width=400 --height=400 \ --icons --compact \ @@ -520,7 +569,9 @@ --button="gtk-close:0" } + # Ask root permissions for system settings + ask_root() { if [ $(id -u) != 0 ]; then exec tazbox su $0 $@ @@ -528,24 +579,30 @@ fi } + # # Commands # + case "$1" in su) # Don't show dialog if we are root test $(id -u) = 0 && exec ${@:2} SU_CMD="${@:2}" + # Check if a password has been saved before launching main dialog if [ -s $HOME/.config/slitaz/subox.conf ]; then PASSWD=$(cat $HOME/.config/slitaz/subox.conf) CHECKED="TRUE" fi + # Display the main dialog (ask for password) main=$(su_main $SU_CMD) + # Deal with --button values and exit if cancelled to avoid erasing # saved password. [ $? == 1 ] && exit 0 + # Save or erase Autosaved password if [ $(echo $main | cut -f2 -d"|") == "TRUE" ]; then echo $main | cut -f 1 -d "|" > $HOME/.config/slitaz/subox.conf @@ -553,6 +610,7 @@ else cat /dev/null > $HOME/.config/slitaz/subox.conf fi + # Try to login & execute. If password is wrong execute error dialog SU_CMD_QUOTED="$(echo "dbus-launch --exit-with-session $SU_CMD" | sed 's|&|\\&|g')" echo $main | cut -f 1 -d "|" | su -c "$SU_CMD_QUOTED &" || su_error ;; @@ -563,6 +621,7 @@ else logout_main; answer=$? fi + # Deal with --button values # DE and WM started with a custom -session script should export # XDG_CURRENT_DESKTOP @@ -590,7 +649,7 @@ out-dl) # A tiny GTK window for Busybox wget output url=$2; opts="--tail --button=gtk-cancel:1" - icon=folder-downloads; title="$(_ 'Downloading...')" + icon='folder-downloads'; title="$(_ 'Downloading...')" [ -d $DOWNLOADS ] || mkdir -p $DOWNLOADS busybox wget -c -P $DOWNLOADS $url 2>&1 | output_command cancel_dl ;; @@ -638,7 +697,7 @@ # Missing file was created by slitaz_apps_conf function from tazx . $CONFIG - icon=preferences-desktop-default-applications + icon='preferences-desktop-default-applications' eval $(yad --title="$(_n 'SliTaz default applications')" \ --window-icon=$icon --image=$icon --image-on-top \ --text="$(_n 'SliTaz default applications configuration')" \ diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tazdrop/tazdrop --- a/tazdrop/tazdrop Sat Apr 11 16:46:26 2015 +0300 +++ b/tazdrop/tazdrop Fri Apr 17 07:35:02 2015 +0300 @@ -4,13 +4,16 @@ # or the expanded panel and it will deal with it. Or at least it will # try, since we are in the first stages of the tool. # -# Copyright (C) 2011-2014 SliTaz GNU/linux - BSD License +# Copyright (C) 2011-2015 SliTaz GNU/linux - BSD License # - Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='tazdrop' # i18n + # Follow XDG standards + CONFIG=$HOME/.config/slitaz/tazdrop.conf NOTES=$HOME/.cache/tazdrop.notes @@ -39,7 +42,9 @@ newline } + # Write notes content type to a file + write_drop() { sed "s/$(echo -en '\r') /\n/g" >> $NOTES << EOT ====[ $(date '+%x %X') ]==== @@ -47,7 +52,9 @@ EOT } + # Get and install a package from an URL + get_install_pkg() { tmp=$DOWNLOADS/$$ mkdir -p $tmp @@ -56,7 +63,9 @@ su -c "tazpkg install *.tazpkg && mv *.tazpkg .. && cd .. && rm -rf $tmp" } + # Main GUI function + drop_main() { yad --geometry="$DROP_SIZE$DROP_GEOM" \ --sticky --on-top --skip-taskbar --undecorated --no-buttons \ @@ -66,7 +75,9 @@ --command="$0" } + # Image GUI function + drop_image() { yad --geometry="$DROP_IMAGE_GEOM" \ --sticky --on-top --skip-taskbar --undecorated --no-buttons \ @@ -76,9 +87,11 @@ --command="$0" } + # Notes GUI function + drop_notes() { - icon=text-editor + icon='text-editor' yad --title="$(_ 'Dropped Notes')" --window-icon=$icon \ --width=500 --height=400 --margins=5 \ --image=$icon --image-on-top \ @@ -89,9 +102,11 @@ --button="gtk-close:1" } + # # We may have args on cmdline, execute cmd & and exit. # + case "$1" in --usage|-h|--help) usage && exit 0 ;; @@ -116,12 +131,14 @@ drop="$1" && continue ;; esac + # # Drag and drop handler, uritype first filetype after. # # Use 'xdg-open' & 'xdg-mime query filetype /path/to/file', # both need xprop (on slitaz we have obxprop from openbox)? # + case "$drop" in file:///*) # Handle local files diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/browser --- a/tinyutils/browser Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/browser Fri Apr 17 07:35:02 2015 +0300 @@ -1,6 +1,7 @@ #!/bin/sh # Launch SliTaz default Web browser. # + . /etc/slitaz/applications.conf USER_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/decode --- a/tinyutils/decode Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/decode Fri Apr 17 07:35:02 2015 +0300 @@ -3,13 +3,15 @@ # Decode is a cmdline tool to decode all kinds of files such as audio or video. # Lets you decode a single file, many files on cmdline or a full directory. # -# Copyright (C) 2012-2014 SliTaz GNU/Linux - BSD License +# Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n + # NOTES: # Do we need a --out=/output/path option ? # Use convert for [.png|.jpg] --> .raw ? @@ -21,7 +23,9 @@ # Functions # + # Small help and usage. + usage() { cat << EOT @@ -38,8 +42,10 @@ EOT } + # Check if a tool is installed. Don't force users and auto install package # Decode is a cmdline line tool, let's have auto install option in GUI. + check_tool() { dec=$1 name="$(basename "$file")" @@ -53,7 +59,9 @@ fi } + # Decode a file. + decoder() { newline; separator; newline if [ ! -f "$file" ]; then @@ -83,6 +91,7 @@ esac } + # # Commands # diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/editor --- a/tinyutils/editor Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/editor Fri Apr 17 07:35:02 2015 +0300 @@ -1,6 +1,7 @@ #!/bin/sh # Launch SliTaz default Text Editor. # + . /etc/slitaz/applications.conf USER_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/file-manager --- a/tinyutils/file-manager Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/file-manager Fri Apr 17 07:35:02 2015 +0300 @@ -1,6 +1,7 @@ #!/bin/sh # Launch SliTaz default File manager. # + . /etc/slitaz/applications.conf USER_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/applications.conf" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/frugal --- a/tinyutils/frugal Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/frugal Fri Apr 17 07:35:02 2015 +0300 @@ -2,29 +2,36 @@ # # Frugal is a tiny tool to handle SliTaz frugal installation. # -# Copyright (C) 2013 SliTaz GNU/Linux - BSD License +# Copyright (C) 2013-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh [ "$root" ] || root="/boot/frugal" + # NOTES: # Have a --web option to dl ISO ? # Auto configure GRUB ? # + # Internationalization + . /usr/bin/gettext.sh TEXTDOMAIN='slitaz-tools' export TEXTDOMAIN + # # Functions # + # Small help and usage. + usage() { name=$(basename $0) cat << EOT @@ -49,7 +56,9 @@ EOT } + # GRUB config example. + grub_example() { cat << EOT title SliTaz GNU/Linux (frugal) @@ -59,6 +68,7 @@ EOT } + # # Commands # @@ -69,6 +79,7 @@ newline boldify "Frugal info" separator + # First check if we are running in frugal mode if fgrep -q 'root=/dev/null' /proc/cmdline; then gettext "Frugal system running detected"; newline @@ -127,6 +138,7 @@ cp -a ${loop}/boot/rootfs.gz ${root} fi status + # Umount the loop device gettext "Unmounting ISO image..." sleep 1 diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/history --- a/tinyutils/history Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/history Fri Apr 17 07:35:02 2015 +0300 @@ -2,6 +2,7 @@ # # Fake history command for Ash. # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/hwsetup --- a/tinyutils/hwsetup Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/hwsetup Fri Apr 17 07:35:02 2015 +0300 @@ -2,9 +2,10 @@ # usage: hwsetup [device] # e.g., hwsetup printer # # -# Copyright (C) 2009-2014 SliTaz GNU/Linux - GNU GPL v3 +# Copyright (C) 2009-2015 SliTaz GNU/Linux - GNU GPL v3 # Authors : Rohit Joshi # + . /lib/libtaz.sh . /etc/slitaz/slitaz.conf export TEXTDOMAIN='slitaz-tools' #i18n @@ -17,6 +18,7 @@ DETECTED="no" USB_IDS=/usr/share/misc/usb.ids.gz + usage() { newline _ 'SliTaz Setup configuration' @@ -45,6 +47,7 @@ newline } + run_daemon_startup() { # Add server to rcS.conf and avoid duplication. . /etc/rcS.conf @@ -53,6 +56,7 @@ fi } + device() { SUGGESTED="" case "$DEVICE" in @@ -93,6 +97,7 @@ esac } + untested() { newline; separator longline $(_ "Due to a lack of compatible hardware for troubleshooting, \ @@ -102,6 +107,7 @@ sleep 1 } + failed() { newline; separator _ 'Failed to setup $DEVICE' @@ -109,7 +115,9 @@ sleep 1 } + # Install DEPENDS and/or SUGGESTED + install() { for pkg in $1 ; do # Avoid reinstall @@ -123,7 +131,9 @@ done } + # Install DEPENDS and/or SUGGESTED + confirm_install() { for pkg in $1 ; do # Avoid reinstall @@ -139,6 +149,7 @@ done } + add_all_user_to_group() { USERS=$(grep /home /etc/passwd | cut -d: -f1) #echo "checking $USERS in $GROUP" @@ -152,6 +163,7 @@ done } + find_usb_device() { case "$DEVICE" in printer|scanner|camera) PATTERN="Cls=00" ;; @@ -188,6 +200,7 @@ fi } + confirm_device() { _ "Which no. is your $DEVICE shown in the above lines (1,2,3,none)? "; read choice case "$choice" in @@ -206,6 +219,7 @@ esac } + hputil() { if [ "$HP" == "1" ]; then install "hplip" @@ -217,7 +231,9 @@ fi } + # udev now should do this correctly + fix_usb_permissions() { grp=$1 if [ "$DETECTED" == "yes" ]; then @@ -233,18 +249,21 @@ fi } + fix_parallel_permissions() { if [ -f /usr/lib/cups/backend/parallel ] ; then chmod 0755 /usr/lib/cups/backend/parallel fi } + load_modules() { tazhw detect-pci tazhw detect-usb sleep 1 } + udev() { if [ "$UDEV_RULES" == "yes" ]; then _ 'New udev rules are added by a package' @@ -253,9 +272,11 @@ fi } + xorg() { [ -x /usr/bin/Xorg ] || install "xorg" _ 'Auto configuring Xorg...' + # Xorg auto configuration. if [ ! -d /etc/X11/xorg.conf.d -a -x /usr/bin/Xorg ]; then _ 'Configuring Xorg...' @@ -266,6 +287,7 @@ fi } + get_wvdial_vars() { PHONE=$( grep ^Phone $CONF | cut -d= -f2 | tr -d '[" ]') USERNAME=$(grep ^Username $CONF | cut -d= -f2 | tr -d '[" ]') @@ -277,6 +299,7 @@ [ "x$PASSWORD" == "x''" ] && PASSWORD= } + set_wvdial_vars() { # wvdial needs something right the equal sign [ x$USERNAME == x ] && USERNAME="''" @@ -287,6 +310,7 @@ s|^Modem.*/dev.*|Modem = '$MODEM'|' -i $CONF } + wvdialbox_main() { icon=network-transmit-receive yad --title="$(_n 'Wvdial Box')" --window-icon=$icon --center \ @@ -306,6 +330,7 @@ # --always-print-result } + wvdialbox() { # setup your modem #wvdialconf @@ -366,6 +391,7 @@ printer) load_modules udev + # check parallel or usb printer if [ -f /proc/sys/dev/parport/parport*/autoprobe* ] ; then fix_parallel_permissions @@ -374,6 +400,7 @@ find_usb_device fix_usb_permissions "lp" fi + #lpinfo -v if [ "$DETECTED" == "yes" ]; then newline @@ -487,6 +514,7 @@ failed fi ;; + bluetooth) load_modules udev @@ -494,6 +522,7 @@ _n 'Do you want to see if the bluetooth is working'; confirm if [ $? == 0 ]; then newline + # sanity check: btusb is not loaded automagically for unknown reasons if ! lsmod | grep -q btusb ; then modprobe btusb @@ -502,6 +531,7 @@ emsg "$(_n 'Bluetooth interfaces')" newline lsusb | grep Bluetooth + # udev should run bluetoothd automatically bluetoothd sleep 1 @@ -729,7 +759,9 @@ esac } + # What to do. + case "$1" in -h|--help|help|usage) usage ;; wvdial) wvdialbox ;; diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/setmixer --- a/tinyutils/setmixer Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/setmixer Fri Apr 17 07:35:02 2015 +0300 @@ -4,11 +4,14 @@ # directly. # + # Internationalization + . /usr/bin/gettext.sh TEXTDOMAIN='slitaz-tools' export TEXTDOMAIN + gettext "Setting default mixer volumes... " amixer -s -q < # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n @@ -18,7 +19,9 @@ height="20" width="72" + # Use a tmp directory + mkdir -p $tmpdir quit() { @@ -30,7 +33,9 @@ # GUI Functions # + # Coded for the ARM first boot settings + about_post_install() { dialog --cr-wrap \ --title "{ $(_ 'Post Installation') }" \ @@ -38,7 +43,9 @@ --textbox "$about" $height $width } + # Set root passwd + root_passwd() { dialog --title "{ $(_ 'Root Password') }" --colors \ --inputbox "\n$(_ 'Enter new password for \Zb\Z1root')" \ @@ -48,7 +55,9 @@ echo "root:$passwd" | chpasswd --md5 >/dev/null } + # Add a new user + add_user() { title2="{ $(_ 'Add User') }" @@ -81,6 +90,7 @@ fi } + set_date() { clear; newline echo "Old date: $(date)" @@ -89,9 +99,11 @@ sleep 4 } + # Catch ESSIDs and format output for Ncurses Dialog or GTK Yad tree. # We get the list of networks by Cell and without spaces. # Usage: detect_wifi --output=gtk (default output to dialog) + detect_wifi() { . /etc/network.conf ifconfig $WIFI_INTERFACE up @@ -141,14 +153,18 @@ fi } + # Show message and percentage on the dialog gauge + msg() { sleep 1; echo -e "XXX\n$1\n$MSG\nXXX" } + # Wireless config so users don't have to edit any config files on post # install to get connected. If the wired connection is used it will auto # connect with DHCP so no need for a dialog frontend. + wifi_setup() { . /etc/network.conf dialog \ @@ -226,7 +242,9 @@ } | dialog --title "{ $(_ 'Wi-Fi Config') }" --gauge "" 8 $width 0 } + # Main Dialog menu + main_box() { dialog \ --clear --title "$title" \ @@ -259,6 +277,7 @@ esac } + # # Handle commands # @@ -273,6 +292,8 @@ done ;; esac + # Clean exit + #rm -rf ${tmpdir} exit 0 diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/startd --- a/tinyutils/startd Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/startd Fri Apr 17 07:35:02 2015 +0300 @@ -2,6 +2,7 @@ # # Startd - Small wrapper to start daemons on SliTaz. # + . /lib/libtaz.sh check_root diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/stopd --- a/tinyutils/stopd Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/stopd Fri Apr 17 07:35:02 2015 +0300 @@ -2,6 +2,7 @@ # # Stopd - Small wrapper to stop daemons on SliTaz. # + . /lib/libtaz.sh check_root diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/subox --- a/tinyutils/subox Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/subox Fri Apr 17 07:35:02 2015 +0300 @@ -1,3 +1,4 @@ #!/bin/sh # Small wrapper for the old subox. + exec tazbox su "$@" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/tazhw --- a/tinyutils/tazhw Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/tazhw Fri Apr 17 07:35:02 2015 +0300 @@ -6,11 +6,12 @@ # option --get-firmware to force installation. GUI uses Yad and is # called by args such as all box functions. # -# (c) 2009-2014 SliTaz GNU/Linux - GNU GPL v3 +# (c) 2009-2015 SliTaz GNU/Linux - GNU GPL v3 # # Authors: Christophe Lincoln # Rohit Joshi # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' # i18n text mode @@ -35,6 +36,7 @@ EOT } + check_firmware() { if [ -x /usr/bin/get-$mod-firmware ]; then if [ ! -d /var/lib/tazpkg/installed/$mod-firmware ]; then @@ -57,6 +59,7 @@ fi } + load_module() { if ! lsmod | grep -q "^$mod"; then # Check if builtin, loaded or missing @@ -86,8 +89,10 @@ . /etc/rcS.conf } + # Detect PCI devices and load kernel module only at first boot, # in LiveCD mode or with the command 'detect-pci'. + detect_pci_devices() { if [ ! -s /var/lib/detected-modules ]; then . /etc/rcS.conf @@ -102,7 +107,9 @@ fi } + # Detect all USB devices. + detect_usb_devices() { if [ -e /sys/bus/usb/devices/usb/usb1 ]; then for product in /sys/bus/usb/devices/*/product @@ -119,12 +126,16 @@ fi } + # Get firmware used by check_firmware() + if [ "$2" == "--get-firmware" ]; then firmware='get' fi + # What to do. + case "$1" in -i|init) check_root diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/tazkeymap --- a/tinyutils/tazkeymap Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/tazkeymap Fri Apr 17 07:35:02 2015 +0300 @@ -3,14 +3,17 @@ # Tazkeymap - SliTaz GNU/Linux keymap config using loadkeys and dialog boxes. # Configuration file is: /etc/keymap.conf # -# Copyright (C) 2008-2014 SliTaz GNU/Linux - BSD License +# Copyright (C) 2008-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n + # List all keymaps. + list_keymaps() { cd /usr/share/kbd/keymaps/i386 # We first need a list to sort and then use \n for Yad list. @@ -21,7 +24,9 @@ done } + # Load the selected kmap file from /usr/share/kbd/keymaps or Busybox kmaps. + load_keymap() { if [ -x /bin/loadkeys ]; then loadkeys $kmap @@ -30,12 +35,15 @@ fi } + # Config /etc/keymap.conf and update Xorg keyboard config + system_config() { echo "$kmap" > /etc/keymap.conf tazx keyboard } + case "$1" in info) _n 'Config file:'; echo " /etc/keymap.conf" diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/tazlocale --- a/tinyutils/tazlocale Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/tazlocale Fri Apr 17 07:35:02 2015 +0300 @@ -3,13 +3,15 @@ # Tazlocale: SliTaz GNU/Linux locale setting using dialog boxes. # Configuration file is: /etc/locale.conf # -# Copyright (C) 2008-2014 SliTaz GNU/Linux - BSD License +# Copyright (C) 2008-2015 SliTaz GNU/Linux - BSD License # # Author: Christophe Lincoln # + . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n + usage() { newline _ 'SliTaz GNU/Linux locale setting using dialog boxes.' @@ -28,9 +30,11 @@ newline } + # Make symlink to file, substitute "%%" to "ll_CC", "ll" or "en" according to # current language settings and file existence # (where "ll_CC" - full locale format (lang and country, and maybe, modifier). + make_i18n_link() { if [ -d $(dirname ${1/.%%/}) ]; then cd $(dirname ${1/.%%/}) @@ -47,33 +51,44 @@ fi } + # Create symlink to translated files provided by SliTaz language pack, # doc and config files. + link_language_files() { . /etc/locale.conf LANGUAGE=${LANG%_*} [ "$LANG" == "POSIX" ] && LANGUAGE="en" + # Openbox menu make_i18n_link /etc/xdg/openbox/menu.%%.xml + # Documentation make_i18n_link /usr/share/doc/slitaz/index.%%.html + # SliTaz Software Manuals for soft in tazpkg tazlito tazusb tazwok tazweb cookutils; do make_i18n_link /usr/share/doc/$soft/$soft.%%.html done + # SliTaz TazWeb "My Web Home" make_i18n_link /usr/share/tazweb/home.%%.html + # SliTaz WebHome make_i18n_link /usr/share/webhome/index.%%.html + # TazPanel Doc under www make_i18n_link /var/www/tazpanel/doc/tazpanel.%%.html + # SliTaz Tools Manuals for soft in burnbox tazinst; do make_i18n_link /usr/share/doc/slitaz-tools/$soft.%%.html done } + # Locale name displayed. + get_locale_name() { for i in $(ls -1 /usr/share/i18n/locales | grep [a-z]_[A-Z]); do #desc=$(grep ^title /usr/share/i18n/locales/$i | cut -d '"' -f 2) @@ -81,14 +96,18 @@ done } + # We have no locale files in /usr/lib/locale by default. # Run localedef in background to have a faster boot. + gen_utf8_locale() { [ -e /usr/lib/locale/$locale ] || \ localedef -i $locale -c -f UTF-8 /usr/lib/locale/$locale & } + # Config /etc/locale.conf + system_config() { export LC_ALL=$locale _n "Setting system locale to: $locale" @@ -98,7 +117,9 @@ link_language_files } + # Dialog menu. + dialog_menu() { exec 3>&1 locale=$($DIALOG --clear \ diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/tazx --- a/tinyutils/tazx Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/tazx Fri Apr 17 07:35:02 2015 +0300 @@ -4,7 +4,7 @@ # This tinyutil is part of slitaz-tools. Tazx can configure Xorg with # several Window Managers. The GTK interface to configure X is in tazbox. # -# (c) 2011-2014 SliTaz GNU/Linux - GNU GPL v3. +# (c) 2011-2015 SliTaz GNU/Linux - GNU GPL v3. # Authors: Christophe Lincoln # Pascal Bellard # @@ -20,6 +20,7 @@ export TEXTDOMAIN='slitaz-tools' #i18n : ${DIALOG=dialog --timeout 60} + # Default user for config files in Live mode, id is 1000 since it is # created by /etc/init.d/bootopts.sh. @@ -492,6 +493,7 @@ # Handle live options: screen= video= + proc_cmdline() { if grep -qs 'screen=' /proc/cmdline ; then @@ -507,6 +509,7 @@ fi } + set_depth() { case "$1" in diff -r 7bda33bbdf48 -r 5d80f6fdbdb7 tinyutils/terminal --- a/tinyutils/terminal Sat Apr 11 16:46:26 2015 +0300 +++ b/tinyutils/terminal Fri Apr 17 07:35:02 2015 +0300 @@ -1,6 +1,7 @@ #!/bin/sh # Launch SliTaz default X Terminal. # + . /etc/slitaz/applications.conf . /lib/libtaz.sh export TEXTDOMAIN='slitaz-tools' #i18n