Release new version 2.13.0
[grml-scripts.git] / usr_bin / grml-lang
index 19b0b69..52b81a0 100755 (executable)
@@ -6,14 +6,31 @@
 # License:       This file is licensed under the GPL v2.
 ################################################################################
 
+CONFFILE=/etc/default/keyboard
+PN="$(basename "$0")"
+
 usage(){
-    echo "Usage: $0 <language>"
-    echo "supported values: at, ch, de, dvorak, es, jp, us"
+    echo "Usage: ${PN} <language>"
+    echo "supported values: at, ch, de, dvorak, es, fr, it, jp, us"
+}
+
+setvalue(){
+  [ -n "$2" ] || return 1
+  sudo sed -i "s#^${1}=.*#${1}=\"${2}\"#" "${CONFFILE}"
 }
 
 if [ $# -lt "1" ] ; then
-   usage
-   exit -1
+   usage >&2
+   exit 1
+fi
+
+LANGUAGE="$1"
+
+# shellcheck disable=SC1091
+. /etc/grml/language-functions
+
+if [ -n "$XKEYBOARD" ] ; then
+  setvalue XKBLAYOUT "$XKEYBOARD"
 fi
 
 if [ -z "$DISPLAY" ] ;then
@@ -29,6 +46,10 @@ if [ -z "$DISPLAY" ] ;then
     echo "Loading keymap for Switzerland..."
     sudo loadkeys i386/qwertz/sg-latin1.kmap.gz
     echo -e "\nDone."
+  elif [ "$1" = "it" ] ; then
+    echo "Loading keymap for Italy..."
+    sudo loadkeys i386/qwerty/it.kmap.gz
+    echo -e "\nDone."
   elif [ "$1" = "us" ] ; then
     echo 'Loading keymap us...'
     sudo loadkeys i386/qwerty/us-latin1.kmap.gz
@@ -45,6 +66,10 @@ if [ -z "$DISPLAY" ] ;then
     echo 'Loading keymap es...'
     sudo loadkeys i386/qwerty/es.kmap.gz
     echo -e "\nDone."
+  elif [ "$1" = "fr" ] ; then
+    echo 'Loading keymap fr...'
+    sudo loadkeys i386/azerty/fr.kmap.gz
+    echo -e "\nDone."
   else echo "No valid parameter given.
 
 Notice: Use loadkeys on console and setxkbmap when running X for
@@ -58,7 +83,11 @@ else
   else
     if [ "$1" = "de" ] ; then
       echo "Loading keymap for Germany..."
-      [ -r $HOME/.Xmodmap.german ] && xmodmap $HOME/.Xmodmap.german || setxkbmap de
+      if [ -r "${HOME}"/.Xmodmap.german ] ; then
+        xmodmap "${HOME}"/.Xmodmap.german || setxkbmap de
+      else
+        setxkbmap de
+      fi
       echo -e "\nDone."
     elif [ "$1" = "at" ] ; then
       echo "Loading keymap for Austria..."
@@ -68,6 +97,10 @@ else
       echo "Loading keymap for Switzerland..."
       setxkbmap ch
       echo -e "\nDone."
+    elif [ "$1" = "it" ] ; then
+      echo "Loading keymap for Italy..."
+      setxkbmap it
+      echo -e "\nDone."
     elif [ "$1" = "jp" ] ; then
       echo "Loading keymap for Japan..."
       setxkbmap -model jp106 -layout jp
@@ -78,12 +111,20 @@ else
       echo -e "\nDone."
     elif [ "$1"  = "us" ] ; then
       echo 'Loading keymap us...'
-      [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap || setxkbmap us
+      if [ -r "${HOME}"/.Xmodmap ] ; then
+        xmodmap "${HOME}"/.Xmodmap || setxkbmap us
+      else
+        setxkbmap us
+      fi
       echo -e "\nDone."
     elif [ "$1" = "es" ] ; then
       echo "Loading keymap es..."
       setxkbmap es
       echo -e "\nDone."
+    elif [ "$1" = "fr" ] ; then
+      echo "Loading keymap fr..."
+      setxkbmap fr
+      echo -e "\nDone."
     else
       echo "No valid parameter given."
       echo