diff --git a/airootfs/etc/X11/xinit/xinitrc b/airootfs/etc/X11/xinit/xinitrc index 0afcf66..aa2ef69 100755 --- a/airootfs/etc/X11/xinit/xinitrc +++ b/airootfs/etc/X11/xinit/xinitrc @@ -1,72 +1,7 @@ #!/bin/bash -if [ -f /etc/sysconfig/keyboard ] -then - if grep -q XKEYBOARD /etc/sysconfig/keyboard - then - KEYMAP=$(cat /etc/sysconfig/keyboard | grep XKEYBOARD | cut -d '=' -f2) - # The keymap must be listed in the following file: - # /usr/share/X11/xkb/rules/xorg.lst - - [ $KEYMAP = "azerty" -o $KEYMAP = "01" ] && KEYMAP="azerty" - [ $KEYMAP = "be" -o $KEYMAP = "02" ] && KEYMAP="be" - [ $KEYMAP = "bg" -o $KEYMAP = "03" ] && KEYMAP="bg" - [ $KEYMAP = "br-a" -o $KEYMAP = "04" ] && KEYMAP="br" - [ $KEYMAP = "br-l" -o $KEYMAP = "05" ] && KEYMAP="br" - [ $KEYMAP = "by" -o $KEYMAP = "06" ] && KEYMAP="by" - [ $KEYMAP = "cf" -o $KEYMAP = "07" ] && KEYMAP="cf" - [ $KEYMAP = "croat" -o $KEYMAP = "08" ] && KEYMAP="hr" - [ $KEYMAP = "cz" -o $KEYMAP = "09" ] && KEYMAP="cz" - [ $KEYMAP = "de" -o $KEYMAP = "10" ] && KEYMAP="de" - [ $KEYMAP = "dk" -o $KEYMAP = "11" ] && KEYMAP="dk" - [ $KEYMAP = "dvorak" -o $KEYMAP = "12" ] && KEYMAP="dvorak" - [ $KEYMAP = "es" -o $KEYMAP = "13" ] && KEYMAP="es" - [ $KEYMAP = "et" -o $KEYMAP = "14" ] && KEYMAP="et" - [ $KEYMAP = "fi" -o $KEYMAP = "15" ] && KEYMAP="fi" - [ $KEYMAP = "fr" -o $KEYMAP = "16" ] && KEYMAP="fr" - [ $KEYMAP = "gr" -o $KEYMAP = "17" ] && KEYMAP="gr" - [ $KEYMAP = "hu" -o $KEYMAP = "18" ] && KEYMAP="hu" - [ $KEYMAP = "il" -o $KEYMAP = "19" ] && KEYMAP="il" - [ $KEYMAP = "is" -o $KEYMAP = "20" ] && KEYMAP="is" - [ $KEYMAP = "it" -o $KEYMAP = "21" ] && KEYMAP="it" - [ $KEYMAP = "jp" -o $KEYMAP = "22" ] && KEYMAP="jp" - [ $KEYMAP = "la" -o $KEYMAP = "23" ] && KEYMAP="latam" - [ $KEYMAP = "lt" -o $KEYMAP = "24" ] && KEYMAP="lt" - [ $KEYMAP = "mk" -o $KEYMAP = "25" ] && KEYMAP="mk" - [ $KEYMAP = "nl" -o $KEYMAP = "26" ] && KEYMAP="nl" - [ $KEYMAP = "no" -o $KEYMAP = "27" ] && KEYMAP="no" - [ $KEYMAP = "pl" -o $KEYMAP = "28" ] && KEYMAP="pl" - [ $KEYMAP = "pt" -o $KEYMAP = "29" ] && KEYMAP="pt" - [ $KEYMAP = "ro" -o $KEYMAP = "30" ] && KEYMAP="ro" - [ $KEYMAP = "ru" -o $KEYMAP = "31" ] && KEYMAP="us,ru(winkeys) -option grp:ctrl_shift_toggle,lctrl_shift_toggle" - [ $KEYMAP = "se" -o $KEYMAP = "32" ] && KEYMAP="se" - [ $KEYMAP = "sg" -o $KEYMAP = "33" ] && KEYMAP="sg" - [ $KEYMAP = "sk-y" -o $KEYMAP = "34" ] && KEYMAP="sk" - [ $KEYMAP = "sk-z" -o $KEYMAP = "35" ] && KEYMAP="sk" - [ $KEYMAP = "slovene" -o $KEYMAP = "36" ] && KEYMAP="si" - [ $KEYMAP = "trf" -o $KEYMAP = "37" ] && KEYMAP="tr" - [ $KEYMAP = "trq" -o $KEYMAP = "38" ] && KEYMAP="tr" - [ $KEYMAP = "ua" -o $KEYMAP = "39" ] && KEYMAP="ua" - [ $KEYMAP = "uk" -o $KEYMAP = "40" ] && KEYMAP="gb" - [ $KEYMAP = "us" -o $KEYMAP = "41" ] && KEYMAP="us" - [ $KEYMAP = "wangbe" -o $KEYMAP = "42" ] && KEYMAP="wangbe" - [ $KEYMAP = "fr_CH" -o $KEYMAP = "43" ] && KEYMAP="ch -variant fr" - [ $KEYMAP = "speakup" -o $KEYMAP = "44" ] && KEYMAP="us" - [ $KEYMAP = "cz" -o $KEYMAP = "45" ] && KEYMAP="cz" - [ $KEYMAP = "de_CH" -o $KEYMAP = "46" ] && KEYMAP="ch" - [ $KEYMAP = "sg-lat1" -o $KEYMAP = "47" ] && KEYMAP="ch" - [ $KEYMAP = "fr-bepo" -o $KEYMAP = "48" ] && KEYMAP="fr bepo" - [ $KEYMAP = "colemak" -o $KEYMAP = "49" ] && KEYMAP="us -variant colemak" - [ $KEYMAP = "de_neo" -o $KEYMAP = "50" ] && KEYMAP="de -variant neo" - - touch /var/log/keymap.log - echo "setxkbmap -layout $KEYMAP" >> /var/log/keymap.log - setxkbmap -layout $KEYMAP >> /var/log/keymap.log 2>&1 - fi -fi - -[ -f /usr/bin/xset ] && /usr/bin/xset s off >/dev/null 2>&1 & -[ -f /usr/bin/xset ] && /usr/bin/xset r >/dev/null 2>&1 & +[ -x /usr/bin/xset ] && /usr/bin/xset s off >/dev/null 2>&1 & +[ -x /usr/bin/xset ] && /usr/bin/xset r >/dev/null 2>&1 & export $(dbus-launch) exec /usr/bin/startxfce4 diff --git a/airootfs/etc/systemd/scripts/sysresccd-initialize b/airootfs/etc/systemd/scripts/sysresccd-initialize index 98b4246..e086c9a 100755 --- a/airootfs/etc/systemd/scripts/sysresccd-initialize +++ b/airootfs/etc/systemd/scripts/sysresccd-initialize @@ -10,9 +10,7 @@ do setkmap\=*) echo "Found option '${curopt}' on the boot command line" SETKMAP=$(echo "${curopt}" | cut -f2 -d=) - /sbin/loadkeys ${SETKMAP} - mkdir -p /etc/sysconfig - echo "XKEYBOARD=${SETKMAP}" > /etc/sysconfig/keyboard + localectl set-keymap ${SETKMAP} ;; # Set the system root password from a clear password rootpass\=*) diff --git a/airootfs/etc/systemd/system/sysresccd-initialize.service b/airootfs/etc/systemd/system/sysresccd-initialize.service index 74262e3..b88557b 100644 --- a/airootfs/etc/systemd/system/sysresccd-initialize.service +++ b/airootfs/etc/systemd/system/sysresccd-initialize.service @@ -1,7 +1,8 @@ [Unit] Description=SystemRescueCd Initialization -Before=sshd.service +Before=sshd.service getty-pre.target After=network.target +Wants=getty-pre.target [Service] Type=oneshot diff --git a/airootfs/usr/bin/setkmap b/airootfs/usr/bin/setkmap index f31526a..e6e8bd9 100755 --- a/airootfs/usr/bin/setkmap +++ b/airootfs/usr/bin/setkmap @@ -14,6 +14,10 @@ else exec 3>&- fi -/sbin/loadkeys ${keymap} -mkdir -p /etc/sysconfig -echo "XKEYBOARD=${keymap}" > /etc/sysconfig/keyboard +localectl set-keymap ${keymap} + +if [[ $DISPLAY ]] && [[ -r /etc/X11/xorg.conf.d/00-keyboard.conf ]]; then + # X11 is already running + x11keymap=$(awk '/^\s*Option "XkbLayout"/ { print $3 }' /etc/X11/xorg.conf.d/00-keyboard.conf) + setxkbmap -layout ${x11keymap} +fi