2021-12-31 15:57:34 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2024-10-15 22:25:41 +00:00
|
|
|
# Input name from `swaymsg -t get_inputs`
|
|
|
|
INPUTNAME="AT Translated Set 2 keyboard"
|
|
|
|
|
|
|
|
ACTIVELAYOUT=$(swaymsg -t get_inputs | jq -r ".[] | select(.name==\"$INPUTNAME\") | .xkb_active_layout_name")
|
|
|
|
|
|
|
|
mapfile -t AVAILABLELAYOUTS < <( swaymsg -t get_inputs | jq -r ".[] | select(.name==\"$INPUTNAME\") | .xkb_layout_names" | sed 's/[][,]//g' | sed 's/^ *//g' | grep -P '.')
|
|
|
|
ACTIVEINDEX=0
|
|
|
|
for i in "${AVAILABLELAYOUTS[@]}"; do
|
|
|
|
if [[ "$i" == '"'$ACTIVELAYOUT'"' ]]; then
|
|
|
|
break
|
|
|
|
else
|
|
|
|
((ACTIVEINDEX+=1))
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
ACTION=bar
|
|
|
|
if [ -n $1 ]; then
|
|
|
|
ACTION=$1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $ACTION == 'osk' ]]; then
|
|
|
|
FILE=/home/jpm/.local/state/onscreen-keyboard
|
|
|
|
if [ -f $FILE ]; then
|
|
|
|
rm $FILE
|
|
|
|
busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b false
|
|
|
|
else
|
|
|
|
touch $FILE
|
|
|
|
busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
|
|
|
|
fi
|
|
|
|
elif [[ $ACTION == 'layout' ]]; then
|
|
|
|
# Simpler just to use 'next' to rotate input layouts
|
|
|
|
#((ACTIVEINDEX+=1))
|
|
|
|
#if [[ $ACTIVEINDEX -eq ${#AVAILABLELAYOUTS[@]} ]]; then
|
|
|
|
#ACTIVEINDEX=0
|
|
|
|
#fi
|
|
|
|
#swaymsg input type:keyboard $ACTIVEINDEX
|
|
|
|
swaymsg input type:keyboard xkb_switch_layout next
|
|
|
|
$0 bar
|
2021-12-31 15:57:34 +00:00
|
|
|
else
|
2024-10-15 22:25:41 +00:00
|
|
|
SHORT=$(echo $ACTIVELAYOUT | sed -r 's/.*\(([[:alpha:]]*)\).*/\1/')
|
|
|
|
if [[ $ACTIVEINDEX -ne 0 ]]; then
|
|
|
|
echo '{"text": "⌨ '$SHORT'", "tooltip": "Rotate keyboard layout", "class": "alternate"}'
|
|
|
|
else
|
|
|
|
echo '{"text": "⌨ '$SHORT'", "tooltip": "Rotate keyboard layout", "class": "primary"}'
|
|
|
|
fi
|
2021-12-31 15:57:34 +00:00
|
|
|
fi
|
2024-10-15 22:25:41 +00:00
|
|
|
|
|
|
|
|