#!/bin/sh

gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS
  echo "$OUTPUT"
}

echo
echo "GDM Theme Tester"
echo
echo "Be sure to test all the environments:"
echo " console, console-timed, flexi, remote-flexi, xdmcp"
echo "Also be sure to test using caps lock"
echo

XNEST=`gdmwhich Xnest`
GDMXNEST=`gdmwhich gdmXnest`
GDMGREETER="@libexecdir@/gdmgreeter"

if [ x$XNEST = x ]; then
	echo "ERROR: Xnest not found"
        echo ""
	exit 1
fi

if [ x$GDMXNEST = x ]; then
	echo "ERROR: gdmXnest not found"
        echo ""
	exit 1
fi

if [ x$GDMGREETER = x ]; then
	echo "ERROR: gdmgreeter not found"
        echo ""
	exit 1
fi

USAGE="
Usage: $0 <environment> <theme>
<environment> is one of: console, console-timed, flexi, remote-flexi, xdmcp
<theme> is either the path of the theme or the name of an installed theme

If you set the environment variable XNESTSIZE to <width>x<height> (e.g. 800x600)
you can test the greeter at that resolution
"
if [ "$#" != 2 ]; then
	echo "$USAGE"
	exit 1
fi

GDM_THEME="$2"
DOING_GDM_DEVELOPMENT=yes
GDM_PARENT_DISPLAY="$DISPLAY"
export GDM_THEME DOING_GDM_DEVELOPMENT GDM_PARENT_DISPLAY

case $1 in
console)
	GDM_IS_LOCAL=yes
	export GDM_IS_LOCAL
	;;
console-timed)
	GDM_IS_LOCAL=yes
	GDM_FAKE_TIMED=yes
	export GDM_IS_LOCAL GDM_FAKE_TIMED
	;;
flexi)
	GDM_IS_LOCAL=yes
	GDM_FLEXI_SERVER=yes
	export GDM_IS_LOCAL GDM_FLEXI_SERVER
	;;
remote-flexi)
	GDM_FLEXI_SERVER=yes
	export GDM_FLEXI_SERVER
	;;
xdmcp)
	;;
*)
	echo "$USAGE"
	exit 1
	;;
esac

if [ "x$XNESTSIZE" = x ] ; then
  eval `gdmXnest -b`
else
  eval `gdmXnest -b -o "-geometry $XNESTSIZE"`
fi
export DISPLAY

if [ "x$GDM_PARENT_DISPLAY" = "x$DISPLAY" ]; then
	echo "ERROR: Can't start the Xnest server"
	exit 1
fi

# This may not be necessary
sleep 1

@libexecdir@/gdmgreeter
