diff options
| author | Ja.KooLit <jimmielovejay@gmail.com> | 2023-12-08 00:31:54 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-08 00:31:54 +0900 |
| commit | 42b449c2bf2c54c5b3f7658f166197dcadf5cd3d (patch) | |
| tree | 5aaa03534a95efa95358f4745f9863a1a892e011 /config/hypr/scripts/SwitchKeyboardLayout.sh | |
| parent | 55a3cfbd7974bca5e8545f28bb4b6bcec1b69342 (diff) | |
| parent | 0d5617b7f25101bdfee905106eaa898e4dc4f93f (diff) | |
Merge pull request #54 from JaKooLit/main
update from mainstream
Diffstat (limited to 'config/hypr/scripts/SwitchKeyboardLayout.sh')
| -rwxr-xr-x | config/hypr/scripts/SwitchKeyboardLayout.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/config/hypr/scripts/SwitchKeyboardLayout.sh b/config/hypr/scripts/SwitchKeyboardLayout.sh new file mode 100755 index 00000000..e7c56b42 --- /dev/null +++ b/config/hypr/scripts/SwitchKeyboardLayout.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +layout_f="$HOME/.cache/kb_layout" +settings_file="$HOME/.config/hypr/configs/Settings.conf" + +# Check if ~/.cache/kb_layout exists and create it with a default layout from Settings.conf if not found +if [ ! -f "$layout_f" ]; then + default_layout=$(grep 'kb_layout=' "$settings_file" | cut -d '=' -f 2 | cut -d ',' -f 1 2>/dev/null) + if [ -z "$default_layout" ]; then + default_layout="us" # Default to 'us' layout if Settings.conf or 'kb_layout' is not found + fi + echo "$default_layout" > "$layout_f" +fi + +current_layout=$(cat "$layout_f") + +# Read keyboard layout settings from Settings.conf +if [ -f "$settings_file" ]; then + kb_layout_line=$(grep 'kb_layout=' "$settings_file" | cut -d '=' -f 2) + IFS=',' read -ra layout_mapping <<< "$kb_layout_line" +fi + +layout_count=${#layout_mapping[@]} + +# Find the index of the current layout in the mapping +for ((i = 0; i < layout_count; i++)); do + if [ "$current_layout" == "${layout_mapping[i]}" ]; then + current_index=$i + break + fi +done + +# Calculate the index of the next layout +next_index=$(( (current_index + 1) % layout_count )) +new_layout="${layout_mapping[next_index]}" + +# Update the keyboard layout +hyprctl keyword input:kb_layout "$new_layout" +echo "$new_layout" > "$layout_f" |
