Add keyboard layout and variant settings with gum

This commit is contained in:
Stephan Raabe 2023-11-20 17:47:51 +01:00
parent ae7383e88b
commit f8d647da94
5 changed files with 95 additions and 42 deletions

79
.install/keyboard.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
# ------------------------------------------------------
# Setup
# ------------------------------------------------------
echo -e "${GREEN}"
cat <<"EOF"
_ __ _ _
| |/ /___ _ _| |__ ___ __ _ _ __ __| |
| ' // _ \ | | | '_ \ / _ \ / _` | '__/ _` |
| . \ __/ |_| | |_) | (_) | (_| | | | (_| |
|_|\_\___|\__, |_.__/ \___/ \__,_|_| \__,_|
|___/
EOF
echo -e "${NONE}"
# Default layout and variants
keyboard_layout="us"
keyboard_variant=""
_setupKeyboardLayout() {
if gum confirm "Current keyboard layout: $keyboard_layout! Do you want to change it?" ;then
keyboard_layout=$(localectl list-x11-keymap-layouts | gum filter --placeholder "Select keyboard layout...")
echo ""
echo "Keyboard layout changed to $keyboard_layout"
elif [ $? -eq 130 ]; then
exit 130
fi
_setupKeyboardVariant
}
_setupKeyboardVariant() {
if gum confirm "Current keyboard variant: $keyboard_variant! Do you want to change it?" ;then
keyboard_variant=$(localectl list-x11-keymap-variants | gum filter --placeholder "Select keyboard variant...")
echo ""
echo "Keyboard layout changed to $keyboard_variant"
elif [ $? -eq 130 ]; then
exit 130
fi
echo ""
_confirmKeyboard
}
_confirmKeyboard() {
echo "Current selected keyboard setup:"
echo "Keyboard layout: $keyboard_layout"
echo "Keyboard variant: $keyboard_variant"
if gum confirm "Do you want proceed with this keyboard setup?" --affirmative "Proceed" --negative "Change" ;then
return 0
elif [ $? -eq 130 ]; then
exit 130
else
_setupKeyboardLayout
fi
}
if [ "$restored" == "1" ]; then
echo "You have already restored your settings into the new installation."
else
_confirmKeyboard
cp .install/templates/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/keyboard.conf
cp .install/templates/keyboard.py ~/dotfiles-versions/$version/qtile/conf/keyboard.py
SEARCH="\"KEYBOARD_LAYOUT\""
REPLACE="\"$keyboard_layout\""
sed -i "s/$SEARCH/$REPLACE/g" ~/dotfiles-versions/$version/hypr/conf/keyboard.conf
SEARCH="\"KEYBOARD_LAYOUT\""
REPLACE="\"$keyboard_layout\""
sed -i "s/$SEARCH/$REPLACE/g" ~/dotfiles-versions/$version/qtile/conf/keyboard.py
SEARCH="\"KEYBOARD_VARIANT\""
REPLACE="\"$keyboard_variant\""
sed -i "s/$SEARCH/$REPLACE/g" ~/dotfiles-versions/$version/hypr/conf/keyboard.conf
echo ""
echo "Keyboard setup updated successfully."
fi

View File

@ -1,41 +0,0 @@
# ------------------------------------------------------
# Setup
# ------------------------------------------------------
echo -e "${GREEN}"
cat <<"EOF"
____ _
/ ___| ___| |_ _ _ _ __
\___ \ / _ \ __| | | | '_ \
___) | __/ |_| |_| | |_) |
|____/ \___|\__|\__,_| .__/
|_|
EOF
echo -e "${NONE}"
if [ "$restored" == "1" ]; then
echo "You have already restored your settings into the new installation."
else
while true; do
read -p "Do you want to set your keyboard layout? (Yy/Nn): " yn
case $yn in
[Yy]* )
read -p "Enter your preferred keyboard layout (us,de,...) (default:us): " keyboard
if [ -z "$keyboard" ]; then
keyboard="us"
fi
SEARCH="kb_layout = us"
REPLACE="kb_layout = $keyboard"
sed -i "s/$SEARCH/$REPLACE/g" ~/dotfiles-versions/$version/hypr/conf/keyboard.conf
SEARCH="keyboard_layout = \"us\""
REPLACE="keyboard_layout = \"$keyboard\""
sed -i "s/$SEARCH/$REPLACE/g" ~/dotfiles-versions/$version/qtile/conf/keyboard.py
break;;
[Nn]* )
break;;
* ) echo "Please answer yes or no.";;
esac
done
fi
echo ""

View File

@ -0,0 +1,12 @@
# -----------------------------------------------------
# Keyboard Layout
# -----------------------------------------------------
input {
kb_layout = "KEYBOARD_LAYOUT"
kb_variant = "KEYBOARD_VARIANT"
follow_mouse = 1
touchpad {
natural_scroll = false
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

View File

@ -0,0 +1,3 @@
# Setup global keyboard layout here
keyboard_layout = "KEYBOARD_LAYOUT"

View File

@ -59,7 +59,7 @@ source .install/wallpaper.sh
source .install/disabledm.sh
source .install/issue.sh
source .install/restore.sh
source .install/setup.sh
source .install/keyboard.sh
source .install/copy.sh
source .install/config-folder.sh
source .install/init-pywal.sh