Files
i3/bin/focus_workspace
2020-09-23 16:40:19 +02:00

34 lines
1.1 KiB
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 -r '.[] | select(.focused==true).output')
PREVIOUS_WORKSPACE=$(cat ~/.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"
# Do not update files in run/ if switching output
[ $(i3-msg -t get_workspaces | jq -r '.[] | select(.focused==true).output') != ${CURRENT_OUTPUT} ] && exit 0
else
usage; exit 1
fi
# Update previous file in run/
echo -n ${CURRENT_WORKSPACE} > ~/.config/i3/run/previous_${CURRENT_OUTPUT}