34 lines
753 B
Bash
Executable File
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
|