summaryrefslogtreecommitdiffstats
path: root/.local/bin/b-ws-util
blob: 6ca5fe98e52890b409bdff241a86380622025420 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
  "$1" workspace number "$dest_ws"
elif [ "$op" = "move" ]; then
  "$1" move container to workspace number "$dest_ws"
  if [ "$4" = "follow" ]; then
    "$1" workspace number "$dest_ws"
  fi
fi