2023-02-27 21:18:25 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
# written by Tobias Powalowski <tpowa@archlinux.org>
|
2023-07-17 08:43:20 +02:00
|
|
|
. /usr/lib/archboot/basic-common.sh
|
2023-07-17 08:48:21 +02:00
|
|
|
_TITLE="Archboot ${_RUNNING_ARCH} | Basic Setup | Localization"
|
2023-02-27 21:18:25 +01:00
|
|
|
|
2023-07-21 15:15:42 +02:00
|
|
|
_locale_menu() {
|
2023-02-27 21:18:25 +01:00
|
|
|
_LOCALE=""
|
2023-03-05 14:05:51 +01:00
|
|
|
_LOCALES="en_US English de_DE German es_ES Spanish fr_FR French pt_PT Portuguese OTHER Other"
|
2023-03-05 14:37:59 +01:00
|
|
|
_OTHER_LOCALES="be_BY Belarusian bg_BG Bulgarian cs_CZ Czech da_DK Dansk fi_FI Finnish el_GR Greek hu_HU Hungarian it_IT Italian lt_LT Lithuanian lv_LV Latvian mk_MK Macedonian nl_NL Dutch nn_NO Norwegian pl_PL Polish ro_RO Romanian ru_RU Russian sk_SK Slovak sr_RS Serbian sv_SE Swedish uk_UA Ukrainian"
|
2023-02-27 21:18:25 +01:00
|
|
|
_CANCEL=""
|
|
|
|
#shellcheck disable=SC2086
|
2023-07-21 11:03:27 +02:00
|
|
|
_dialog --cancel-label "Exit" --title " Locale " --menu "" 12 35 5 ${_LOCALES} 2>${_ANSWER} || _abort
|
2023-02-27 21:18:25 +01:00
|
|
|
_LOCALE=$(cat ${_ANSWER})
|
2023-03-05 14:05:51 +01:00
|
|
|
if [[ "${_LOCALE}" == "OTHER" ]]; then
|
|
|
|
#shellcheck disable=SC2086
|
2023-07-21 11:03:27 +02:00
|
|
|
if _dialog --cancel-label "Back" --title " Other Locale " --menu "" 17 35 11 ${_OTHER_LOCALES} 2>${_ANSWER}; then
|
2023-07-14 16:44:30 +02:00
|
|
|
_LOCALE=$(cat ${_ANSWER})
|
|
|
|
else
|
|
|
|
_LOCALE=""
|
|
|
|
fi
|
2023-03-05 14:05:51 +01:00
|
|
|
fi
|
2023-02-27 21:18:25 +01:00
|
|
|
}
|
|
|
|
|
2023-07-21 14:50:27 +02:00
|
|
|
_vconsole_keymap() {
|
2023-07-21 14:59:02 +02:00
|
|
|
_LIST_MAPS="localectl list-keymaps --no-pager"
|
2023-07-21 14:50:27 +02:00
|
|
|
_KEYMAPS="us de es fr pt be bg br ca cz dk et fi gr hu it l lv mk nl no pl ro ru sk sr sv uk"
|
|
|
|
_LOW_LOCALE="$(echo ${_LOCALE} | tr A-Z a-z)"
|
|
|
|
_KEYMAP=""
|
2023-07-21 14:59:02 +02:00
|
|
|
for i in ${_KEYMAPS}; do
|
2023-07-21 15:02:34 +02:00
|
|
|
echo "${_LOW_LOCALE}" | grep -q "${i}" && _KEYMAP="${i}"
|
2023-07-21 14:50:27 +02:00
|
|
|
[[ -n ${_KEYMAP} ]] && break
|
|
|
|
done
|
2023-07-21 14:59:02 +02:00
|
|
|
_KEYMAPS=""
|
2023-07-21 15:16:37 +02:00
|
|
|
for i in $(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep -v 'olpc' | grep -v 'mobii' | grep -v 'alt' |\
|
|
|
|
grep -v '^carpalx' | grep -v 'defkey' | grep -v 'mac' | grep -v 'amiga' |\
|
|
|
|
grep -v 'sun' | grep -v 'atari'); do
|
2023-07-21 14:59:02 +02:00
|
|
|
_KEYMAPS="${_KEYMAPS} ${i} -"
|
|
|
|
done
|
|
|
|
#shellcheck disable=SC2086
|
2023-07-21 15:04:33 +02:00
|
|
|
if _dialog --cancel-label "Back" --title " Keymap Layout " --menu "" 13 40 7 ${_KEYMAPS} 2>${_ANSWER}; then
|
2023-07-21 14:59:02 +02:00
|
|
|
#shellcheck disable=SC2086
|
|
|
|
_KEYMAP=$(cat ${_ANSWER})
|
|
|
|
else
|
2023-07-21 15:04:33 +02:00
|
|
|
_LOCALE=""
|
2023-07-21 14:59:02 +02:00
|
|
|
fi
|
2023-07-21 14:50:27 +02:00
|
|
|
}
|
|
|
|
|
2023-07-21 15:15:42 +02:00
|
|
|
_vconsole() {
|
2023-07-21 15:07:04 +02:00
|
|
|
# Terminus font size detection
|
|
|
|
if grep -q '^FONT=.*32' /etc/vconsole.conf; then
|
|
|
|
_FONT="ter-v32n"
|
|
|
|
else
|
|
|
|
_FONT="ter-v16n"
|
|
|
|
fi
|
2023-07-21 14:50:27 +02:00
|
|
|
_dialog --infobox "Setting vconsole font ${_FONT} and keymap ${_KEYMAP}..." 3 80
|
|
|
|
echo KEYMAP="${_KEYMAP}" > /etc/vconsole.conf
|
|
|
|
echo FONT="${_FONT}" >> /etc/vconsole.conf
|
|
|
|
systemctl restart systemd-vconsole-setup
|
|
|
|
sleep 3
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2023-07-21 15:07:04 +02:00
|
|
|
_localize() {
|
|
|
|
_dialog --infobox "Localization set to ${_LOCALE}.UTF-8..." 3 50
|
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /etc/locale.conf
|
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /.localize
|
|
|
|
echo LC_COLLATE=C >> /etc/locale.conf
|
|
|
|
localectl set-locale "${_LOCALE}.UTF-8" &>/dev/null
|
|
|
|
sed -i -e "s:^[a-z]:#&:g" /etc/locale.gen
|
|
|
|
sed -i -e "s:^#${_LOCALE}.UTF-8:${_LOCALE}.UTF-8:g" /etc/locale.gen
|
|
|
|
locale-gen &>/dev/null
|
|
|
|
sleep 3
|
|
|
|
_dialog --infobox "Localization completed successfully." 3 40
|
|
|
|
sleep 3
|
|
|
|
}
|
|
|
|
|
2023-07-17 09:18:53 +02:00
|
|
|
_check
|
2023-02-27 21:18:25 +01:00
|
|
|
while [[ -z ${_LOCALE} ]]; do
|
2023-07-21 15:15:42 +02:00
|
|
|
_locale_menu
|
2023-07-21 15:04:33 +02:00
|
|
|
_vconsole_keymap
|
2023-02-27 21:18:25 +01:00
|
|
|
done
|
2023-07-21 14:50:27 +02:00
|
|
|
_vconsole
|
2023-07-14 10:22:11 +02:00
|
|
|
_localize
|
2023-07-17 09:18:53 +02:00
|
|
|
_cleanup
|
2023-02-27 21:18:25 +01:00
|
|
|
# vim: set ts=4 sw=4 et:
|