diff --git a/bin/manjaro-architect.in b/bin/manjaro-architect.in index bf2db3a..ca985ed 100644 --- a/bin/manjaro-architect.in +++ b/bin/manjaro-architect.in @@ -34,7 +34,7 @@ fi [[ $1 == "-d" ]] && declare -i debug=1 id_system -select_language +set_language mk_connection check_requirements greeting diff --git a/lib/util.sh b/lib/util.sh index e275de6..589a4b9 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -206,80 +206,21 @@ check_for_error() { fi } -# Add locale on-the-fly and sets source translation file for installer -select_language() { - fl="1" # terminus-font variation supporting most languages, to be processed in set_keymap() - if [[ ! $(grep lang /var/log/m-a.ini 2>/dev/null) ]]; then - DIALOG " Select Language " --default-item '3' --menu "\n " 0 0 11 \ - "1" $"Danish|(da_DK)" \ - "2" $"Dutch|(nl_NL)" \ - "3" $"English|(en_**)" \ - "4" $"French|(fr_FR)" \ - "5" $"German|(de_DE)" \ - "6" $"Hungarian|(hu_HU)" \ - "7" $"Italian|(it_IT)" \ - "8" $"Portuguese|(pt_PT)" \ - "9" $"Portuguese [Brasil]|(pt_BR)" \ - "10" $"Russian|(ru_RU)" \ - "11" $"Spanish|(es_ES)" 2>${ANSWER} - - case $(cat ${ANSWER}) in - "1") source $DATADIR/translations/danish.trans - CURR_LOCALE="da_DK.UTF-8" - KEYMAP="dk" - ;; - "2") source $DATADIR/translations/dutch.trans - CURR_LOCALE="nl_NL.UTF-8" - KEYMAP="nl" - ;; - "3") source $DATADIR/translations/english.trans - CURR_LOCALE="en_US.UTF-8" - KEYMAP="us" - ;; - "4") source $DATADIR/translations/french.trans - CURR_LOCALE="fr_FR.UTF-8" - KEYMAP="fr" - ;; - "5") source $DATADIR/translations/german.trans - CURR_LOCALE="de_DE.UTF-8" - KEYMAP="de" - ;; - "6") source $DATADIR/translations/hungarian.trans - CURR_LOCALE="hu_HU.UTF-8" - KEYMAP="hu" - fl="2" - ;; - "7") source $DATADIR/translations/italian.trans - CURR_LOCALE="it_IT.UTF-8" - KEYMAP="it" - ;; - "8") source $DATADIR/translations/portuguese.trans - CURR_LOCALE="pt_PT.UTF-8" - KEYMAP="pt-latin1" - ;; - "9") source $DATADIR/translations/portuguese_brasil.trans - CURR_LOCALE="pt_BR.UTF-8" - KEYMAP="pt-latin1" - ;; - "10") source $DATADIR/translations/russian.trans - CURR_LOCALE="ru_RU.UTF-8" - KEYMAP="ru" - fl="u" - ;; - "11") source $DATADIR/translations/spanish.trans - CURR_LOCALE="es_ES.UTF-8" - KEYMAP="es" - ;; - *) clear && exit 0 - ;; - esac +set_language() { + if [[ ! $(grep font /var/log/m-a.ini 2>/dev/null) ]]; then + select_language else CURR_LOCALE="$(grep lang /var/log/m-a.ini | cut -d' ' -f3)" - fi + KEYMAP="$(grep keymap /var/log/m-a.ini | cut -d' ' -f3)" + FONT="$(grep font /var/log/m-a.ini | cut -d' ' -f3)" + TRANS="$(grep translation /var/log/m-a.ini | cut -d' ' -f3)" + import $DATADIR/translations/$TRANS.trans - [[ $(grep keymap /var/log/m-a.ini 2>/dev/null) ]] && KEYMAP="$(grep keymap /var/log/m-a.ini | cut -d' ' -f3)" || set_keymap + # does user want to change the old settings? + DIALOG " $_SelLang " --yesno "\nLanguage: [ ${TRANS} ]\n Keymap: [ ${KEYMAP} ].\n\n${_Change}?\n " 0 0 && select_language + fi - # Generate the chosen locale and set the language + # Generate locale and set language DIALOG " $_Config " --infobox "\n$_ApplySet\n " 0 0 sed -i "s/#${CURR_LOCALE}/${CURR_LOCALE}/" /etc/locale.gen locale-gen >/dev/null 2>$ERR @@ -287,21 +228,94 @@ select_language() { check_for_error "set LANG=${CURR_LOCALE}" $? ini system.lang "$CURR_LOCALE" -} - -# virtual console keymap and font -set_keymap() { - DIALOG " $_VCKeymapTitle " --yesno "\n$_DefKeymap [ ${KEYMAP} ].\n${_Change}?\n " 0 0 && select_keymap loadkeys $KEYMAP 2>$ERR check_for_error "loadkeys $KEYMAP" "$?" ini linux.keymap "$KEYMAP" - # set keymap for openrc too - echo "keymap=\"$KEYMAP\"" > /tmp/keymap - biggest_resolution=$(head -n 1 /sys/class/drm/card*/*/modes | awk -F'[^0-9]*' '{print $1}' | awk 'BEGIN{a= 0}{if ($1>a) a=$1 fi} END{print a}') + setfont $FONT 2>$ERR + check_for_error "set font $FONT" $? + ini system.font "$FONT" - # Choose terminus font size depending on resolution + # store settings for re-use in target install ## to be accomplished via ini in the future + echo -e "KEYMAP=${KEYMAP}\nFONT=${FONT}" > /tmp/vconsole.conf + echo -e "consolefont=\"${FONT}\"" > /tmp/consolefont + echo -e "keymap=\"$KEYMAP\"" > /tmp/keymap +} + +# set locale, keymap and font and source translation file for installer +select_language() { + fl="1" # terminus-font variation supporting most languages, to be processed in set_keymap() + DIALOG " Select Language " --default-item '3' --menu "\n " 0 0 11 \ + "1" $"Danish|(da_DK)" \ + "2" $"Dutch|(nl_NL)" \ + "3" $"English|(en_**)" \ + "4" $"French|(fr_FR)" \ + "5" $"German|(de_DE)" \ + "6" $"Hungarian|(hu_HU)" \ + "7" $"Italian|(it_IT)" \ + "8" $"Portuguese|(pt_PT)" \ + "9" $"Portuguese [Brasil]|(pt_BR)" \ + "10" $"Russian|(ru_RU)" \ + "11" $"Spanish|(es_ES)" 2>${ANSWER} + + case $(cat ${ANSWER}) in + "1") TRANS="danish" + CURR_LOCALE="da_DK.UTF-8" + KEYMAP="dk" + ;; + "2") TRANS="dutch" + CURR_LOCALE="nl_NL.UTF-8" + KEYMAP="nl" + ;; + "3") TRANS="english" + CURR_LOCALE="en_US.UTF-8" + KEYMAP="us" + ;; + "4") TRANS="french" + CURR_LOCALE="fr_FR.UTF-8" + KEYMAP="fr" + ;; + "5") TRANS="german" + CURR_LOCALE="de_DE.UTF-8" + KEYMAP="de" + ;; + "6") TRANS="hungarian" + CURR_LOCALE="hu_HU.UTF-8" + KEYMAP="hu" + fl="2" + ;; + "7") TRANS="italian" + CURR_LOCALE="it_IT.UTF-8" + KEYMAP="it" + ;; + "8") TRANS="portuguese" + CURR_LOCALE="pt_PT.UTF-8" + KEYMAP="pt-latin1" + ;; + "9") TRANS="portuguese_brasil" + CURR_LOCALE="pt_BR.UTF-8" + KEYMAP="pt-latin1" + ;; + "10") TRANS="russian" + CURR_LOCALE="ru_RU.UTF-8" + KEYMAP="ru" + fl="u" + ;; + "11") TRANS="spanish" + CURR_LOCALE="es_ES.UTF-8" + KEYMAP="es" + ;; + *) clear && exit 0 + ;; + esac + + # source translation file + import $DATADIR/translations/$TRANS.trans + ini translation "$TRANS" + + # adjust terminus font size depending on resolution + biggest_resolution=$(head -n 1 /sys/class/drm/card*/*/modes | awk -F'[^0-9]*' '{print $1}' | awk 'BEGIN{a= 0}{if ($1>a) a=$1 fi} END{print a}') if [[ $biggest_resolution -gt 1920 ]]; then fs="24" elif [[ $biggest_resolution -eq 1920 ]]; then @@ -312,12 +326,9 @@ set_keymap() { FONT="ter-${fl}${fs}n" ini linux.font "$FONT" - echo -e "KEYMAP=${KEYMAP}\nFONT=${FONT}" > /tmp/vconsole.conf - echo -e "consolefont=\"${FONT}\"" > /tmp/consolefont - setfont $FONT 2>$ERR - check_for_error "set font $FONT" $? - ini system.font "$FONT" + # does user want to change the default keymap? + DIALOG " $_VCKeymapTitle " --yesno "\n$_DefKeymap [ ${KEYMAP} ].\n\n${_Change}?\n " 0 0 && select_keymap } select_keymap() {