#!/bin/sh
XMESSAGE=/usr/bin/X11/xmessage
FONT='-fn *-charter-bold-r-normal-*-140-*'
GEOM='-geometry 600x300+200+300'
SWITCHES="$GEOM $FONT -print"

MESSAGE=""
TITLE="Message from $USER@`hostname`"
TITLECHANGE=0
OTHERS=""
DISP="$DISPLAY"
NAME=`basename "$0"`
USERS=""

count=$#
while [ $count != 0 ]; do
  case $1 in
  -message)
    shift
    count=`expr $count - 1`
    MESSAGE="$*"
    break
    ;;
  -d|-di|-dis|-disp|-displ|-displa|-display)
    shift
    count=`expr $count - 1`
    DISP=$1
    ;;
  -u|-us|-use|-user|-users)
    shift
    count=`expr $count - 1`
    USERS=`echo $1 | tr "," " "`
    ;;
  -t|-ti|-tit|-titl|-title)
    count=`expr $count - 1`
    shift
    TITLE=$1
    TITLECHANGE=1
    ;;
  *)
    OTHERS="$OTHERS \"$1\""
    ;;
  esac
  count=`expr $count - 1`
  shift
done


if [ $TITLECHANGE = 1 ]; then
  echo Message from $USER@`hostname` at `/bin/date`: >> /tmp/xmsg.$$ 
else
  echo `/bin/date`: >> /tmp/xmsg.$$
fi
echo >> /tmp/xmsg.$$


if [ "$MESSAGE" = "" ]; then
  echo "Message:"
  /bin/cat >> /tmp/xmsg.$$
else
  echo $MESSAGE >> /tmp/xmsg.$$
fi


if [ "$USERS" != "" ]; then
  for u in $USERS; do
    case $u in
      alan)    DISP=curta:0;;
      fuat)    DISP=sparky:0;;
      howie)   DISP=ivory:0;;
      ken)     DISP=shibuya:0;;
      marg)    DISP=xanthippe:0;;
      melissa) DISP=broccoli:0;;
      *)
        echo $NAME: no known display for $u, skipping
	continue;; 
    esac

    echo sending to $u on $DISP
    ( eval "$XMESSAGE $SWITCHES -display $DISP -title \"$TITLE\" $OTHERS \
	  	< /tmp/xmsg.$$";\
          echo \(Response from $DISP\) ) &
  done

else
    ( eval "$XMESSAGE $SWITCHES -display $DISP -title \"$TITLE\" $OTHERS \
		< /tmp/xmsg.$$";\
          echo \(Response from $DISP\) ) &
fi

( sleep 10; /bin/rm -f /tmp/xmsg.$$ ) &
exit 0
