#!/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="/usr/libexec/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

/usr/libexec/gdmgreeter