#!/bin/sh
# Modify the KDM+WDM Sessions Menu to include all WMs
# which are enlisted in the /etc/X11/xinit
#
# TODO
# Also add GDM 
#
# (c) 2003, Eko M. Budi
# (c) 2003, Vector Linux
# Released under GNU GPL
#


KDMRC="/opt/kde/share/config/kdm/kdmrc"
WDMRC="/etc/X11/wdm/wdm-config"

function buildkdm() {

if [ ! -f $KDMRC ]; then
   KDMPATH=`which kdm`
   if [ $? = 0 ]; then
     KDMPATH=`dirname $KDMPATH`
     KDMPATH=`dirname $KDMPATH`
     KDMRC="$KDMPATH/share/config/kdm/kdmrc"
   fi
fi
if [ ! -f $KDMRC ]; then
   echo "WARNING: Could not find $KDMRC"
   return 1
fi
cp $KDMRC $KDMRC.old
sed -e "s:^SessionTypes=.*:SessionTypes=$1:" < $KDMRC.old > $KDMRC
grep -e "^SessionTypes=$1" $KDMRC
if [ ! $? = 0 ]; then
  echo "ERROR: Could not modify $KDMRC"
  return 2
else
  echo "Sessions has been added to KDM".
fi
}


function buildwdm() {
if [ ! -f $WDMRC ]; then
   echo "WARNING: Could not find $WDMRC"
   return 1
fi
cp $WDMRC $WDMRC.old
SS=`echo $1 | sed -e 's/,/:/g'`
sed -e "s/^DisplayManager\*wdmWm:.*/DisplayManager\*wdmWm: $SS/" < $WDMRC.old > $WDMRC
grep -e "^DisplayManager\*wdmWm: $SS" $WDMRC
if [ ! $? = 0 ]; then
  echo "ERROR: Could not modify $WDMRC"
  return 2
else
  echo "Sessions has been added to WDM".
fi
}


###################################################
# main

SESSIONS=""
for WM in /etc/X11/xinit/xinitrc.*; do
   if [ -x $WM ]; then
     SS=`echo "$WM" | cut -d . -f 2`
     SESSIONS="${SESSIONS}$SS,"
   fi
done
SESSIONS="${SESSIONS}default"

case "$1" in 
  "-h"|"--help")
    echo "Usage: buildsessions [KDM/WDM]"
    echo "Build Sessions Menu for KDM / WDM"
    echo "Session scripts must be present at /etc/X11/xinit/"
    echo "and named as xinitrc.SESSION_NAME"
    exit 0
    ;;
  "WDM")
    buildwdm $SESSIONS
    ;;
  "KDM")
    buildkdm $SESSIONS
    ;;
  *)
    buildkdm $SESSIONS
    buildwdm $SESSIONS
    ;;
esac


