#!/bin/bash
case $1 in "-a") PROMPT="Goto:"; MODE="go" ;; "-R") PROMPT="Bring:"; MODE="bring" ;; esac

if [ -n "$2" ]; then
    WINDOW="$2"
else
    WINDOW=$(paste \
           <(xdotool search .) \
           <(xdotool search . get_desktop_for_window %@ 2> /dev/null) \
           <(xdotool search . getwindowname %@) |\
        awk '{FS="\t"; if($2 != -1) printf "%10d [%d] %s\n",$1,$2+1,$3}' |\
        vmenu --no-refocus -p $PROMPT |\
        sed 's/^ *//g' |\
        cut -d ' ' -f 1)
fi

if [ -n "$WINDOW" ]; then
    if [ bring = $MODE ]; then
        if DESK=$(xdotool get_desktop 2> /dev/null); then
            xdotool set_desktop_for_window "$WINDOW" $DESK
            sleep 0.005 # wait for wm to notice
        fi
    fi
    xdotool windowmap "$WINDOW" windowactivate "$WINDOW" windowfocus "$WINDOW" windowraise "$WINDOW"
fi