mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
20 lines
1.2 KiB
Bash
Executable File
20 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# ================================================================================== #
|
|
# Focus the next window on the current workspace in i3, e.g. for binding to Alt+Tab #
|
|
# Depends: jq, awk, i3wm (obviously) #
|
|
# Author: Nervengift <dev@nerven.gift> #
|
|
# License: Don't think this deserves a license, Public Domain #
|
|
# Known bugs: doesn't work with non-window container focused #
|
|
# ================================================================================== #
|
|
|
|
ws=$(i3-msg -t get_workspaces|jq "map(select(.focused))[]|.name")
|
|
echo $ws
|
|
windows=$(i3-msg -t get_tree|jq ".nodes|map(.nodes[])|map(.nodes[])|map(select(.type==\"workspace\" and .name==$ws))[0].nodes|map(recurse(.nodes[]))|map(.window)|.[]|values")
|
|
echo $windows
|
|
current=$(i3-msg -t get_tree|jq "recurse(.nodes[])|select(.focused)|.window")
|
|
echo $current
|
|
if [ "x$current" != "xnull" ]; then
|
|
next=$(echo $windows | awk "BEGIN {RS=\" \";FS=\" \"};NR == 1 {w=\$1};{if (f == 1){w=\$1;f=0}else if (\$1 == \"$current\") f=1};END {print w}")
|
|
i3-msg [id=$next] focus > /dev/null
|
|
fi
|