#! /bin/sh -e

TMP=`tempfile`

# create desktop resource file, if it does not exist.
if [ ! -f $HOME/.dmrc ]; then
  (
  echo "[Desktop]"
  echo "Session=gnome"
  echo "Language=en_US.UTF-8"
  ) > $HOME/.dmrc
fi

# Sanity checks
if [ ! -w $HOME/.dmrc ]; then
  echo "I can not write on $HOME/.dmrc"
  exit 1
fi
if ! grep -e '^\[Desktop\]' $HOME/.dmrc 2>/dev/null >/dev/null ; then
  (
  echo "1i"
  echo "[Desktop]"
  echo "."
  echo "wq"
  ) |ed -s $HOME/.dmrc
fi
if ! grep -e '^Session=' $HOME/.dmrc 2>/dev/null >/dev/null ; then
  (
  echo "1a"
  echo "Session="
  echo "."
  echo "wq"
  ) |ed -s $HOME/.dmrc
fi
if ! grep -e '^Language=' $HOME/.dmrc 2>/dev/null >/dev/null ; then
  (
  echo "2a"
  echo "Language="
  echo "."
  echo "wq"
  ) |ed -s $HOME/.dmrc
fi
# Get previous setting
XLANG=$(sed -n -e "s/^Language=\(.*\)$/\1/p" $HOME/.dmrc)
if [ "$XLANG" = "C" ]; then
  LOCALES="$XLANG $(grep  '^[ \t]*[^#]' /etc/locale.gen | awk '{ print $1 }' | sort -u | grep -e 'UTF-8$' -e 'UTF-8@euro$' | grep -v -e \"^${XLANG}\$\" )"
  else
  LOCALES="$XLANG C $(grep  '^[ \t]*[^#]' /etc/locale.gen | awk '{ print $1 }' | sort -u | grep -e 'UTF-8$' -e 'UTF-8@euro$' | grep -v -e \"^${XLANG}\$\" )"
fi
# Create menu screen
MENU_COMMAND='whiptail --title "Select UTF-8 locale" --menu 
"Select your choice of UTF-8 locale for X.  If you do not find 
appropriate one, please ask administrator (root) to run 
\"dpkg-reconfigure locales\" to create one for you." 
23 78 12 '
for x in $LOCALES ; do
  MENU_COMMAND="$MENU_COMMAND $x \"Select ${x%.*} locale for X\""
done

# Display selection
eval $MENU_COMMAND 2> $TMP

# Alter $HOME/.dmrc
(
echo "%s/^Language=.*\$/Language=$(cat $TMP)/"
echo 'wq'
) | ed -s $HOME/.dmrc

