diff --git a/config/files/GRMLBASE/etc/locale.gen b/config/files/GRMLBASE/etc/locale.gen index 17f3a3494..6b6c86361 100644 --- a/config/files/GRMLBASE/etc/locale.gen +++ b/config/files/GRMLBASE/etc/locale.gen @@ -15,4 +15,14 @@ # change this file without affecting the use of debconf, however, since it # does read in your changes. +# Locales for languages supported by grml-lang +de_AT.UTF-8 UTF-8 +de_CH.UTF-8 UTF-8 +de_DE.UTF-8 UTF-8 +en_GB.UTF-8 UTF-8 en_US.UTF-8 UTF-8 +es_ES.UTF-8 UTF-8 +fr_FR.UTF-8 UTF-8 +hu_HU.UTF-8 UTF-8 +it_IT.UTF-8 UTF-8 +ja_JP.UTF-8 UTF-8 diff --git a/config/files/GRMLBASE/usr/bin/grml-lang b/config/files/GRMLBASE/usr/bin/grml-lang index da6d877fd..2e6b5fd95 100755 --- a/config/files/GRMLBASE/usr/bin/grml-lang +++ b/config/files/GRMLBASE/usr/bin/grml-lang @@ -11,12 +11,45 @@ PN="$(basename "$0")" usage(){ echo "Usage: ${PN} " - echo "supported values: at, ch, de, dvorak, es, fr, it, jp, uk, us" + echo "supported values: at, ch, de, dvorak, es, fr, hu, it, jp, uk, us" } setvalue(){ - [ -n "$2" ] || return 1 - sudo sed -i "s#^${1}=.*#${1}=\"${2}\"#" "${CONFFILE}" + sudo sed -i --follow-symlinks "s#^${1}=.*#${1}=\"${2}\"#" "${CONFFILE}" +} + +# Update keyboard configuration and apply changes +configure_keyboard(){ + local layout="$1" + local variant="${2:-}" + + # Update /etc/default/keyboard + if [ -r "$CONFFILE" ] ; then + setvalue XKBLAYOUT "$layout" + setvalue XKBVARIANT "$variant" + else + # Create the file if it doesn't exist + sudo tee "$CONFFILE" > /dev/null < /dev/null + fi + fi + + # Apply keyboard changes immediately: + # Let setupcon update the files /etc/console-setup/cached*. It will also try + # to activate the new configuration. + sudo setupcon --force --save + # However, due to an apparenty loadkeys or kernel limitation, when the current + # screen is managed by X11, loadkeys *without* -u fails or does nothing. Force + # loading the keymap for the linux virtual consoles. + sudo loadkeys -u /etc/console-setup/cached_UTF-8_del.kmap.gz + # Trigger udev rules for input devices. If X11 is installed, this will make + # udev pick up /etc/default/keyboard, and X11 will pick up the keymap from udev. + sudo udevadm trigger --subsystem-match=input --action=change } if [ $# -lt "1" ] ; then @@ -27,121 +60,33 @@ fi LANGUAGE="$1" # shellcheck disable=SC1091 -. /etc/grml/language-functions +. /usr/share/grml-autoconfig/language-functions -if [ -n "$XKEYBOARD" ] ; then - setvalue XKBLAYOUT "$XKEYBOARD" +# Check if we found a valid keyboard configuration +if [ -z "$XKEYBOARD" ] ; then + echo "E: No valid language given." + echo + usage + echo + echo "Notice: grml-lang now configures keyboard layout via /etc/default/keyboard." + echo "For locale settings, use grml-setlang." + exit 1 fi -if [ -z "$DISPLAY" ] ;then - if [ "$1" = "de" ] ; then - echo "Loading keymap for Germany..." - sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz - echo -e "\nDone." - elif [ "$1" = "at" ] ; then - echo "Loading keymap for Austria..." - sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz - echo -e "\nDone." - elif [ "$1" = "ch" ] ; 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 - echo -e "\nDone." - elif [ "$1" = "dvorak" ] ; then - echo 'Loading keymap dvorak...' - sudo loadkeys dvorak - echo -e "\nDone." - elif [ "$1" = "jp" ] ; then - echo 'Loading keymap jp...' - sudo loadkeys i386/qwerty/jp106.kmap.gz - echo -e "\nDone." - elif [ "$1" = "es" ] ; 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." - elif [ "$1" = "uk" ] ; then - echo 'Loading keymap uk...' - sudo loadkeys i386/qwerty/uk.kmap.gz - echo -e "\nDone." - else echo "No valid parameter given. - -Notice: Use loadkeys on console and setxkbmap when running X for -modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1 - fi - # switch to unicode mode on console - case $LANG in *UTF-8) kbd_mode -u ; ;; esac -else - if [ $# = 0 ] ; then - usage - else - if [ "$1" = "de" ] ; then - echo "Loading keymap for Germany..." - 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..." - setxkbmap de - echo -e "\nDone." - elif [ "$1" = "ch" ] ; then - 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 - echo -e "\nDone." - elif [ "$1" = "dvorak" ] ; then - echo "Loading keymap dvorak..." - setxkbmap dvorak - echo -e "\nDone." - elif [ "$1" = "us" ] ; then - echo 'Loading keymap 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." - elif [ "$1" = "uk" ] ; then - echo "Loading keymap gb for uk..." - setxkbmap gb - echo -e "\nDone." - else - echo "No valid parameter given." - echo - usage - echo - echo "Notice: Use loadkeys on console and setxkbmap when running X for -modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1 - fi - fi +if [ -n "$XKEYBOARD" ] ; then + # Determine variant based on language + case "$LANGUAGE" in + de|at) + configure_keyboard "$XKEYBOARD" "nodeadkeys" + ;; + *) + configure_keyboard "$XKEYBOARD" + ;; + esac fi +echo "Keyboard layout configured: $XKEYBOARD" +[ -n "$2" ] && echo "Variant: $2" +echo "Done." + ## END OF FILE ################################################################# diff --git a/config/files/GRMLBASE/usr/sbin/grml-setlang b/config/files/GRMLBASE/usr/sbin/grml-setlang index 4a15d5cf8..6a565d81f 100755 --- a/config/files/GRMLBASE/usr/sbin/grml-setlang +++ b/config/files/GRMLBASE/usr/sbin/grml-setlang @@ -8,7 +8,7 @@ PN="$(basename "$0")" DIALOG=dialog -LANGFUNC=/etc/grml/language-functions +LANGFUNC=/usr/share/grml-autoconfig/language-functions # notice: Debian's locales.postinst has been modified to write # locale variables into /etc/default/locale instead of @@ -42,16 +42,39 @@ setvalue(){ [ -n "$2" ] || return 1 # already present in conffile? if grep -q "^${1}" "$CONFFILE" ; then - sed -i "s#^${1}.*#${1}${2}#" $CONFFILE + sed -i --follow-symlinks "s#^${1}.*#${1}${2}#" $CONFFILE # is the new Debian style /etc/default/locale present? elif grep -q "^# ${1}$" "$CONFFILE" ; then # shellcheck disable=SC1117 - sed -i "s#^\# ${1}#${1}${2}#" $CONFFILE + sed -i --follow-symlinks "s#^\# ${1}#${1}${2}#" $CONFFILE else echo "$1${2}" >> $CONFFILE fi } +# Generate locale if necessary +generate_locale(){ + local locale="$1" + + # If locales-all is installed, we don't need to generate anything + if dpkg -s locales-all >/dev/null 2>&1 ; then + return 0 + fi + + # Check if locale is already in /etc/locale.gen + if ! grep -q "^$locale " /etc/locale.gen 2>/dev/null ; then + # Add the locale to /etc/locale.gen + echo "$locale UTF-8" >> /etc/locale.gen + + # Remove autogenerated markers if present + sed -i --follow-symlinks '/^# This file was created by grml-live/d' /etc/locale.gen + sed -i --follow-symlinks '/^# XXX GENERATED XXX/d' /etc/locale.gen + + # Generate the locale + locale-gen --keep-existing >/dev/null 2>&1 + fi +} + # grml-small does not provide any further locales if grep -q small /etc/grml_version 2>/dev/null ; then if [ -z "$NONINTERACTIVE" ] ; then @@ -88,73 +111,41 @@ which locales should be generated by locale-gen) please run 'dpkg-reconfigure locales' manually. Configuration will be written to $CONFFILE" 0 0 0 \ - at 'austria (unicode version)' off \ - at-iso 'austrian (iso version)' off \ - au 'austrial (unicode version)' off \ - au-iso 'australian (iso version)' off \ - be 'belgian (unicode version)' off \ - be-iso 'belgian (iso version)' off \ - bg 'bulgarian (unicode version)' off \ - bg-iso 'bulgarian (iso version)' off \ - br 'brazilian (unicode version)' off \ - br-iso 'brazilian (iso version)' off \ - ch 'swiss (unicode version)' off \ - ch-iso 'swiss (iso version)' off \ + at 'austrian' off \ + au 'austrialian' off \ + be 'belgian' off \ + bg 'bulgarian' off \ + br 'brazilian' off \ + ch 'swiss-german' off \ cf 'french canadian' off \ - cn 'chinese (unicode version)' off \ - cn-iso 'chinese (iso version)' off \ - cs 'czech (unicode version)' off \ - cs-iso 'czech (iso version)' off \ - cz 'czech (unicode version)' off \ - cz-iso 'czech (iso version)' off \ - de 'german (unicode version)' off \ - de-iso 'german (iso version)' off \ - dk 'dansk (unicode version)' off \ - dk-iso 'dansk (iso version)' off \ - da 'dansk (unicode version)' off \ - da-iso 'dansk (iso version)' off \ - el 'greek (unicode version)' off \ - el-iso 'greek (iso version)' off \ - en 'english [us] (unicode version, grml default)' on \ - en-iso 'english [us] (iso version)' off \ - es 'spanish (unicode version)' off \ - es-iso 'spanish (iso version)' off \ - fi 'finnish (unicode version)' off \ - fi-iso 'finnish (iso version)' off \ - fr 'frensh (unicode version)' off \ - fr-iso 'frensh (iso version)' off \ - ga 'irish gaeilge (unicode version)' off \ - ga-iso 'irish gaeilge (iso version)' off \ - he 'hebrew (unicode version)' off \ - he-iso 'hebrew (iso version)' off \ - il 'hebrew (unicode version)' off \ - il-iso 'hebrew (iso version)' off \ - ie 'irish (unicode version)' off \ - ie-iso 'irish (iso version)' off \ - it 'italian (unicode version)' off \ - it-iso 'italian (iso version)' off \ - ja 'japanese (unicode version)' off \ - ja-iso 'japanese (iso version)' off \ - nl 'dutch (unicode version)' off \ - nl-iso 'dutch (iso version)' off \ - pl 'polish (unicode version)' off \ - pl-iso 'polisch (iso version)' off \ - pt 'portuguese (unicode version)' off \ - pt-iso 'portuguese (iso version)' off \ - ru 'russian (unicode version)' off \ - ru-iso 'russian (iso version)' off \ - sk 'slovak (unicode version)' off \ - sk-iso 'slovak (iso version)' off \ - sl 'slovenian (unicode version)' off \ - sl-iso 'slovenian (iso version)' off \ - tr 'turkish (unicode version)' off \ - tr-iso 'turkish (iso version)' off \ - tw 'chinese (traditional) (unicode version)' off \ - tw-iso 'chinese (traditional) (iso version)' off \ - uk 'british (unicode version)' off \ - uk-iso 'british (iso version)' off \ - us 'american (unicode version)' off \ - us-iso 'american (iso version)' off \ + cn 'chinese' off \ + cs 'czech' off \ + cz 'czech' off \ + de 'german' off \ + dk 'dansk' off \ + da 'dansk' off \ + el 'greek' off \ + en 'english [us] (grml default)' on \ + es 'spanish' off \ + fi 'finnish' off \ + fr 'french' off \ + ga 'irish gaeilge' off \ + he 'hebrew' off \ + hu 'hungarian' off \ + il 'hebrew' off \ + ie 'irish' off \ + it 'italian' off \ + ja 'japanese' off \ + nl 'dutch' off \ + pl 'polish' off \ + pt 'portuguese' off \ + ru 'russian' off \ + sk 'slovak' off \ + sl 'slovenian' off \ + tr 'turkish' off \ + tw 'chinese (traditional)' off \ + uk 'british' off \ + us 'american' off \ ) } @@ -204,6 +195,14 @@ LANG=$LANG EOF fi +# Remove grml-live header when the file gets changed +if [ -r "$CONFFILE" ] && grep -q "# grml-live" "$CONFFILE" ; then + sed -i --follow-symlinks '/^# grml-live/d' "$CONFFILE" +fi + +# Generate locale if necessary +generate_locale "$LANG" + setvalue 'LANG=' "$LANG" retval=$? diff --git a/config/files/GRMLBASE/usr/share/grml-autoconfig/autoconfig.functions b/config/files/GRMLBASE/usr/share/grml-autoconfig/autoconfig.functions index f75d16991..c42d36173 100755 --- a/config/files/GRMLBASE/usr/share/grml-autoconfig/autoconfig.functions +++ b/config/files/GRMLBASE/usr/share/grml-autoconfig/autoconfig.functions @@ -196,48 +196,27 @@ config_language(){ einfo "Activating language settings:" eindent - # people can specify $LANGUAGE in a config file - [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig - - # check for bootoption which overrides config from /etc/grml/autoconfig + # check for bootoptions which override config from /etc/grml/autoconfig BOOT_LANGUAGE="$(getbootparam 'lang' 2>>$DEBUG)" - [ -n "$BOOT_LANGUAGE" ] && LANGUAGE="$BOOT_LANGUAGE" - - # set default to 'en' in live-cd mode iff $LANGUAGE is not set yet - if [ -z "$INSTALLED" ] ; then - [ -n "$LANGUAGE" ] || LANGUAGE='en' - fi + BOOT_KEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" - if [ -x /usr/sbin/grml-setlang ] ; then - # if bootoption lang is used update /etc/default/locale accordingly - if [ -n "$BOOT_LANGUAGE" ] ; then - /usr/sbin/grml-setlang "$LANGUAGE" - # otherwise default to lang=en - else - /usr/sbin/grml-setlang "en" - fi + if [ -z "$BOOT_LANGUAGE" ] ; then + # default to US if nothing was set + BOOT_LANGUAGE="us" fi - # export it now, so error messages get translated, too - [ -r /etc/default/locale ] && . /etc/default/locale - export LANG LANGUAGE - - local KEYBOARD - KEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)" - [ -n "$KEYBOARD" ] || KEYBOARD="$LANGUAGE" - # "symbols/en" doesn't exist, so rewrite to "us" - [[ "$KEYBOARD" == 'en' ]] && KEYBOARD="us" - - if [ -r /etc/default/keyboard ] ; then - sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$KEYBOARD\"/" /etc/default/keyboard - - case "$KEYBOARD" in - de|at) - sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"nodeadkeys\"/" /etc/default/keyboard - ;; - esac + # Configure locale using grml-setlang + /usr/sbin/grml-setlang "$BOOT_LANGUAGE" + # Configure keyboard layout using grml-lang + # keyboard= parameter takes precedence over lang= for keyboard layout + local KEYBOARD_LANG + if [ -n "$BOOT_KEYBOARD" ] ; then + KEYBOARD_LANG="$BOOT_KEYBOARD" + elif [ -n "$BOOT_LANGUAGE" ] ; then + KEYBOARD_LANG="$BOOT_LANGUAGE" fi + /usr/bin/grml-lang "$KEYBOARD_LANG" eoutdent } @@ -974,7 +953,7 @@ EOF # adjust inittab for startx if grep -q '^6:' /etc/inittab ; then - sed -i 's|^6:.*|6:2345:respawn:/bin/zsh --login -c "/etc/init.d/startx ; /usr/share/grml-scripts/run-welcome" >/dev/tty6 2>\&1 /dev/tty6 2>\&1 /dev/tty6 2>&1 < /dev/tty6' >> /etc/inittab fi @@ -982,7 +961,7 @@ EOF /sbin/telinit q ; eend $? if grep -q '^allowed_users=' /etc/X11/Xwrapper.config ; then - sed -i 's/^allowed_users=.*/allowed_users=anybody/' /etc/X11/Xwrapper.config + sed -i --follow-symlinks 's/^allowed_users=.*/allowed_users=anybody/' /etc/X11/Xwrapper.config else echo 'allowed_users=anybody' >> /etc/X11/Xwrapper.config fi diff --git a/config/files/GRMLBASE/etc/grml/language-functions b/config/files/GRMLBASE/usr/share/grml-autoconfig/language-functions similarity index 52% rename from config/files/GRMLBASE/etc/grml/language-functions rename to config/files/GRMLBASE/usr/share/grml-autoconfig/language-functions index f8ade10bd..25da1438e 100644 --- a/config/files/GRMLBASE/etc/grml/language-functions +++ b/config/files/GRMLBASE/usr/share/grml-autoconfig/language-functions @@ -1,4 +1,4 @@ -# Filename: /etc/grml/language-functions +# Filename: /usr/share/grml-autoconfig/language-functions # Purpose: general language stuff used in several parts of the grml-system # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ @@ -11,16 +11,6 @@ case "$LANGUAGE" in LANG="C" LANGUAGE="C" ;; - at-iso) - # Austrian version - COUNTRY="at" - LANG="de_AT@euro" - LANGUAGE="de_AT:de" - KEYTABLE="de-latin1-nodeadkeys" - XKEYBOARD="de" - CHARSET="iso8859-15" - TZ="Europe/Vienna" - ;; at|at-utf8) # Austrian version (UTF8) COUNTRY="at" @@ -32,16 +22,6 @@ case "$LANGUAGE" in # CHARSET="lat9w-16" TZ="Europe/Vienna" ;; - au-iso) - # Australian version - LANGUAGE="en" - COUNTRY="au" - LANG="en_AU" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="iso8859-1" - TZ="Australia/Sydney" - ;; au|au-utf8) # Australian version (UTF8) LANGUAGE="en_AU:en" @@ -52,16 +32,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Australia/Sydney" ;; - be-iso|bed-iso) - # Belgian version (default and dutch one) - LANGUAGE="nl" - COUNTRY="be" - LANG="C" - KEYTABLE="be2-latin1" - XKEYBOARD="be" - CHARSET="iso8859-15" - TZ="Europe/Brussels" - ;; be|be-utf8|bed|bed-utf8) # Belgian version (default and dutch one) (UTF8) LANGUAGE="nl_BE:nl" @@ -72,16 +42,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Brussels" ;; - bef-iso) - # Belgian version (french) - LANGUAGE="fr" - COUNTRY="be" - LANG="C" - KEYTABLE="be2-latin1" - XKEYBOARD="be" - CHARSET="iso8859-15" - TZ="Europe/Brussels" - ;; bef|bef-utf8) # Belgian version (french) (UTF8) LANGUAGE="fr_BE:fr" @@ -92,16 +52,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Brussels" ;; - beg-iso) - # Belgian version (german) - LANGUAGE="de" - COUNTRY="be" - LANG="C" - KEYTABLE="be2-latin1" - XKEYBOARD="be" - CHARSET="iso8859-15" - TZ="Europe/Brussels" - ;; beg|beg-utf8) # Belgian version (german) (UTF8) LANGUAGE="de_BE:de" @@ -112,16 +62,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Brussels" ;; - bg-iso) - # Bulgarian version - LANGUAGE="bg" - COUNTRY="bg" - LANG="bg_BG" - KEYTABLE="bg" - XKEYBOARD="bg" - CHARSET="microsoft-cp1251" - TZ="Europe/Sofia" - ;; bg|bg-utf8) # Bulgarian version (UTF8) LANGUAGE="bg_BG:bg" @@ -132,16 +72,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Sofia" ;; - br-iso) - # Brazilian Version - LANGUAGE="pt_BR" - COUNTRY="br" - LANG="pt_BR" - KEYTABLE="br-abnt2" - XKEYBOARD="abnt2" - CHARSET="iso8859-1" - TZ="America/Sao_Paulo" - ;; br|br-utf8) # Brazilian Version (UTF8) LANGUAGE="pt_BR:pt" @@ -152,16 +82,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="America/Sao_Paulo" ;; - ch-iso) - # Swiss version - LANGUAGE="de" - COUNTRY="ch" - LANG="de_CH" - KEYTABLE="sg-latin1" - XKEYBOARD="ch" - CHARSET="iso8859-15" - TZ="Europe/Zurich" - ;; ch|ch-utf8) # Swiss version (basically de with some modifications) LANGUAGE="de_CH:de" @@ -172,26 +92,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Zurich" ;; - cf) - # French Canadian version - LANGUAGE="fr" - COUNTRY="ca" - LANG="fr_FR.ISO-8859-1" - KEYTABLE="cf" - CHARSET="iso8859-1" - XKEYBOARD="ca_enhanced" - TZ="America/Montreal" - ;; - cn-iso) - # Simplified Chinese version - COUNTRY="cn" - LANG="zh_CN.GB2312" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="gb2312.1980-0" - XMODIFIERS="@im=Chinput" - TZ="Asia/Shanghai" - ;; cn|cn-utf8) # Simplified Chinese version (UTF8) COUNTRY="zh_CN:cn" @@ -202,16 +102,15 @@ case "$LANGUAGE" in XMODIFIERS="@im=Chinput" TZ="Asia/Shanghai" ;; - cs-iso|cz-iso) - # Czech version - LANGUAGE="cs" - COUNTRY="cs" - LANG="cs_CZ" - KEYTABLE="cz-lat2" - XKEYBOARD="cs" - CHARSET="iso8859-2" - TZ="Europe/Prague" - CHARMAP="iso02" + cf) + # French Canadian version (UTF8) + LANGUAGE="fr_CA:fr" + COUNTRY="ca" + LANG="fr_CA.UTF-8" + KEYTABLE="cf" + XKEYBOARD="ca_enhanced" + CHARSET="utf8" + TZ="America/Montreal" ;; cs|cz|cs-utf8|cz-utf8) # Czech version (UTF8) @@ -223,16 +122,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Prague" ;; - de-iso) - # German version - COUNTRY="de" - LANG="de_DE@euro" - LANGUAGE="de_DE:de" - KEYTABLE="de-latin1-nodeadkeys" - XKEYBOARD="de" - CHARSET="iso8859-15" - TZ="Europe/Berlin" - ;; de|de-utf8) # German version (UTF8) COUNTRY="de" @@ -243,18 +132,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Berlin" ;; - dk-iso|da-iso) - # Dansk version - COUNTRY="dk" - LANG="da_DK" - # Workaround: "dk" broken in gettext, use da:da_DK - LANGUAGE="da:da_DK" - # Keytable "dk" is correct. - KEYTABLE="dk" - XKEYBOARD="dk" - CHARSET="iso8859-15" - TZ="Europe/Copenhagen" - ;; dk|da|dk-utf8|da-utf8) # Dansk version (UTF8) COUNTRY="dk" @@ -277,27 +154,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="UTC" ;; - dvorak-iso) - # Dvorak layout (ISO) - LANGUAGE="us" - COUNTRY="at" - LANG="en_US.iso885915" - KEYTABLE="dvorak" - XKEYBOARD="dvorak" - CHARSET="iso8859-15" - TZ="UTC" - ;; - en-iso) - # English in Austria [see us + uk for american and english version!] - # LANGUAGE="en_US:en_GB:en" - LANGUAGE="en" - COUNTRY="at" - LANG="en_US.iso885915" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="iso8859-15" - TZ="UTC" - ;; en|en-utf8) # English in Austria [see us + uk for american and english version!] (UTF8) LANGUAGE="en" @@ -308,19 +164,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="UTC" ;; - el-iso) - # Greek version - LANGUAGE="el" - COUNTRY="gr" - LANG="el_GR" - KEYTABLE="gr" - XKEYBOARD="us,el" - CHARSET="iso8859-7" - IOCHARSET="8859-7" - IOCODEPAGE="737" - SYSFONTACM="iso07" - TZ="Europe/Athens" - ;; el|el-utf8) # Greek version (UTF8) LANGUAGE="el_GR:el" @@ -334,15 +177,6 @@ case "$LANGUAGE" in SYSFONTACM="iso07" TZ="Europe/Athens" ;; - es-iso) - # Spanish version - COUNTRY="es" - LANG="es_ES@euro" - KEYTABLE="es" - XKEYBOARD="es" - CHARSET="iso8859-15" - TZ="Europe/Madrid" - ;; es|es-utf8) # Spanish version (UTF8) LANGUAGE="es_ES:es" @@ -353,15 +187,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Madrid" ;; - fi-iso) - # Finnish version - COUNTRY="fi" - LANG="fi_FI@euro" - KEYTABLE="fi-latin1" # old value: fi - XKEYBOARD="fi" - CHARSET="iso8859-15" - TZ="Europe/Helsinki" - ;; fi|fi-utf8) # Finnish version (UTF8) LANGUAGE="fi_FI:fi" @@ -372,15 +197,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Helsinki" ;; - fr-iso) - # French version - COUNTRY="fr" - LANG="fr_FR@euro" - KEYTABLE="fr" - XKEYBOARD="fr" - CHARSET="iso8859-15" - TZ="Europe/Paris" - ;; fr|fr-utf8) # French version (UTF8) LANGUAGE="fr_FR" @@ -391,15 +207,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Paris" ;; - ga-iso) - # Irish Gaeilge version - COUNTRY="ie" - LANG="ga_IE@euro" - KEYTABLE="uk" - XKEYBOARD="uk" - CHARSET="iso8859-15" - TZ="Europe/Dublin" - ;; ga|ga-utf8) # Irish Gaeilge version (UTF8) COUNTRY="ie" @@ -409,16 +216,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Dublin" ;; - he-iso|il-iso) - # Hebrew version - LANGUAGE="he" - COUNTRY="il" - LANG="he_IL" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="iso8859-8" - TZ="Asia/Jerusalem" - ;; he|il|he-utf8|il-utf8) # Hebrew version (UTF8) LANGUAGE="he_IL:he" @@ -429,14 +226,15 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Asia/Jerusalem" ;; - ie-iso) - # Irish (English) version - COUNTRY="ie" - LANG="en_IE@euro" - KEYTABLE="uk" - XKEYBOARD="uk" - CHARSET="iso8859-15" - TZ="Europe/Dublin" + hu) + # Hungarian version (UTF8) + LANGUAGE="hu_HU:hu" + COUNTRY="hu" + LANG="hu_HU.UTF-8" + KEYTABLE="hu" + XKEYBOARD="hu" + CHARSET="utf8" + TZ="Europe/Budapest" ;; ie|ie-utf8) # Irish (English) version (UTF8) @@ -448,15 +246,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Dublin" ;; - it-iso) - # Italian version - COUNTRY="it" - LANG="it_IT@euro" - KEYTABLE="it" - XKEYBOARD="it" - CHARSET="iso8859-15" - TZ="Europe/Rome" - ;; it|it-utf8) # Italian version (UTF8) LANGUAGE="it_IT" @@ -467,17 +256,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Rome" ;; - ja-iso|jp-iso) - # (limited) Japanese version - COUNTRY="jp" - LANG="ja_JP" - LANGUAGE="ja" - KEYTABLE="jp106" - XKEYMODEL="jp106" - XKEYBOARD="jp" - CHARSET="iso8859-15" - TZ="Asia/Tokyo" - ;; ja|ja-utf8|jp|jp-utf8) # (limited) Japanese version (UTF8) LANGUAGE="ja_JP:ja" @@ -490,15 +268,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Asia/Tokyo" ;; - nl-iso) - # Dutch version - COUNTRY="nl" - LANG="nl_NL@euro" - KEYTABLE="us" # nl - XKEYBOARD="us" # nl - CHARSET="iso8859-15" - TZ="Europe/Amsterdam" - ;; nl|nl-utf8) # Dutch version (UTF8) LANGUAGE="nl_NL:nl" @@ -509,16 +278,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Amsterdam" ;; - no-iso|nb-iso|nn-iso) - # Norsk versjon - COUNTRY="no" - LANG="nb_NO" - LANGUAGE="no:nb_NO" - KEYTABLE="no" - XKEYBOARD="no" - CHARSET="iso8859-15" - TZ="Europe/Oslo" - ;; no|nb|nn|no-utf8|nb-utf8|nn-utf8) # Norsk versjon (UTF8) COUNTRY="no" @@ -532,16 +291,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Oslo" ;; - pl-iso) - # Polish version - COUNTRY="pl" - LANG="pl_PL" - KEYTABLE="pl" - XKEYBOARD="pl" - CHARSET="iso8859-2" - TZ="Europe/Warsaw" - CHARMAP="iso02" - ;; pl|pl-utf8) # Polish version (UTF8) LANGUAGE="pl_PL:pl" @@ -552,15 +301,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Warsaw" ;; - pt-iso) - # Portuguese version - COUNTRY="pt" - LANG="pt_PT@euro" - KEYTABLE="pt-latin1" - XKEYBOARD="pt" - CHARSET="iso8859-1" - TZ="Europe/Lisbon" - ;; pt|pt-utf8) # Portuguese version (UTF8) LANGUAGE="pt_PT:pt" @@ -571,15 +311,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Lisbon" ;; - ru-iso) - # Russian version - COUNTRY="ru" - LANG="ru_RU.KOI8-R" - KEYTABLE="ru" - XKEYBOARD="ru" - CHARSET="koi8-r" - TZ="Europe/Moscow" - ;; ru|ru-utf8) # Russian version (UTF8) LANGUAGE="ru_RU:ru" @@ -590,16 +321,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Moscow" ;; - se-iso) - # Swedish version - LANGUAGE="sv_SE:sv" - COUNTRY="se" - LANG="sv_SE.iso885915" - KEYTABLE="se-latin1" - XKEYBOARD="se" - CHARSET="sv_SE.iso885915" - TZ="Europe/Stockholm" - ;; se|se-utf8) # Swedish version (UTF8) LANGUAGE="sv_SE:sv" @@ -610,16 +331,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Stockholm" ;; - sk-iso) - # Slovak version (guessed) - COUNTRY="sk" - LANG="sk" - KEYTABLE="sk-qwerty" - XKEYBOARD="sk" - CHARSET="iso8859-2" - TZ="Europe/Bratislava" - CHARMAP="iso02" - ;; sk|sk-utf8) # Slovak version (guessed) (UTF8) LANGUAGE="sk_SK:sk" @@ -630,17 +341,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Bratislava" ;; - sl-iso) - # Slovenian keyboard - LANGUAGE="sl" - COUNTRY="si" - LANG="sl_SI" - KEYTABLE="slovene" - XKEYBOARD="sl" - CHARSET="iso8859-2" - TZ="Europe/Ljubljana" - CHARMAP="iso02" - ;; sl|sl-utf8) # Slovenian keyboard (UTF8) LANGUAGE="sl_SI:sl" @@ -651,15 +351,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Ljubljana" ;; - tr-iso) - # Turkish version (guessed) - COUNTRY="tr" - LANG="tr_TR" - KEYTABLE="tr_q-latin5" - XKEYBOARD="tr" - CHARSET="iso8859-9" - TZ="Europe/Istanbul" - ;; tr|tr-utf8) # Turkish version (guessed) (UTF8) LANGUAGE="tr_TR" @@ -670,18 +361,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/Istanbul" ;; - tw-iso) - # Traditional Chinese version - COUNTRY="tw" - LANG="zh_TW.Big5" - LANGUAGE="zh_TW.Big5" - KEYTABLE="us" - XKEYBOARD="us" - # CHARSET="big5-0" - CHARSET="iso8859-1" - XMODIFIERS="@im=xcin" - TZ="Asia/Taipei" - ;; tw|tw-utf8) # Traditional Chinese version (UTF8) LANGUAGE="zh_TW:zh" @@ -694,16 +373,6 @@ case "$LANGUAGE" in XMODIFIERS="@im=xcin" TZ="Asia/Taipei" ;; - uk-iso) - # British version - COUNTRY="uk" - LANG="en_GB" - LANGUAGE="en" - KEYTABLE="uk" - XKEYBOARD="uk" - CHARSET="iso8859-1" - TZ="Europe/London" - ;; uk|uk-utf8) # British version (UTF8) LANGUAGE="en_GB:en" @@ -714,16 +383,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="Europe/London" ;; - us-iso) - # American version - LANGUAGE="en_US:en" - COUNTRY="us" - LANG="en_US.iso885915" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="en_US.iso885915" - TZ="America/New_York" - ;; us|us-utf8) # American version (UTF8) LANGUAGE="en_US:en" @@ -734,16 +393,6 @@ case "$LANGUAGE" in CHARSET="utf8" TZ="America/New_York" ;; - *) - # Default - LANGUAGE="us" - COUNTRY="at" - LANG="en_US.UTF-8" - KEYTABLE="us" - XKEYBOARD="us" - CHARSET="utf8" - TZ="UTC" - ;; esac ## END OF FILE ################################################################# diff --git a/config/files/GRMLBASE/usr/share/man/man8/grml-setlang.8 b/config/files/GRMLBASE/usr/share/man/man8/grml-setlang.8 index 5d9ec41a8..927939a3f 100644 --- a/config/files/GRMLBASE/usr/share/man/man8/grml-setlang.8 +++ b/config/files/GRMLBASE/usr/share/man/man8/grml-setlang.8 @@ -13,7 +13,7 @@ If you invoke grml-setlang without any further options you will get a dialog based configuration frontend. If you invoke grml-setlang with one option, grml-setlang will take the first option as input for regenerating /etc/default/locale according to the definitions in -/etc/grml/language-functions. If the provided option is not supported the +/usr/share/grml-autoconfig/language-functions. If the provided option is not supported the default (en_US) will be taken. .SH USAGE EXAMPLES .TP diff --git a/config/files/GRMLBASE/usr/share/zsh/vendor-completions/_grml-lang b/config/files/GRMLBASE/usr/share/zsh/vendor-completions/_grml-lang new file mode 100644 index 000000000..a37f98fdb --- /dev/null +++ b/config/files/GRMLBASE/usr/share/zsh/vendor-completions/_grml-lang @@ -0,0 +1,3 @@ +#compdef grml-lang + +compadd at ch de dvorak es fr hu it jp uk us diff --git a/config/files/LOCALES/etc/locale.gen b/config/files/LOCALES/etc/locale.gen index f7e14a1ad..906dfb79e 100644 --- a/config/files/LOCALES/etc/locale.gen +++ b/config/files/LOCALES/etc/locale.gen @@ -15,84 +15,35 @@ # change this file without affecting the use of debconf, however, since it # does read in your changes. -be_BY CP1251 be_BY@latin UTF-8 be_BY.UTF-8 UTF-8 -bg_BG CP1251 bg_BG.UTF-8 UTF-8 -da_DK ISO-8859-1 -da_DK.ISO-8859-15 ISO-8859-15 da_DK.UTF-8 UTF-8 -de_AT@euro ISO-8859-15 -de_AT ISO-8859-1 de_AT.UTF-8 UTF-8 -de_BE@euro ISO-8859-15 -de_BE ISO-8859-1 de_BE.UTF-8 UTF-8 -de_CH ISO-8859-1 de_CH.UTF-8 UTF-8 -de_DE@euro ISO-8859-15 -de_DE ISO-8859-1 de_DE.UTF-8 UTF-8 -el_GR ISO-8859-7 el_GR.UTF-8 UTF-8 -en_AU ISO-8859-1 en_AU.UTF-8 UTF-8 -en_GB ISO-8859-1 -en_GB.ISO-8859-15 ISO-8859-15 en_GB.UTF-8 UTF-8 -en_IE@euro ISO-8859-15 -en_IE ISO-8859-1 en_IE.UTF-8 UTF-8 -en_US ISO-8859-1 -en_US.ISO-8859-15 ISO-8859-15 en_US.UTF-8 UTF-8 -es_ES@euro ISO-8859-15 -es_ES ISO-8859-1 es_ES.UTF-8 UTF-8 -fi_FI@euro ISO-8859-15 -fi_FI ISO-8859-1 fi_FI.UTF-8 UTF-8 -fr_FR@euro ISO-8859-15 -fr_FR ISO-8859-1 fr_FR.UTF-8 UTF-8 -ga_IE@euro ISO-8859-15 -ga_IE ISO-8859-1 ga_IE.UTF-8 UTF-8 -he_IL ISO-8859-8 he_IL.UTF-8 UTF-8 -it_IT@euro ISO-8859-15 -it_IT ISO-8859-1 it_IT.UTF-8 UTF-8 -ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8 -nl_BE ISO-8859-1 nl_BE.UTF-8 UTF-8 -nl_BE@euro ISO-8859-15 -nl_NL@euro ISO-8859-15 -nl_NL ISO-8859-1 nl_NL.UTF-8 UTF-8 -pl_PL ISO-8859-2 pl_PL.UTF-8 UTF-8 -pt_BR ISO-8859-1 pt_BR.UTF-8 UTF-8 -pt_PT@euro ISO-8859-15 -pt_PT ISO-8859-1 pt_PT.UTF-8 UTF-8 -ru_RU.CP1251 CP1251 -ru_RU ISO-8859-5 -ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 -sk_SK ISO-8859-2 sk_SK.UTF-8 UTF-8 -sl_SI ISO-8859-2 sl_SI.UTF-8 UTF-8 -sv_SE ISO-8859-1 -sv_SE.ISO-8859-15 ISO-8859-15 sv_SE.UTF-8 UTF-8 -tr_TR ISO-8859-9 tr_TR.UTF-8 UTF-8 -zh_CN GB2312 zh_CN.UTF-8 UTF-8 -zh_TW BIG5 zh_TW.UTF-8 UTF-8 diff --git a/config/package_config/GRMLBASE b/config/package_config/GRMLBASE index 48c75a994..62537ce09 100644 --- a/config/package_config/GRMLBASE +++ b/config/package_config/GRMLBASE @@ -44,6 +44,7 @@ physlock resolvconf rsync strace +sudo udev usbutils uuid-runtime diff --git a/config/package_config/GRML_FULL b/config/package_config/GRML_FULL index 2819c735c..f7885ed8c 100644 --- a/config/package_config/GRML_FULL +++ b/config/package_config/GRML_FULL @@ -27,7 +27,6 @@ nullmailer passwd procps psmisc -sudo sysstat sysvinit-utils tree diff --git a/config/package_config/GRML_GHACI b/config/package_config/GRML_GHACI new file mode 100644 index 000000000..78f78dab4 --- /dev/null +++ b/config/package_config/GRML_GHACI @@ -0,0 +1,13 @@ +# Configuration for testing grml-live in CI builds. +# Install as few Debian packages as possible, +# we do not want to test *Debian*. + +PACKAGES install +locales +vim-tiny + +PACKAGES install AMD64 +linux-image-amd64 + +PACKAGES install ARM64 +linux-image-arm64 diff --git a/config/package_config/GRML_SMALL b/config/package_config/GRML_SMALL index d8124746f..0cacdc99c 100644 --- a/config/package_config/GRML_SMALL +++ b/config/package_config/GRML_SMALL @@ -19,7 +19,6 @@ ntpsec-ntpdate passwd procps psmisc -sudo sysvinit-utils tree tzdata diff --git a/config/scripts/GRMLBASE/01-autoconfig b/config/scripts/GRMLBASE/01-autoconfig index e2e066861..6378c4347 100755 --- a/config/scripts/GRMLBASE/01-autoconfig +++ b/config/scripts/GRMLBASE/01-autoconfig @@ -15,7 +15,6 @@ target=${target:?} fcopy -m root,root,0755 -v /etc/dhcp/dhclient-exit-hooks.d/grml-sethostname fcopy -M -v /etc/grml/autoconfig.local fcopy -M -v /etc/grml/autoconfig -fcopy -M -v /etc/grml/language-functions fcopy -M -v /etc/grml/modules fcopy -M -v /etc/grml/partconf @@ -24,12 +23,14 @@ fcopy -M -v /usr/lib/systemd/system/grml-autoconfig.service fcopy -M -v /usr/share/grml-autoconfig/autoconfig.functions fcopy -m root,root,0755 /usr/share/grml-autoconfig/grml-autoconfig +fcopy -m root,root,0644 /usr/share/grml-autoconfig/language-functions fcopy -m root,root,0755 /usr/share/grml-autoconfig/run-welcome fcopy -m root,root,0755 -v /usr/bin/restore-config fcopy -m root,root,0755 -v /usr/bin/save-config fcopy -m root,root,0755 -v /usr/sbin/grml-autoconfig fcopy -m root,root,0755 -v /usr/bin/grml-lang +fcopy -m root,root,0644 -v /usr/share/zsh/vendor-completions/_grml-lang fcopy -m root,root,0755 -v /usr/sbin/grml-setlang fcopy -m root,root,0644 -v /usr/share/man/man8/grml-setlang.8 diff --git a/templates/GRML/grml-cheatcodes.txt b/templates/GRML/grml-cheatcodes.txt index d7321b9cf..fc6cac82e 100644 --- a/templates/GRML/grml-cheatcodes.txt +++ b/templates/GRML/grml-cheatcodes.txt @@ -37,11 +37,12 @@ For example the X window system is not part of grml-small. Regional settings: ------------------ -grml lang=at|de|cn|da|es|fr|it Specify language ($LANG, $LC_ALL, $LANGUAGE - utf8) + keyboard -grml lang=nl|pl|ru|sk|tr|tw|us Specify language ($LANG, $LC_ALL, $LANGUAGE - utf8) + keyboard + +grml lang=at|ch|de|es|fr|hu|it Specify language ($LANG, $LC_ALL, $LANGUAGE) + keyboard +grml lang=jp|uk|us|dvorak Specify language ($LANG, $LC_ALL, $LANGUAGE) + keyboard grml localtime Assume Hardware Clock (RTC) is set in localtime (default: RTC is in UTC) grml tz=Europe/Vienna Use specified timezone for TZ, defaults to TZ=UTC -grml keyboard=us Use different keyboard layout +grml keyboard=us Use different keyboard layout (see list from lang=) Configuration settings: ----------------------- diff --git a/test/gha-build-iso.sh b/test/gha-build-iso.sh index 5061d11c2..991c3e8d9 100755 --- a/test/gha-build-iso.sh +++ b/test/gha-build-iso.sh @@ -8,19 +8,6 @@ set -euxo pipefail MODE=$1 -# Install as few Debian packages as possible, -# we do not want to test *Debian*. -cat > config/package_config/GRML_GHACI <build-gha-ci-test-config-initial <