From 7612539f21326332250c906cdf78fdb97bec9a1c Mon Sep 17 00:00:00 2001 From: Don Williams Date: Tue, 23 Dec 2025 23:17:12 -0500 Subject: Switch KB layout updated for new location System settings move to hypr/configs/Systemsettings On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/SwitchKeyboardLayout.sh modified: config/hypr/scripts/Tak0-Per-Window-Switch.sh --- config/hypr/scripts/SwitchKeyboardLayout.sh | 79 ++++++++++++++--------------- 1 file changed, 39 insertions(+), 40 deletions(-) (limited to 'config/hypr/scripts/SwitchKeyboardLayout.sh') diff --git a/config/hypr/scripts/SwitchKeyboardLayout.sh b/config/hypr/scripts/SwitchKeyboardLayout.sh index 18a9517e..34d008a1 100755 --- a/config/hypr/scripts/SwitchKeyboardLayout.sh +++ b/config/hypr/scripts/SwitchKeyboardLayout.sh @@ -3,24 +3,23 @@ # This is for changing kb_layouts. Set kb_layouts in $settings_file layout_file="$HOME/.cache/kb_layout" -settings_file="$HOME/.config/hypr/UserConfigs/UserSettings.conf" +settings_file="$HOME/.config/hypr/configs/SystemSettings.conf" notif_icon="$HOME/.config/swaync/images/ja.png" # Refined ignore list with patterns or specific device names ignore_patterns=( - "--(avrcp)" - "Bluetooth Speaker" + "--(avrcp)" + "Bluetooth Speaker" "Other Device Name" - ) - +) # Create layout file with default layout if it does not exist if [ ! -f "$layout_file" ]; then echo "Creating layout file..." default_layout=$(grep 'kb_layout = ' "$settings_file" | cut -d '=' -f 2 | tr -d '[:space:]' | cut -d ',' -f 1 2>/dev/null) default_layout=${default_layout:-"us"} # Default to 'us' layout - echo "$default_layout" > "$layout_file" + echo "$default_layout" >"$layout_file" echo "Default layout set to $default_layout" fi @@ -32,7 +31,7 @@ if [ -f "$settings_file" ]; then kb_layout_line=$(grep 'kb_layout = ' "$settings_file" | cut -d '=' -f 2) # Remove leading and trailing spaces around each layout kb_layout_line=$(echo "$kb_layout_line" | tr -d '[:space:]') - IFS=',' read -r -a layout_mapping <<< "$kb_layout_line" + IFS=',' read -r -a layout_mapping <<<"$kb_layout_line" else echo "Settings file not found!" exit 1 @@ -49,56 +48,56 @@ for ((i = 0; i < layout_count; i++)); do fi done -next_index=$(( (current_index + 1) % layout_count )) +next_index=$(((current_index + 1) % layout_count)) new_layout="${layout_mapping[next_index]}" echo "Next layout: $new_layout" # Function to get keyboard names get_keyboard_names() { - hyprctl devices -j | jq -r '.keyboards[].name' + hyprctl devices -j | jq -r '.keyboards[].name' } # Function to check if a device matches any ignore pattern is_ignored() { - local device_name=$1 - for pattern in "${ignore_patterns[@]}"; do - if [[ "$device_name" == *"$pattern"* ]]; then - return 0 # Device matches ignore pattern - fi - done - return 1 # Device does not match any ignore pattern + local device_name=$1 + for pattern in "${ignore_patterns[@]}"; do + if [[ "$device_name" == *"$pattern"* ]]; then + return 0 # Device matches ignore pattern + fi + done + return 1 # Device does not match any ignore pattern } # Function to change keyboard layout change_layout() { - local error_found=false - - while read -r name; do - if is_ignored "$name"; then - echo "Skipping ignored device: $name" - continue - fi - - echo "Switching layout for $name to $new_layout..." - hyprctl switchxkblayout "$name" "$next_index" - if [ $? -ne 0 ]; then - echo "Error while switching layout for $name." >&2 - error_found=true - fi - done <<< "$(get_keyboard_names)" - - $error_found && return 1 - return 0 + local error_found=false + + while read -r name; do + if is_ignored "$name"; then + echo "Skipping ignored device: $name" + continue + fi + + echo "Switching layout for $name to $new_layout..." + hyprctl switchxkblayout "$name" "$next_index" + if [ $? -ne 0 ]; then + echo "Error while switching layout for $name." >&2 + error_found=true + fi + done <<<"$(get_keyboard_names)" + + $error_found && return 1 + return 0 } # Execute layout change and notify if ! change_layout; then - notify-send -u low -t 2000 'kb_layout' " Error:" " Layout change failed" - echo "Layout change failed." >&2 - exit 1 + notify-send -u low -t 2000 'kb_layout' " Error:" " Layout change failed" + echo "Layout change failed." >&2 + exit 1 else - notify-send -u low -i "$notif_icon" " kb_layout: $new_layout" - echo "Layout change notification sent." + notify-send -u low -i "$notif_icon" " kb_layout: $new_layout" + echo "Layout change notification sent." fi -echo "$new_layout" > "$layout_file" +echo "$new_layout" >"$layout_file" -- cgit v1.2.3