bspwm-window-select/window-select

48 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# dependency - xtitle
# arguments:
# none - select from windows on current desktop
# 'monitor' - select from all windows.
# 'all' - select from all windows.
. "$HOME/.config/dmenu/dmenurc"
if command -v bspc ; then
if command -v transset-df ; then
_focused="$(bspc query -N -n focused)"
transset-df --id "$_focused" 0.7
fi
# adapted from: https://www.reddit.com/r/bspwm/comments/er2olp/dmenu_window_picker/ff16ff0/
# NOTE: query can be '.window', '.local.window', '.local.tiled' (to only have tiled windows
# as options) or '.local.window.!fullscreen.!floating' (to only have tiled and pseudo_tiled windows as options).
if [ "$1" = all ] ; then
ids=($(bspc query -N -n ".window"))
elif [ "$1" = monitor ] ; then
ids=($(bspc query -N -m "focused"))
else
# current desktop
ids=($(bspc query -N -n ".local.window"))
fi
options="$(xtitle "${ids[@]}" | awk '{ print ++i": "$0 }')"
if [[ -z "$options" ]] ; then
if command -v transset-df ; then
transset-df --id "$_focused" 1
fi
exit
fi
id_index="$(<<< "$options" dmenu $DMENU_OPTIONS -l 20 | cut -d: -f1)"
if command -v transset-df ; then
transset-df --id "$_focused" 1
fi
if [[ -z "$id_index" ]] ; then
exit
fi
bspc node "${ids[$((id_index - 1))]}" -f
fi