#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
userxkbmap=$HOME/.Xkbmap

sysresources=/etc/X11/xinit/Xresources
sysmodmap=/etc/X11/xinit/Xmodmap
sysxkbmap=/etc/X11/Xkbmap

# merge in defaults and keymaps

[ -f $sysresources ] && xrdb -merge $sysresources
[ -f $userresources ] && xrdb -merge $userresources

# merge in keymaps
if [ -f "$sysxkbmap" ]; then
    setxkbmap `cat "$sysxkbmap"`
    XKB_IN_USE=yes
fi

if [ -f "$userxkbmap" ]; then
    setxkbmap `cat "$userxkbmap"`
    XKB_IN_USE=yes
fi

if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
	if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 \
				&& [ -f /etc/X11/XF86Config ]; then
		xkbsymbols=`sed -n -e 's/^[ 	]*XkbSymbols[ 	]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
		if [ -n "$xkbsymbols" ]; then
			setxkbmap -symbols "$xkbsymbols"
			XKB_IN_USE=yes
		fi
	fi
fi

# xkb and xmodmap don't play nice together
if [ -z "$XKB_IN_USE" ]; then
	[ -f $sysmodmap ] && xmodmap $sysmodmap
	[ -f $usermodmap ] && xmodmap $usermodmap
fi

unset XKB_IN_USE

# The user may have their own clients they want to run.  If they don't,
# fall back to system defaults.

# run all system xinitrc shell scripts.
for i in /etc/X11/xinit/xinitrc.d/* ; do
	if [ -x "$i" ]; then
		. "$i"
	fi
done

if [ -f $HOME/.Xclients ]; then
	exec $HOME/.Xclients
else
	exec /etc/X11/xinit/Xclients
fi
