Fix setting locale

master
Dmitry Razumov 1 month ago
parent a81aa05421
commit 49e40fc0bc
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -26,6 +26,9 @@ get_path_grub2(){
[[ -w ${PATH_GRUB} ]] && PATH_GRUB="${PATH_GRUB%/*}" || return 1
}
control_grub_var_cfg(){
local STR_SET=${1}
local STR_SET_VALUE=${2}
local STR_EXPORT=${3}
if [[ -n ${STR_SET_VALUE} ]]; then
grep -q "${STR_EXPORT}" ${FILE_GRUB_VAR_USER} 2>/dev/null || echo -e "${STR_EXPORT}" >> ${FILE_GRUB_VAR_USER}
if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then
@ -42,16 +45,14 @@ control_grub_var_cfg(){
fi
}
exec_grub_lang(){
local STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="${@%%_*}" || STR_SET_VALUE="${LANG%%_*}"
STR_SET="set lang="
STR_EXPORT="export lang"
[[ -n $(cmdline_value lang) ]] || control_grub_var_cfg
[[ -n $(cmdline_value lang) || ${STR_SET_VALUE} == @("C"|"C.UTF-8"|"POSIX") ]] || control_grub_var_cfg "set LANG=" "${STR_SET_VALUE}" "export LANG"
}
exec_grub_timeout(){
local STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TIMEOUT}"
STR_SET="set timeout="
STR_EXPORT="export timeout"
control_grub_var_cfg
control_grub_var_cfg "set timeout=" "${STR_SET_VALUE}" "export timeout"
}
exec_grub_default(){
[[ -n $@ ]] && GRUB_DEFAULT="$@"
@ -68,12 +69,12 @@ EOF
fi
}
exec_grub_superusers(){
local STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_SUPERUSERS}"
STR_SET="set superusers="
STR_EXPORT="export superusers"
control_grub_var_cfg
control_grub_var_cfg "set superusers=" "${STR_SET_VALUE}" "export superusers"
}
exec_grub_password(){
local STR_SET STR_SET_VALUE
[[ -n $@ ]] && GRUB_PASSWORD="$@"
if [[ -n ${GRUB_PASSWORD[0]} ]]; then
[[ -n ${GRUB_SUPERUSERS} ]] || return 1
@ -105,12 +106,12 @@ exec_grub_password(){
fi
}
exec_grub_boot_silent(){
local STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_BOOT_SILENT}"
STR_SET="set BOOT_SILENT="
STR_EXPORT="export BOOT_SILENT"
control_grub_var_cfg
control_grub_var_cfg "set BOOT_SILENT=" "${STR_SET_VALUE}" "export BOOT_SILENT"
}
exec_grub_terminal_input(){
local STR_SET STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_INPUT}"
STR_SET="terminal_input "
if [[ -n ${STR_SET_VALUE} ]]; then
@ -131,6 +132,7 @@ exec_grub_terminal_input(){
fi
}
exec_grub_terminal_output(){
local STR_SET STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_OUTPUT}"
STR_SET="terminal_output "
if [[ -n ${STR_SET_VALUE} ]]; then
@ -146,6 +148,7 @@ exec_grub_terminal_output(){
fi
}
exec_grub_play(){
local STR_SET STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_PLAY}"
STR_SET="play "
if [[ -n ${STR_SET_VALUE} ]]; then
@ -161,34 +164,31 @@ exec_grub_play(){
fi
}
exec_grub_cmdline_linux(){
local STR_SET_VALUE
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_CMDLINE_LINUX}"
STR_SET="set CMDLINE_LINUX="
STR_EXPORT="export CMDLINE_LINUX"
control_grub_var_cfg
control_grub_var_cfg "set CMDLINE_LINUX=" "${STR_SET_VALUE}" "export CMDLINE_LINUX"
}
exec_grub_vmlinuz_file(){
local STR_SET_VALUE
[[ -z ${KERNEL_BOOT} ]] || return 0
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_VMLINUZ_FILE}"
STR_SET="set VMLINUZ_FILE="
STR_EXPORT="export VMLINUZ_FILE"
control_grub_var_cfg
control_grub_var_cfg "set VMLINUZ_FILE=" "${STR_SET_VALUE}" "export VMLINUZ_FILE"
}
exec_grub_ublinux_file(){
local STR_SET_VALUE
[[ -z ${KERNEL_BOOT} ]] || return 0
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_UBLINUX_FILE}"
STR_SET="set UBLINUX_FILE="
STR_EXPORT="export UBLINUX_FILE"
control_grub_var_cfg
control_grub_var_cfg "set UBLINUX_FILE=" "${STR_SET_VALUE}" "export UBLINUX_FILE"
}
exec_grub_addon_file(){
local STR_SET_VALUE
[[ -z ${KERNEL_BOOT} ]] || return 0
[[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_ADDON_FILE}"
STR_SET="set ADDON_FILE="
STR_EXPORT="export ADDON_FILE"
control_grub_var_cfg
control_grub_var_cfg "set ADDON_FILE=" "${STR_SET_VALUE}" "export ADDON_FILE"
}
exec_grub_kernel_boot(){
# По указанному имени пакета в параметре KERNEL_BOOT= находим каталог с ядром и устаналиваем переменные в GRUB
local STR_SET_VALUE
[[ -n $@ ]] && PKG_KERNEL_NAME="$@" || PKG_KERNEL_NAME="${KERNEL_BOOT}"
PATH_KERNEL="/usr/lib/modules"
PKG_KERNEL_PATH=$(grep -Rlx ${PATH_KERNEL}/*/pkgbase -e "${PKG_KERNEL_NAME}")
@ -202,9 +202,9 @@ exec_grub_kernel_boot(){
STR_SET_VALUE_UBLINUX=""
STR_SET_VALUE_ADDOD=""
fi
STR_SET_VALUE="${STR_SET_VALUE_VMLINUZ}"; STR_SET="set VMLINUZ_FILE="; STR_EXPORT="export VMLINUZ_FILE"; control_grub_var_cfg
STR_SET_VALUE="${STR_SET_VALUE_UBLINUX}"; STR_SET="set UBLINUX_FILE="; STR_EXPORT="export UBLINUX_FILE"; control_grub_var_cfg
STR_SET_VALUE="${STR_SET_VALUE_ADDOD}"; STR_SET="set ADDON_FILE="; STR_EXPORT="export ADDON_FILE"; control_grub_var_cfg
STR_SET_VALUE="${STR_SET_VALUE_VMLINUZ}"; control_grub_var_cfg "set VMLINUZ_FILE=" "${STR_SET_VALUE}" "export VMLINUZ_FILE"
STR_SET_VALUE="${STR_SET_VALUE_UBLINUX}"; control_grub_var_cfg "set UBLINUX_FILE=" "${STR_SET_VALUE}" "export UBLINUX_FILE"
STR_SET_VALUE="${STR_SET_VALUE_ADDOD}"; control_grub_var_cfg "set ADDON_FILE=" "${STR_SET_VALUE}" "export ADDON_FILE"
}
################

@ -14,7 +14,7 @@ copy_newkernel_to_boot(){
# Найти все файлы ядра и initramfs. Еслии новее по дате модификации в системе, то заменить загрузочные
mountpoint --quiet "${PATH_BOOT}" || return 0
find ${PATH_KERNEL} -maxdepth 2 \( -name "vmlinuz-*.*.*-*" -o -name "ublinux-*.*.*-*" -o -name "addon-*.*.*-*" \) -print | while read FIND_FILE; do
local DTIME_FIND_FILE=$(stat -c'%Y' $(readlink -e ${FIND_FILE} 2>/dev/null))
local DTIME_FIND_FILE=$(stat -c'%Y' $(readlink -e ${FIND_FILE} 2>/dev/null))
[[ -e ${PATH_BOOT}/${FIND_FILE##*/} ]] && local DTIME_BOOT_FILE=$(stat -c'%Y' ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) || local DTIME_BOOT_FILE=0
[[ ${DTIME_FIND_FILE} =~ ^[0-9]+$ && ${DTIME_BOOT_FILE} =~ ^[0-9]+$ ]] && [[ ${DTIME_FIND_FILE} -gt ${DTIME_BOOT_FILE} ]] \
&& cp -aL "${FIND_FILE}" "${PATH_BOOT}/" && chown root:root "${PATH_BOOT}/${FIND_FILE##*/}" && chmod 400 "${PATH_BOOT}/${FIND_FILE##*/}"
@ -41,7 +41,7 @@ exec_prepare_menu_kernel(){
VMLINUZ_FILE="vmlinuz-\${VMLINUZ_VER}"
UBLINUX_FILE="ublinux-\${VMLINUZ_VER}"
[[ -f ${PATH_BOOT}/addon-${VMLINUZ_VER} ]] && ADDON_FILE="addon-\${VMLINUZ_VER}" || ADDON_FILE=""
DATA_BOOTMENU_KERNEL+=\
DATA_BOOTMENU_KERNEL+=\
" menuentry \$\"Change the kernel version\"\": ${VMLINUZ_VER}\" --unrestricted {
VMLINUZ_VER=\"${VMLINUZ_VER}\"
VMLINUZ_FILE=\"${VMLINUZ_FILE}\"
@ -51,16 +51,16 @@ exec_prepare_menu_kernel(){
export VMLINUZ_FILE
export UBLINUX_FILE
export ADDON_FILE
configfile \${prefix}/ublinux/grub_main.cfg
configfile \${PATH_DISTR_GRUB}/grub_main.cfg
}
"
fi
done
if [[ -n ${DATA_BOOTMENU_KERNEL} ]]; then
DATA_BOOTMENU_KERNEL+=\
" if [ -f \${prefix}/ublinux/grub_main.cfg ]; then
" if [ -f \${PATH_DISTR_GRUB}/grub_main.cfg ]; then
menuentry \$\"Return\" --unrestricted {
configfile \${prefix}/ublinux/grub_main.cfg
configfile \${PATH_DISTR_GRUB}/grub_main.cfg
}
fi"
[[ -f ${FILE_BOOTMENU_KERNEL} ]] && [[ "$(< ${FILE_BOOTMENU_KERNEL})" == "${DATA_BOOTMENU_KERNEL}" ]] || echo "${DATA_BOOTMENU_KERNEL}" > "${FILE_BOOTMENU_KERNEL}"

