grml-lang: use /etc/default/keyboard instead of /etc/sysconfig/keyboard
authorMichael Prokop <mika@grml.org>
Sun, 30 Dec 2018 11:10:50 +0000 (12:10 +0100)
committerMichael Prokop <mika@grml.org>
Sun, 30 Dec 2018 11:16:58 +0000 (12:16 +0100)
For proper font handling we switched to usage of console-setup and
keyboard-configuration packages. We adjusted grml-live and
grml-autoconfig to use /etc/default/keyboard instead of
/etc/sysconfig/keyboard. To better handle this also within grml-lang
itself, switch to usage of /etc/default/keyboard.

FTR, this is not the final and bullet-proof solution yet, but meant to
be fix the main issues (e.g. booting with Grml defaults, then pressing
'd' for german keyboard within grml-quickconfig and then starting X via
'x' within grml-quickoconfig), using a minimal approach.

Initial work addressing https://github.com/grml/grml/issues/115

usr_bin/grml-lang

index 5c3fafa..0e774ae 100755 (executable)
@@ -6,7 +6,7 @@
 # License:       This file is licensed under the GPL v2.
 ################################################################################
 
-CONFFILE=/etc/sysconfig/keyboard
+CONFFILE=/etc/default/keyboard
 PN="$(basename $0)"
 
 usage(){
@@ -16,36 +16,22 @@ usage(){
 
 setvalue(){
   [ -n "$2" ] || return 1
-  # already present in conffile?
-  if grep -q ${1} $CONFFILE 2>/dev/null ; then
-     sudo sed -i "s#^${1}.*#${1}=${2}#"   $CONFFILE
-  else
-     echo "$1=${2}" | sudo tee -a $CONFFILE >/dev/null
-  fi
+  sudo sed -i "s#^${1}=.*#${1}=\"${2}\"#" "${CONFFILE}"
 }
 
 if [ $# -lt "1" ] ; then
-   usage
+   usage >&2
    exit 1
 fi
 
-[ -d /etc/sysconfig ] || sudo mkdir /etc/sysconfig
-
-
 LANGUAGE="$1"
 
-
 . /etc/grml/language-functions
 
-if [ ! -z "$KEYTABLE" ] ; then
-    setvalue KEYTABLE "$KEYTABLE"
-fi
-
-if [ ! -z "XKEYBOARD" ] ; then
-    setvalue XKEYBOARD $XKEYBOARD
+if [ -n "$XKEYBOARD" ] ; then
+  setvalue XKBLAYOUT "$XKEYBOARD"
 fi
 
-
 if [ -z "$DISPLAY" ] ;then
   if [ "$1" = "de" ] ; then
     echo "Loading keymap for Germany..."
@@ -96,7 +82,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..."
@@ -120,7 +110,11 @@ 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..."