#!/bin/sh
#/usr/bin/sdm-wm

# Copyright 2003, 2004 Vagrant Cascadian <vagrant@freegeek.org>.
# Licensed under the terms of the GNU General Public License,
# version 2 or any later version.

# TODO support window managers not in the debian alternatives 
# system

if [ -r ~/.sdmrc ]; then
  . ~/.sdmrc
fi

# check the debian alternatives system for available window managers
availablewm=$(/usr/sbin/update-alternatives --display \
  x-window-manager | awk '{print $1}' | egrep bin)

if [ -r /etc/sdm/windowmanagers ]; then
  availablewm="$availablewm $(egrep -v ^# /etc/sdm/windowmanagers | awk -F "=" '{print $2}')"
fi

wmlist=
for wm in $availablewm; do
  if [ -x "$wm" ]; then
    wmlist="FALSE $(basename $wm) $wm $wmlist"
  fi
done

if [ -n "$(which wmanager)" ]; then
  wmanager="FALSE wmanager $(which wmanager)"
fi

if [ -n "$(which selectwm)" ]; then
  selectwm="FALSE selectwm $(which selectwm)"
fi

windowmanager=$(zenity --list --radiolist \
  --title="which window manager would you like to try?" \
  --column="" --column="Name" --column="Description" \
  TRUE default "default window manager" \
  $wmlist \
  $wmanager \
  $selectwm \
  FALSE sdm-wm "sdm window manager selection" \
  FALSE browse "browse for window manager")

if [ "0" != "$?" ]; then
  xmessage -center "cancel pressed, exiting..."
  exit 1
fi

if [ "browse" = "$windowmanager" ]; then
  windowmanager=$(zenity --file-selection --title"Select windowmanager" --filename="/usr/bin")
  if [ ! -x "$windowmanager" ]; then
    windowmanager=
  fi
fi

zenity --question \
  --title="confirm selected windowmanager" \
  --text="Would you like to set $windowmanager as your \
  default window manager?"

if [ "0" = "$?" ]; then
  echo "windowmanager=$windowmanager" > ~/.sdmrc
fi

if [ "sdm-wm" = "$windowmanager" ]; then
  exec sdm-wm
fi