@ -28,37 +28,39 @@ shopt -s extglob
# По сокращённому имени, вернуть полное имя, пример 'get_fullname_lang en' : en_US.UTF-8
get_fullname_lang(){
local NEWLANG=$1
local LANG_NEW=$1
[[ -r ${ROOTFS}/usr/share/i18n/SUPPORTED ]] && local SUPPORTED=$(< ${ROOTFS}/usr/share/i18n/SUPPORTED)
# Из за того, что нет en_EN, а через груб прилетает просто en, то выбираем en_US.UTF-8
[[ ${NEWLANG} == "en" ]] && NEWLANG="en_US.UTF-8"
if [[ ${SUPPORTED} =~ ($'\n'|^)"${NEWLANG} ".*($'\n'|$) ]]; then
echo "${NEWLANG}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${NEWLANG,,}_${NEWLANG^^}.UTF-8 ".*($'\n'|$) ]]; then
echo "${NEWLANG,,}_${NEWLANG^^}.UTF-8"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${NEWLANG,,}_${NEWLANG^^} ".*($'\n'|$) ]]; then
echo "${NEWLANG,,}_${NEWLANG^^}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${NEWLANG}.UTF-8 ".*($'\n'|$) ]]; then
echo "${NEWLANG}.UTF-8"
elif [[ ${SUPPORTED} =~ ($'\n'|^)("${NEWLANG,,}_"[:A-Z:]+".UTF-8")" ".*($'\n'|$) ]]; then
echo "${BASH_REMATCH[2]}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)("${NEWLANG,,}_"[:A-Z:]+)" ".*($'\n'|$) ]]; then
echo "${BASH_REMATCH[2]}"
if [[ ${LANG_NEW} == @("en"|"") ]]; then
echo "en_US.UTF-8"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${LANG_NEW} ".*($'\n'|$) ]]; then
echo "${LANG_NEW}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${LANG_NEW,,}_${LANG_NEW^^}.UTF-8 ".*($'\n'|$) ]]; then
echo "${LANG_NEW,,}_${LANG_NEW^^}.UTF-8"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${LANG_NEW,,}_${LANG_NEW^^} ".*($'\n'|$) ]]; then
echo "${LANG_NEW,,}_${LANG_NEW^^}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)"${LANG_NEW}.UTF-8 ".*($'\n'|$) ]]; then
echo "${LANG_NEW}.UTF-8"
elif [[ ${SUPPORTED} =~ ($'\n'|^)("${LANG_NEW,,}_"[:A-Z:]+".UTF-8")" ".*($'\n'|$) ]]; then
echo "${BASH_REMATCH[2]}"
elif [[ ${SUPPORTED} =~ ($'\n'|^)("${LANG_NEW,,}_"[:A-Z:]+)" ".*($'\n'|$) ]]; then
echo "${BASH_REMATCH[2]}"
else
echo "en_US.UTF-8"
echo "en_US.UTF-8"
fi
}
exec_01_set_locale(){
local NEWLANG=$(cmdline_value lang)
if [[ -n ${NEWLANG} && -n ${ROOTFS} ]]; then
LANG="$(get_fullname_lang ${NEWLANG})"
[[ ${LOCALE} =~ (^|,)${LANG}(,|$) ]] || LOCALE+=",${LANG}"
[[ -f ${SYSCONF}/locale ]] && sed "/^LOCALE=/d" -i "${SYSCONF}/locale"
echo "LOCALE=${LOCALE}" >> "${SYSCONF}/locale"
else
LANG=$(get_fullname_lang ${LANG})
[[ ${LOCALE} =~ (^|,)${LANG}(,|$) ]] || LOCALE+=",${LANG}"
# Не учитываем нстройку LOCALE из env ядра, при отсутствии в конфигурации
[[ -f ${SYSCONF}/locale && $(< ${SYSCONF}/locale) =~ (^|$'\n')LOCALE=\"?\'?([^$'\n'\"\']+)\"?\'?($'\n'|$) ]] && LOCALE=${BASH_REMATCH[2]} || LOCALE=
local LANG_NEW=$(cmdline_value lang)
# Если работает в initramf при загрузке и параметр ядра задан, то используем заданный параметр. Иначе из текущего окружения ${LANG}
[[ -n ${LANG_NEW} && -n ${ROOTFS} ]] && LANG_NEW="$(get_fullname_lang ${LANG_NEW})" || LANG_NEW=$(get_fullname_lang ${LANG})
if [[ ! -f ${SYSCONF}/locale ]] || [[ ! "${LOCALE}" =~ (^|,)${LANG_NEW}(,|$) ]]; then
LOCALE=${LOCALE:-en_US.UTF-8}
[[ ${LANG_NEW} == @("C.UTF-8"|"POSIX"|"C") ]] || LOCALE="${LOCALE:+${LOCALE},}${LANG_NEW}"
[[ -f ${SYSCONF}/locale ]] && sed "/^LOCALE=/d" -i "${SYSCONF}/locale"
echo "LOCALE=\"${LOCALE}\"" >> "${SYSCONF}/locale"
fi
# Проверка локалий в системе, и если не совпадают, то генерация
[[ -n ${FORCE_LOCARCHIVE} ]] && FORCEGEN=1
@ -67,47 +69,47 @@ exec_01_set_locale(){
LOCALE_SYSTEM=$(${CMD_CHROOT} localedef --list-archive | sort -fu); LOCALE_SYSTEM=${LOCALE_SYSTEM,,}
[[ "${LOCALE_CONF}" == "${LOCALE_SYSTEM}" ]] || FORCEGEN=1
if [[ -n ${FORCEGEN} ]]; then
# Комментируем все локализации
sed -E "s/^([^#]+)/#\1/g" -i ${ROOTFS}/etc/locale.gen
# Открываем комменарии нужных локалий
for SELECT_LOCALE in ${LOCALE//@(,|;)/ }; do
[[ -n ${SELECT_LOCALE} ]] || continue
sed -E "s/^#${SELECT_LOCALE} /${SELECT_LOCALE} /g" -i ${ROOTFS}/etc/locale.gen
done
# Генерируем локаль
${CMD_CHROOT} locale-gen &>/dev/null
# Комментируем все локализации
sed -E "s/^([^#]+)/#\1/g" -i ${ROOTFS}/etc/locale.gen
# Открываем комменарии нужных локалий
for SELECT_LOCALE in ${LOCALE//@(,|;)/ }; do
[[ -n ${SELECT_LOCALE} ]] || continue
sed -E "s/^#${SELECT_LOCALE} /${SELECT_LOCALE} /g" -i ${ROOTFS}/etc/locale.gen
done
# Генерируем локаль
${CMD_CHROOT} locale-gen &>/dev/null
fi
}
exec_02_set_lang(){
SOURCE=${SYSCONF}/locale; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
local NEWLANG=$(cmdline_value lang)
if [[ -n ${NEWLANG} && -n ${ROOTFS} ]]; then
LANG="$(get_fullname_lang ${NEWLANG})"
[[ -f ${SYSCONF}/locale ]] && sed "/^LANG=/d" -i "${SYSCONF}/locale"
echo "LANG=${LANG}" >> "${SYSCONF}/locale"
else
LANG=$(get_fullname_lang ${LANG})
# Не учитываем нстройку LANG из env
[[ -f ${SYSCONF}/locale && $(< ${SYSCONF}/locale) =~ (^|$'\n')LANG=\"?\'?([^$'\n'\"\']+)\"?\'?($'\n'|$) ]] && LANG=${BASH_REMATCH[2]} || LANG=
local LANG_NEW=$(cmdline_value lang)
[[ -n ${LANG_NEW} && -n ${ROOTFS} ]] && LANG_NEW="$(get_fullname_lang ${LANG_NEW})" || LANG_NEW=$(get_fullname_lang ${LANG})
[[ ${LANG_NEW} == @("C.UTF-8"|"POSIX"|"C") ]] && LANG_NEW="en_US.UTF-8"
if [[ ! -f ${SYSCONF}/locale ]] || [[ ! "${LANG}" == "${LANG_NEW}" ]]; then
[[ -f ${SYSCONF}/locale ]] && sed "/^LANG=/d" -i "${SYSCONF}/locale"
echo "LANG=\"${LANG_NEW}\"" >> "${SYSCONF}/locale"
fi
# Проверка выбранного языка в системе, и если не совпадает, то устанавливаем
if [[ -r ${ROOTFS}/etc/locale.conf && ! $(< ${ROOTFS}/etc/locale.conf) =~ (^|$'\n')"LANG=${LANG}"($'\n'|$) ]]; then
# Устанавливаем локаль
${CMD_CHROOT} env LANG="${LANG}" LANGUAGE="${LANG}" LC_CTYPE="${LANG}" LC_NUMERIC="${LANG}" \
LC_TIME="${LANG}" LC_COLLATE="${LANG}" LC_MONETARY="${LANG}" LC_MESSAGES="${LANG}" LC_PAPER="${LANG}" \
LC_NAME="${LANG}" LC_ADDRESS="${LANG}" LC_TELEPHONE="${LANG}" LC_MEASUREMENT="${LANG}" \
LC_IDENTIFICATION="${LANG}" locale > ${ROOTFS}/etc/locale.conf 2>/dev/null
if [[ -w ${ROOTFS}/etc/locale.conf && ! $(< ${ROOTFS}/etc/locale.conf) =~ (^|$'\n')"LANG=${LANG_NEW}"($'\n'|$) ]] || [[ ! -f ${ROOTFS}/etc/locale.conf ]]; then
# Устанавливаем локаль
${CMD_CHROOT} env LANG="${LANG_NEW}" LANGUAGE="${LANG_NEW}" LC_CTYPE="${LANG_NEW}" LC_NUMERIC="${LANG_NEW}" \
LC_TIME="${LANG_NEW}" LC_COLLATE="${LANG_NEW}" LC_MONETARY="${LANG_NEW}" LC_MESSAGES="${LANG_NEW}" LC_PAPER="${LANG_NEW}" \
LC_NAME="${LANG_NEW}" LC_ADDRESS="${LANG_NEW}" LC_TELEPHONE="${LANG_NEW}" LC_MEASUREMENT="${LANG_NEW}" \
LC_IDENTIFICATION="${LANG_NEW}" locale > ${ROOTFS}/etc/locale.conf 2>/dev/null
[[ -n ${ROOTFS} ]] || set_lang_live
[[ -n ${ROOTFS} ]] || set_lang_live
fi
#; unset LANG; source /etc/profile.d/locale.sh"
# Если имеются языкозависимые файлы, то копируем в корень
[[ -d ${ROOTFS}/usr/share/ublinux/langs/${LANG} ]] && cp -pfr ${ROOTFS}/usr/share/ublinux/langs/${LANG}/* ${ROOTFS}/
[[ -d ${ROOTFS}/usr/share/ublinux/langs/${LANG_NEW} ]] && cp -pfr ${ROOTFS}/usr/share/ublinux/langs/${LANG_NEW}/* ${ROOTFS}/
}
set_lang_live(){
if [[ $(readlink -fq /usr/bin/init 2>/dev/null) =~ "lib/systemd/systemd"$ ]]; then
systemctl daemon-reexec
systemctl daemon-reexec
fi
}
@ -126,65 +128,65 @@ exec_03_set_vconsole(){
"
local VCONSOLE_FILE="${ROOTFS}/etc/vconsole.conf"
if [[ -n ${CONSOLE_FONT} ]]; then
SET_VCONSOLE+="FONT=${CONSOLE_FONT}"$'\n'
SET_VCONSOLE+="FONT=${CONSOLE_FONT}"$'\n'
elif [[ -n ${CONSOLE_FONT[${LANG%%_*}]} ]]; then
SET_VCONSOLE+="FONT=${CONSOLE_FONT[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT=${CONSOLE_FONT[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
SET_VCONSOLE+="FONT=${CONSOLE_FONT[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT=${CONSOLE_FONT[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
fi
if [[ -n ${CONSOLE_FONT_MAP} ]]; then
SET_VCONSOLE+="FONT_MAP=${CONSOLE_FONT_MAP}"$'\n'
SET_VCONSOLE+="FONT_MAP=${CONSOLE_FONT_MAP}"$'\n'
elif [[ -n ${CONSOLE_FONT_MAP[${LANG%%_*}]} ]]; then
SET_VCONSOLE+="FONT_MAP=${CONSOLE_FONT_MAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT_MAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT_MAP=${CONSOLE_FONT_MAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
SET_VCONSOLE+="FONT_MAP=${CONSOLE_FONT_MAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT_MAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT_MAP=${CONSOLE_FONT_MAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
fi
if [[ -n ${CONSOLE_FONT_UNIMAP} ]]; then
SET_VCONSOLE+="FONT_UNIMAP=${CONSOLE_FONT_UNIMAP}"$'\n'
SET_VCONSOLE+="FONT_UNIMAP=${CONSOLE_FONT_UNIMAP}"$'\n'
elif [[ -n ${CONSOLE_FONT_UNIMAP[${LANG%%_*}]} ]]; then
SET_VCONSOLE+="FONT_UNIMAP=${CONSOLE_FONT_UNIMAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT_UNIMAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT_UNIMAP=${CONSOLE_FONT_UNIMAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
SET_VCONSOLE+="FONT_UNIMAP=${CONSOLE_FONT_UNIMAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_FONT_UNIMAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_FONT_UNIMAP=${CONSOLE_FONT_UNIMAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
fi
if [[ -n ${CONSOLE_KEYMAP} ]]; then
SET_VCONSOLE+="KEYMAP=${CONSOLE_KEYMAP}"$'\n'
SET_VCONSOLE+="KEYMAP=${CONSOLE_KEYMAP}"$'\n'
elif [[ -n ${CONSOLE_KEYMAP[${LANG%%_*}]} ]]; then
SET_VCONSOLE+="KEYMAP=${CONSOLE_KEYMAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_KEYMAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_KEYMAP=${CONSOLE_KEYMAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
SET_VCONSOLE+="KEYMAP=${CONSOLE_KEYMAP[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_KEYMAP=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_KEYMAP=${CONSOLE_KEYMAP[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
fi
if [[ -n ${CONSOLE_KEYMAP_TOGGLE} ]]; then
SET_VCONSOLE+="KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE}"$'\n'
SET_VCONSOLE+="KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE}"$'\n'
elif [[ -n ${CONSOLE_KEYMAP_TOGGLE[${LANG%%_*}]} ]]; then
SET_VCONSOLE+="KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_KEYMAP_TOGGLE=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
SET_VCONSOLE+="KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE[${LANG%%_*}]}"$'\n'
[[ -f ${SYSCONF}/keyboard ]] && sed "/^CONSOLE_KEYMAP_TOGGLE=/d" -i "${SYSCONF}/keyboard"
echo "CONSOLE_KEYMAP_TOGGLE=${CONSOLE_KEYMAP_TOGGLE[${LANG%%_*}]}" >> "${SYSCONF}/keyboard"
fi
[[ -z ${XKBLAYOUT} ]] || SET_VCONSOLE+="XKBLAYOUT=${XKBLAYOUT}"$'\n'
[[ -z ${XKBMODEL} ]] || SET_VCONSOLE+="XKBMODEL=${XKBMODEL}"$'\n'
[[ -z ${XKBVARIANT} ]] || SET_VCONSOLE+="XKBVARIANT=${XKBVARIANT}"$'\n'
[[ -z ${XKBOPTIONS} ]] || SET_VCONSOLE+="XKBOPTIONS=${XKBOPTIONS}"$'\n'
if [[ -n "${CONSOLE_FONT}${CONSOLE_KEYMAP}${CONSOLE_KEYMAP_TOGGLE}" ]]; then
if [[ -f "${VCONSOLE_FILE}" ]]; then
if [[ ! "$(< ${VCONSOLE_FILE})" == "${SET_VCONSOLE}" ]]; then
echo -n "${SET_VCONSOLE}" > "${VCONSOLE_FILE}"
[[ -n ${ROOTFS} ]] || set_vconsole_live
fi
else
echo -n "${SET_VCONSOLE}" > "${VCONSOLE_FILE}"
[[ -n ${ROOTFS} ]] || set_vconsole_live
fi
if [[ -f "${VCONSOLE_FILE}" ]]; then
if [[ ! "$(< ${VCONSOLE_FILE})" == "${SET_VCONSOLE}" ]]; then
echo -n "${SET_VCONSOLE}" > "${VCONSOLE_FILE}"
[[ -n ${ROOTFS} ]] || set_vconsole_live
fi
else
echo -n "${SET_VCONSOLE}" > "${VCONSOLE_FILE}"
[[ -n ${ROOTFS} ]] || set_vconsole_live
fi
fi
}
set_vconsole_live(){
if [[ $(readlink -fq /usr/bin/init 2>/dev/null) =~ "lib/systemd/systemd"$ ]]; then
#systemctl --quiet start systemd-vconsole-setup.service
/usr/lib/systemd/systemd-vconsole-setup
#systemctl --quiet start systemd-vconsole-setup.service
/usr/lib/systemd/systemd-vconsole-setup
else
#setfont ?
#loadkeys ?
true
#setfont ?
#loadkeys ?
true
fi
}

Loading…
Cancel
Save