/etc/skel/.xinitrc.d/grml_keyboard: support /etc/default/keyboard usage
authorMichael Prokop <mika@grml.org>
Sat, 29 Dec 2018 16:05:26 +0000 (17:05 +0100)
committerMichael Prokop <mika@grml.org>
Sat, 29 Dec 2018 16:09:40 +0000 (17:09 +0100)
Starting with Grml 2018.12 we try to rely on console-setup and
keyboard-configuration packages as much as possible.  We no longer want
to generate nor support file /etc/sysconfig/keyboard any longer (while
current grml-lang / grml-setkeyboard / grml-setlang scripts are known to
still use it), but we stay backwards compatible with this change.

Related to grml/grml-autoconfig#9 and grml/grml#50

etc/skel/.xinitrc.d/grml_keyboard

index 5bec35e..33331bf 100755 (executable)
@@ -6,26 +6,52 @@
 # License:       This file is licensed under the GPL v2 or any later version.
 ################################################################################
 
-if [ "$XINIT_GRML_KEYBOARD" = "false" ] ; then
+if [ "${XINIT_GRML_KEYBOARD}" = "false" ] ; then
    exit 0
 fi
 
 # Ctrl+Alt+Backspace killing xserver
 setxkbmap -option terminate:ctrl_alt_bksp
 
-if ! [ -r /etc/sysconfig/keyboard ] ; then
-   [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap || setxkbmap us
-else
-   . /etc/sysconfig/keyboard
-   if [ "$XKEYBOARD" = "us" ] ; then
-      [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap
-   else
-      if [ -n "$XKEYMODEL" ] ; then
-         setxkbmap -model "$XKEYMODEL" -layout "$XKEYBOARD"
-      else
-         setxkbmap "$XKEYBOARD"
-      fi
-   fi
+apply_xmodmap_settings() {
+  if [ -r "${HOME}"/.Xmodmap ] ; then
+    xmodmap "${HOME}"/.Xmodmap || setxkbmap us
+  else
+    setxkbmap us
+  fi
+}
+
+if [ -r /etc/default/keyboard ] ; then # Grml >=2018.12
+  XKBLAYOUT="us" # assume as default
+
+  . /etc/default/keyboard
+
+  if [ "${XKBLAYOUT}" = "us" ] ; then
+    apply_xmodmap_settings
+  else
+    if [ -n "${XKBMODEL}" ] && [ -n "${XKBVARIANT}" ] ; then
+      setxkbmap -model "${XKEYMODEL}" -variant "${XKBVARIANT}" -layout "${XKBLAYOUT}"
+    elif [ -n "${XKBMODEL}" ] ; then
+      setxkbmap -model "${XKEYMODEL}" -layout "${XKBLAYOUT}"
+    elif [ -n "${XKBVARIANT}" ] ; then
+      setxkbmap -variant "${XKBVARIANT}" -layout "${XKBLAYOUT}"
+    else
+      setxkbmap "${XKBLAYOUT}"
+    fi
+  fi
+elif [ -r /etc/sysconfig/keyboard ] ; then  # older Grml releases
+  . /etc/sysconfig/keyboard
+  if [ "${XKEYBOARD}" = "us" ] ; then
+    apply_xmodmap_settings
+  else
+    if [ -n "${XKEYMODEL}" ] ; then
+      setxkbmap -model "${XKEYMODEL}" -layout "${XKEYBOARD}"
+    else
+      setxkbmap "${XKEYBOARD}"
+    fi
+  fi
+else  # last ressort fallback
+  apply_xmodmap_settings
 fi
 
 ## END OF FILE #################################################################