archboot/usr/bin/archboot-locale.sh

66 lines
2.2 KiB
Bash
Raw Normal View History

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>
_ANSWER="/tmp/.locale"
2023-06-29 19:49:08 +02:00
_RUNNING_ARCH="$(uname -m)"
2023-06-30 08:22:43 +02:00
_TITLE="Archboot ${_RUNNING_ARCH} | Arch Linux Setup | System Wide Locale Setting"
2023-02-27 21:18:25 +01:00
# _dialog()
# an el-cheapo dialog wrapper
#
# parameters: see dialog(1)
# returns: whatever dialog did
_dialog() {
dialog --backtitle "${_TITLE}" --aspect 15 "$@"
return $?
}
2023-07-13 16:03:02 +02:00
_abort() {
2023-03-02 18:11:17 +01:00
_dialog --yesno "Abort Arch Linux System Wide Locale Setting?" 5 60 || return 0
2023-02-27 21:18:25 +01:00
[[ -e /tmp/.locale-running ]] && rm /tmp/.locale-running
2023-03-03 07:15:47 +01:00
[[ -e /tmp/.locale ]] && rm /tmp/.locale
2023-03-03 07:14:07 +01:00
clear
2023-02-27 21:18:25 +01:00
exit 1
}
_do_locale() {
2023-03-03 08:19:32 +01:00
_dialog --infobox "Setting System Wide Locale ${_LOCALE}.UTF-8..." 3 50
2023-02-27 21:18:25 +01:00
echo "LANG=${_LOCALE}.UTF-8" > /etc/locale.conf
2023-02-27 21:29:06 +01:00
echo "LANG=${_LOCALE}.UTF-8" > /tmp/.locale
2023-02-27 21:18:25 +01:00
echo LC_COLLATE=C >> /etc/locale.conf
2023-03-01 14:28:43 +01:00
localectl set-locale "${_LOCALE}.UTF-8" &>/dev/null
2023-03-10 21:03:42 +01:00
sed -i -e "s:^[a-z]:#&:g" /etc/locale.gen
sed -i -e "s:^#${_LOCALE}.UTF-8:${_LOCALE}.UTF-8:g" /etc/locale.gen
2023-03-01 14:28:43 +01:00
locale-gen &>/dev/null
2023-02-27 21:18:25 +01:00
sleep 2
}
_set_locale() {
_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-03-05 14:35:30 +01:00
_dialog --menu "Select A System Wide Locale:" 13 35 6 ${_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-06-30 21:43:39 +02:00
_dialog --menu "Select A System Wide Locale:" 18 35 12 ${_OTHER_LOCALES} 2>${_ANSWER} || _abort
2023-03-05 14:05:51 +01:00
_LOCALE=$(cat ${_ANSWER})
fi
2023-02-27 21:18:25 +01:00
}
if [[ -e /tmp/.locale-running ]]; then
echo "System Wide Locale Setting already runs on a different console!"
2023-02-27 21:29:06 +01:00
echo "Please remove /tmp/.locale-running first!"
2023-02-27 21:18:25 +01:00
exit 1
fi
: >/tmp/.locale-running
while [[ -z ${_LOCALE} ]]; do
_set_locale
done
_do_locale
[[ -e /tmp/.locale-running ]] && rm /tmp/.locale-running
2023-03-03 07:14:07 +01:00
clear
2023-02-27 21:18:25 +01:00
exit 0
# vim: set ts=4 sw=4 et: