30 lines
947 B
Bash
Executable File
30 lines
947 B
Bash
Executable File
#! /bin/bash
|
|
|
|
usage() {
|
|
echo "usage: focus_workspace [previous|left|right|1-42]"
|
|
}
|
|
|
|
if [ $# -ne 1 ]; then
|
|
usage; exit 1
|
|
fi
|
|
|
|
# Get current workspace
|
|
CURRENT_WORKSPACE=$(i3-msg -t get_workspaces | jq '.[] | select(.focused==true).num')
|
|
CURRENT_OUTPUT=$(i3-msg -t get_workspaces | jq '.[] | select(.focused==true).output')
|
|
PREVIOUS_WORKSPACE=$(cat ~/.config/i3/run/previous_${CURRENT_OUTPUT})
|
|
echo -n ${CURRENT_WORKSPACE} > ~/.config/i3/run/previous_${CURRENT_OUTPUT}
|
|
|
|
if [ $1 == "previous" ]; then
|
|
i3-msg "workspace number ${PREVIOUS_WORKSPACE}"
|
|
elif [ "$1" == "left" ]; then
|
|
[ $CURRENT_WORKSPACE -eq 1 ] && CURRENT_WORKSPACE=43
|
|
i3-msg "workspace number $(($CURRENT_WORKSPACE - 1))"
|
|
elif [ "$1" == "right" ]; then
|
|
[ $CURRENT_WORKSPACE -eq 42 ] && CURRENT_WORKSPACE=0
|
|
i3-msg "workspace number $(($CURRENT_WORKSPACE + 1))"
|
|
elif [ $1 -gt 0 ] && [ $1 -lt 43 ]; then
|
|
i3-msg "workspace number $1"
|
|
else
|
|
usage; exit 1
|
|
fi
|