#!/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