archboot/usr/bin/archboot-km.sh

130 lines
4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-2.0-only
2008-10-20 22:39:25 +02:00
# written by Tobias Powalowski <tpowa@archlinux.org>
2023-01-08 08:57:51 +01:00
_ANSWER="/tmp/.km"
2023-03-02 17:58:58 +01:00
_TITLE="Archboot Arch Linux --> Console Font And Keymap Setting"
2023-01-09 08:57:23 +01:00
_LIST_MAPS="localectl list-keymaps --no-pager"
# _dialog()
# an el-cheapo dialog wrapper
#
# parameters: see dialog(1)
# returns: whatever dialog did
_dialog() {
dialog --backtitle "${_TITLE}" --aspect 15 "$@"
return $?
}
_abort()
2008-10-20 22:39:25 +02:00
{
2023-01-08 22:03:15 +01:00
_dialog --yesno "Abort Console Font And Keymap Setting?" 6 42 || return 0
2022-11-25 21:03:18 +01:00
[[ -e /tmp/.km-running ]] && rm /tmp/.km-running
2011-02-04 18:15:22 +01:00
clear
exit 1
2008-10-20 22:39:25 +02:00
}
2023-01-09 08:57:23 +01:00
_abort_dialog() {
2023-01-08 08:57:51 +01:00
if [[ "${_CANCEL}" = "1" ]]; then
_S_NEXTITEM="1"
2022-11-27 19:43:38 +01:00
return 1
fi
}
2022-11-28 08:27:14 +01:00
2023-01-09 08:57:23 +01:00
_do_vconsole() {
2023-01-19 08:04:48 +01:00
_dialog --infobox "Setting console font ${_FONT} and keymap ${_KEYMAP}..." 3 80
2023-01-08 08:57:51 +01:00
echo KEYMAP="${_KEYMAP}" > /etc/vconsole.conf
echo FONT="${_FONT}" >> /etc/vconsole.conf
systemctl restart systemd-vconsole-setup
2022-11-28 09:09:23 +01:00
sleep 2
2022-11-27 19:23:06 +01:00
}
2023-01-09 08:57:23 +01:00
_set_vconsole() {
2023-01-29 18:15:21 +01:00
if grep -q '^FONT=.*32' /etc/vconsole.conf; then
2023-01-26 19:59:31 +01:00
_FONTS="ter-v32n Worldwide latarcyrheb-sun32 Worldwide"
else
2023-01-26 19:59:31 +01:00
_FONTS="ter-v16n Worldwide latarcyrheb-sun16 Worldwide eurlatgr Europe"
2011-02-04 18:15:22 +01:00
fi
2023-03-07 17:37:25 +01:00
_CANCEL=
#shellcheck disable=SC2086
2023-03-07 18:02:17 +01:00
_dialog --menu " Select Console Font:\n\n Font Name Region" 12 40 14 ${_FONTS} 2>${_ANSWER} || _CANCEL=1
2023-03-07 17:37:25 +01:00
_abort_dialog || return 1
#shellcheck disable=SC2086
_FONT=$(cat ${_ANSWER})
2022-11-28 08:27:14 +01:00
# get list of 2 sign locale
# ${KEYMAP} | grep -v '...' | grep "^[a-z]"
2023-03-04 19:53:47 +01:00
_KEYMAPS="us English de German es Spanish fr French pt Portuguese OTHER More"
2023-03-05 14:37:59 +01:00
_OTHER_KEYMAPS="be Belarusian bg Bulgarian br Brazil ca Canada cz Czech dk Dansk et Estonian fi Finnish gr Greek hu Hungarian it Italian lt Lithuanian lv Latvian mk Macedonian nl Dutch no Norwegian pl Polish ro Romanian ru Russian sk Slovak sr Serbian sv Swedish uk Ukrainian"
2023-01-08 08:57:51 +01:00
_CANCEL=""
2022-11-28 08:27:14 +01:00
#shellcheck disable=SC2086
2023-03-07 17:56:52 +01:00
_dialog --menu "Select A Keymap Region:" 13 30 7 ${_KEYMAPS} 2>${_ANSWER} || _CANCEL="1"
2023-01-08 08:57:51 +01:00
_KEYMAP=$(cat ${_ANSWER})
if [[ "${_KEYMAP}" == "OTHER" ]]; then
2022-11-28 08:27:14 +01:00
#shellcheck disable=SC2086
2023-03-07 17:56:52 +01:00
_dialog --menu "Select A Keymap Region:" 18 30 12 ${_OTHER_KEYMAPS} 2>${_ANSWER} || _CANCEL="1"
2023-01-08 08:57:51 +01:00
_KEYMAP=$(cat ${_ANSWER})
2022-11-28 08:27:14 +01:00
fi
2023-01-09 08:57:23 +01:00
_abort_dialog || return 1
2023-01-08 08:57:51 +01:00
_KEYMAPS=""
2023-01-09 09:05:40 +01:00
for i in $(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep -v '^carpalx' | grep -v 'defkey' | grep -v 'mac' | grep -v 'amiga' | grep -v 'sun' | grep -v 'atari'); do
2023-01-08 08:57:51 +01:00
_KEYMAPS="${_KEYMAPS} ${i} -"
2022-11-28 08:27:14 +01:00
done
2023-01-08 08:57:51 +01:00
_CANCEL=""
2022-11-28 08:27:14 +01:00
#shellcheck disable=SC2086
2023-01-08 22:03:15 +01:00
_dialog --menu "Select A Keymap Layout:" 14 30 8 ${_KEYMAPS} 2>${_ANSWER} || _CANCEL="1"
2023-01-09 08:57:23 +01:00
_abort_dialog || return 1
2022-11-28 08:27:14 +01:00
#shellcheck disable=SC2086
2023-01-08 08:57:51 +01:00
_KEYMAP=$(cat ${_ANSWER})
_S_NEXTITEM=2
2008-10-20 22:39:25 +02:00
}
2023-01-09 09:05:40 +01:00
_mainmenu() {
2023-01-08 08:57:51 +01:00
if [[ -n "${_S_NEXTITEM}" ]]; then
_DEFAULT="--default-item ${_S_NEXTITEM}"
2011-02-04 18:15:22 +01:00
else
2023-01-08 08:57:51 +01:00
_DEFAULT=""
2011-02-04 18:15:22 +01:00
fi
2022-01-26 11:38:16 +01:00
#shellcheck disable=SC2086
2023-01-08 22:03:15 +01:00
_dialog ${_DEFAULT} --backtitle "${_TITLE}" --title " MAIN MENU " \
2022-11-28 08:44:55 +01:00
--menu "Use the UP and DOWN arrows to navigate menus.\nUse TAB to switch between buttons and ENTER to select." 10 58 12 \
2022-11-28 08:33:18 +01:00
"1" "Set Console Font And Keymap" \
2023-01-08 08:57:51 +01:00
"2" "${EXIT}" 2>${_ANSWER}
2022-11-26 17:48:52 +01:00
#shellcheck disable=SC2086
2023-01-08 08:57:51 +01:00
case $(cat ${_ANSWER}) in
2011-02-04 18:15:22 +01:00
"1")
2023-01-09 08:57:23 +01:00
_set_vconsole || return 1
_do_vconsole
2011-02-04 18:15:22 +01:00
;;
"2")
[[ -e /tmp/.km-running ]] && rm /tmp/.km-running
2011-02-04 18:15:22 +01:00
clear
exit 0 ;;
*)
2023-01-09 08:57:23 +01:00
_abort ;;
2011-02-04 18:15:22 +01:00
esac
2008-10-20 22:39:25 +02:00
}
if [[ -e /tmp/.km-running ]]; then
2011-02-04 18:15:22 +01:00
echo "km already runs on a different console!"
echo "Please remove /tmp/.km-running first to launch tz!"
exit 1
2008-10-20 22:39:25 +02:00
fi
: >/tmp/.km-running
2022-11-28 08:56:43 +01:00
if [[ "${1}" = "--setup" ]]; then
2023-01-09 08:57:23 +01:00
if ! _set_vconsole; then
2022-11-28 09:04:00 +01:00
[[ -e /tmp/.km-running ]] && rm /tmp/.km-running
clear
exit 1
fi
2022-11-28 09:06:52 +01:00
[[ -e /tmp/.km-running ]] && rm /tmp/.km-running
clear
2023-01-09 08:57:23 +01:00
_do_vconsole
2022-11-28 09:05:33 +01:00
exit 0
2022-11-28 08:56:43 +01:00
else
EXIT="Exit"
fi
2008-12-17 12:09:15 +01:00
while true; do
2023-01-09 08:57:23 +01:00
_mainmenu
2008-10-20 22:39:25 +02:00
done
clear
exit 0
2011-02-04 18:15:22 +01:00
# vim: set ts=4 sw=4 et: