#!/bin/sh

set -e

if [ ! -x "`which wmctrl 2>/dev/null`" ]; then
   echo "You should install the \"wmctrl\" packet" 1>&2
   echo "Type: sudo apt-get install wmctrl" 1>&2
   exit 1
fi

# вычисляем доступную область рабочего стола
read DX DY DW DH <<__EOL__
   `wmctrl -d | \
      sed -n 's/^[0-9]\+\s*\*.*WA:\s*\([0-9]\+\),\([0-9]\+\)\s*\([0-9]\+\)x\([0-9]\+\).*/\1 \2 \3 \4/p'`
__EOL__

if [ -z  "$DX" -o -z "$DY" -o -z "$DW" -o -z "$DH" ]; then
   echo "ERROR 1: Couldn't determine the desktop workarea geometry." 1>&2
   exit 1
fi
DW_HALF=$(( $DW / 2 ))

case "$1" in
   'right')
      shift
      TARGET_DISPLAY="right"
      DX=$(( $DX + $DW_HALF ))
      ;;
   'left')
      shift
      TARGET_DISPLAY="left"
      ;;
   '')
      TARGET_DISPLAY="left"
      ;;
   '-h'|'--help')
      echo "Usage: ${0##*/} [left|right]" 1>&2
      exit 1
   ;;
esac

# common options
AVREGMON_GEO="--geo=${DW_HALF}x${DH} --no-winframe --quit"

get_win_id()
{
   [ -z "$1" ] && exit 2
   local target_display tryes count win_id
   win_id=''
   target_display="$1"
   tryes=${2:-1}
   count=0
   while [ $count -lt $tryes ]; do
      win_id=$(wmctrl -l | sed -n "s/^\(0x[0-9a-fA-F]\+\).*AVReg.*local viewer ( $target_display display )/\1/p")
      [ -z "$win_id" ] && sleep 1 || break
      count=$(( $count + 1 ))
   done
   echo $win_id
}

WIN_ID=$(get_win_id ${TARGET_DISPLAY})
if [ -z "$WIN_ID" ]; then
   echo "\"avreg-mon --display=${TARGET_DISPLAY}\" не запущен, пробуем запустить."
   avreg-mon --display=${TARGET_DISPLAY} ${AVREGMON_GEO} $@ >/dev/null &
   WIN_ID=$(get_win_id ${TARGET_DISPLAY} 3)
   if [ -z "$WIN_ID" ]; then
      echo "ERROR 2: exec \"avreg-mon --display=${TARGET_DISPLAY} ${AVREGMON_GEO} $@\" failed" 1>&2
      exit 3
   fi
fi

wmctrl -i -r $WIN_ID -e "0,${DX},${DY},-1,-1"
wmctrl -i -r $WIN_ID -b "add,above,sticky"

