diff --git a/Makefile b/Makefile index bf741d1..a484592 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ BIN = \ bin/manjaro-architect LIBS = \ - lib/ini_val.sh \ + lib/ini_val.sh \ lib/util.sh \ lib/util-advanced.sh \ lib/util-base.sh \ diff --git a/data/menu_layout b/data/menu_layout index c19ebaf..e5d3d76 100644 --- a/data/menu_layout +++ b/data/menu_layout @@ -1,7 +1,6 @@ Main Menu │ ├── Prepare -│ ├── keymap │ ├── show devices │ ├── partition │ ├── luks diff --git a/lib/util-base.sh b/lib/util-base.sh index b8d4faf..bcda6e7 100644 --- a/lib/util-base.sh +++ b/lib/util-base.sh @@ -538,35 +538,6 @@ run_mkinitcpio() { check_for_error "$FUNCNAME" "$?" } -# virtual console keymap -set_keymap() { - KEYMAPS="" - for i in $(ls -R /usr/share/kbd/keymaps | grep "map.gz" | sed 's/\.map\.gz//g' | sort); do - KEYMAPS="${KEYMAPS} ${i} -" - done - - DIALOG " $_VCKeymapTitle " --menu "\n$_VCKeymapBody\n " 20 40 16 ${KEYMAPS} 2>${ANSWER} || return 0 - KEYMAP=$(cat ${ANSWER}) - - 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}') - # Choose terminus font size depending on resolution - if [[ $biggest_resolution -gt 1920 ]]; then - FONT=ter-124n - elif [[ $biggest_resolution -eq 1920 ]]; then - FONT=ter-118n - else - FONT=ter-114n - fi - ini linux.font "$FONT" - echo -e "KEYMAP=${KEYMAP}\nFONT=${FONT}" > /tmp/vconsole.conf - echo -e "consolefont=\"${FONT}\"" > /tmp/consolefont -} - # locale array generation code adapted from the Manjaro 0.8 installer set_locale() { LOCALES="" diff --git a/lib/util-menu.sh b/lib/util-menu.sh index f2f81d6..7b776e8 100644 --- a/lib/util-menu.sh +++ b/lib/util-menu.sh @@ -53,30 +53,27 @@ prep_menu() { local PARENT="$FUNCNAME" declare -i loopmenu=1 while ((loopmenu)); do - submenu 7 - DIALOG " $_PrepMenuTitle " --default-item ${HIGHLIGHT_SUB} --menu "\n " 0 0 7 \ - "1" "$_VCKeymapTitle" \ - "2" "$_DevShowOpt" \ - "3" "$_PrepPartDisk" \ - "4" "$_PrepLUKS" \ - "5" "$_PrepLVM $_PrepLVM2" \ - "6" "$_PrepMntPart" \ - "7" "$_Back" 2>${ANSWER} + submenu 6 + DIALOG " $_PrepMenuTitle " --default-item ${HIGHLIGHT_SUB} --menu "\n$_PrepMenuBody\n " 0 0 6 \ + "1" "$_DevShowOpt" \ + "2" "$_PrepPartDisk" \ + "3" "$_PrepLUKS" \ + "4" "$_PrepLVM $_PrepLVM2" \ + "5" "$_PrepMntPart" \ + "6" "$_Back" 2>${ANSWER} HIGHLIGHT_SUB=$(cat ${ANSWER}) case $(cat ${ANSWER}) in - "1") set_keymap + "1") show_devices ;; - "2") show_devices - ;; - "3") umount_partitions + "2") umount_partitions select_device && create_partitions ;; - "4") luks_menu + "3") luks_menu ;; - "5") lvm_menu + "4") lvm_menu ;; - "6") mount_partitions + "5") mount_partitions ;; *) loopmenu=0 return 0 diff --git a/lib/util.sh b/lib/util.sh index cd9abad..1a6aaa9 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -21,6 +21,7 @@ NW_CMD="" # command to launch the available network client # Locale and Language LANGSEL="/tmp/.language" +KEYSEL="/tmp/.keymap" CURR_LOCALE="en_US.UTF-8" # Default Locale FONT="" # Set new font if necessary KEYMAP="us" # Virtual console keymap. Default is "us" @@ -210,6 +211,7 @@ check_for_error() { # 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 [[ $(cat ${LANGSEL} 2>/dev/null) == "" ]]; then DIALOG " Select Language " --default-item '3' --menu "\n " 0 0 11 \ "1" $"Danish|(da_DK)" \ @@ -243,7 +245,7 @@ select_language() { ;; "6") source $DATADIR/translations/hungarian.trans CURR_LOCALE="hu_HU.UTF-8" - FONT="ter-216n" + fl="2" ;; "7") source $DATADIR/translations/italian.trans CURR_LOCALE="it_IT.UTF-8" @@ -256,7 +258,7 @@ select_language() { ;; "10") source $DATADIR/translations/russian.trans CURR_LOCALE="ru_RU.UTF-8" - FONT="ter-u16n" + fl="u" ;; "11") source $DATADIR/translations/spanish.trans CURR_LOCALE="es_ES.UTF-8" @@ -265,21 +267,52 @@ select_language() { ;; esac + if [[ $(cat ${KEYSEL} 2>/dev/null) == "" ]]; then + set_keymap + fi + # Generate the chosen locale and set the language DIALOG " $_Config " --infobox "\n$_ApplySet\n " 0 0 - sleep 2 sed -i "s/#${CURR_LOCALE}/${CURR_LOCALE}/" /etc/locale.gen locale-gen >/dev/null 2>$ERR export LANG=${CURR_LOCALE} check_for_error "set LANG=${CURR_LOCALE}" $? ini system.lang "$CURR_LOCALE" +} - [[ $FONT != "" ]] && { - setfont $FONT 2>$ERR - check_for_error "set font $FONT" $? - ini system.font "$FONT" - } +# virtual console keymap and font +set_keymap() { + KEYMAPS="" + for i in $(ls -R /usr/share/kbd/keymaps | grep "map.gz" | sed 's/\.map\.gz//g' | sort); do + KEYMAPS="${KEYMAPS} ${i} -" + done + + DIALOG " $_VCKeymapTitle " --menu "$_VCKeymapBody" 20 40 16 ${KEYMAPS} 2>${KEYSEL} || return 0 + KEYMAP=$(cat ${KEYSEL}) + + 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}') + # Choose terminus font size depending on resolution + if [[ $biggest_resolution -gt 1920 ]]; then + fs="24" + elif [[ $biggest_resolution -eq 1920 ]]; then + fs="18" + else + fs="16" + fi + 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" } mk_connection() {