diff options
Diffstat (limited to '')
-rwxr-xr-x | .local/bin/b-ws-util | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/.local/bin/b-ws-util b/.local/bin/b-ws-util new file mode 100755 index 0000000..df921f7 --- /dev/null +++ b/.local/bin/b-ws-util @@ -0,0 +1,40 @@ +#!/bin/sh + +if [ "$1" = "i3" ]; then + msgcmd=i3-msg +elif [ "$1" = "sway" ]; then + msgcmd=swaymsg +else + echo "Usage: $0 {i3|sway} {switch|move} {prev|next} [follow]" + exit 1 +fi + +curr_ws=$("$msgcmd" -t get_workspaces | jq -r '.[] | select(.focused==true).name') +[ "$curr_ws" -eq 1 ] && prev_ws=10 || prev_ws=$((curr_ws-1)) +[ "$curr_ws" -eq 10 ] && next_ws=1 || next_ws=$((curr_ws+1)) +dest_ws=-1 +op=-1 + +if [ "$2" = "switch" ] || [ "$2" = "move" ]; then + op="$2" + if [ "$3" = "prev" ]; then + dest_ws="$prev_ws" + elif [ "$3" = "next" ]; then + dest_ws="$next_ws" + else + echo "Usage: $0 $1 $2 {prev|next} [follow]" + exit 1 + fi +else + echo "Usage: $0 $1 {switch|move} {prev|next} [follow]" + exit 1 +fi + +if [ "$op" = "switch" ]; then + i3 workspace "$dest_ws" +elif [ "$op" = "move" ]; then + i3 move container to workspace "$dest_ws" + if [ "$4" = "follow" ]; then + i3 workspace "$dest_ws" + fi +fi |