dotfiles/.local/bin/i3-sensible-workspaces

34 lines
753 B
Bash
Executable File

#!/usr/bin/env zsh
output_sets=()
# Order outputs by x position (left to right)
for output in $(swaymsg -t get_outputs | jq '[ (.[] | select(.active) | pick(.name, .rect)) ] | sort_by(.rect.x) | .[] | .name' -r); do
output_sets+=$output
done
workspaces=$(swaymsg -t get_workspaces)
current_output=$(echo $workspaces | jq '.[] | select(.focused).output' -r)
current_workspace=$(echo $workspaces | jq '.[] | select(.focused).name' -r)
function get_ws {
ws_set=$1
ws_target=$2
workspace=$((ws_set * 10 + ws_target))
if (( workspace == current_workspace )); then
workspace=$(( (workspace + 9) % 20 + 1 ))
fi
echo $workspace
}
i=0
for output in $output_sets; do
if [[ $current_output == $output ]]; then
get_ws $i $1
fi
((i++))
done