#!/bin/bash

dmrc="$HOME/.dmrc"
user_session="$HOME/.xinit.d/session"
user_xim="$HOME/.xinit.d/xim"
user_lang="$HOME/.xinit.d/lang"
##site_session=/etc/sysconfig/xinit-session
##site_xim=/etc/sysconfig/xinit-xim
##site_lang=/etc/sysconfig/xinit-lang
custom_env="$HOME/.xinit.d/custom"

session_dir=/etc/X11/xinit/session.d
xim_dir=/etc/X11/xinit/xim.d
lang_dir=/etc/X11/xinit/lang.d

if [ ! -d "$HOME/.xinit.d" ]; then
    rm -rf "$HOME/.xinit.d"
    mkdir "$HOME/.xinit.d"
fi

# execute sdr if user_lang does not exist
if [ ! -f "$user_lang" ]; then
	/usr/bin/sdr
fi

# set default session kde if sdr was canceled
if [ ! -f "$user_session" ]; then
	echo kde > "$user_session"
fi

# file timestamp comps
if [ -f $dmrc -a -f $user_session ]; then
    if [ $dmrc -nt $user_session ]; then
        cnd_session="new"
    elif [ $dmrc -ot $user_session ]; then
        cnd_session="old"
    else
        cnd_session="eq"
    fi
fi

if [ -f $dmrc -a -f $user_lang ]; then
    if [ $dmrc -nt $user_lang ]; then
        cnd_lang="new"
    elif [ $dmrc -ot $user_lang ]; then
        cnd_lang="old"
    else
        cnd_lang="eq"
    fi
fi

# set session
if [ -f $user_session ]; then
    if [ $cnd_session = "new" ]; then       # [ $dmrc -nt $user_session ]
        sed -n -e 's/^Session=//p' $dmrc > $user_session
    fi
else
    echo $DESKTOP_SESSION > $user_session
fi

# set XIM
if [ ! -f $user_xim ]; then
    echo "SCIM" > $user_xim
fi

# set lang
if [ -f $user_lang ]; then
    if [ $cnd_lang = "new" ]; then       # [ $dmrc -nt $user_lang ]
        sed -n -e 's/^Language=//p' $dmrc > $user_lang
    fi
else
    echo $LANG > $user_lang
fi

touch -c $dmrc $user_session $user_xim $user_lang

now_session=`cat $user_session`
now_xim=`cat $user_xim`
now_lang=`cat $user_lang`
echo "SESSION = <$now_session>"
echo "XIM     = <$now_xim>"
echo "LANG    = <$now_lang>"

# check session settings
SESSION_TYPE=$DESKTOP_SESSION
if [ -f "$session_dir/$SESSION_TYPE" ]; then
    echo "Reading $session_dir/$SESSION_TYPE"
    . $session_dir/$SESSION_TYPE
else
    echo "Wrong session name is specified in $user_session"
    SESSION_EXEC="rxvt"
fi

# language dependent settings
LANG_TYPE=`cat "$user_lang" 2> /dev/null`
if [ -f "$lang_dir/$LANG_TYPE" ]; then
    unset LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
    unset LC_ALL LANG LANGUAGE
    echo "Reading $lang_dir/$LANG_TYPE"
    . "$lang_dir/$LANG_TYPE"
fi

# check im setting
unset IM
if [ -f "$user_xim" ]; then
    IM=`cat "$user_xim" 2> /dev/null`
    if [ -f "$xim_dir/$IM" ]; then
        echo "Reading $xim_dir/$IM"
        . $xim_dir/$IM
    else
        echo "Wrong IM is specified in $user_xim"
    fi
fi

# custom language environment
if [ -f "$custom_env" ]; then
    echo "Reading $custom_env"
    . "$custom_env"
fi
