#!/bin/sh - # xwinid - interactively determine and print the ID of a selected X window # Steve Kinzler, kinzler@cs.indiana.edu, Aug 98 # http://www.cs.indiana.edu/~kinzler/home.html#x11 case "$#,$1" in 0,*) set \(\[\^\)\]\[\^\)\]\*\);; *,-h) echo "usage: $0 [ grep arguments ]" 1>&2; exit 1;; esac tmp=/tmp/wi$$ trap "rm -fr $tmp; exit" 0 1 2 13 15 # warning, xlswins can run pretty slowly from a distant remote host (echo 'Select by mouse click in window' xlswins -l | sed 's/[0-9]*: *//' | grep "$@") | awk '{ printf "%-2d %s\n", NR, $0 }' > $tmp n="`wc -l < $tmp`"; n=`echo $n` case "$n" in 1) ans=1;; *) cat < $tmp > /dev/tty awk 'BEGIN { printf "? ['"$n"'] " }' < /dev/null > /dev/tty read ans < /dev/tty case "$ans" in '') ans="$n";; esac;; esac id=`sed -n "s/^$ans *//p" < $tmp | sed 's/ .*//; 2q'` case "$id" in Select) echo 'Click mouse in desired window ...' > /dev/tty xwininfo | sed -n 's/.*[Ww]indow *[Ii][Dd]:*[ ]*//p' | sed 's/[ ].*//';; '') ;; *) echo "$id";; esac