summaryrefslogtreecommitdiff
blob: ffeef4c87420d5c62147c2e1de1c0dff913f9a38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash --login
#
# $Xorg: Xsession,v 1.4 2000/08/17 19:54:17 cpqbld Exp $
#
#
#
#
# $XFree86: xc/programs/xdm/config/Xsession,v 1.3 2001/01/17 23:45:24 dawes Exp $

# redirect errors to a file in user's home directory if we can
for errfile in "$HOME/.xsession-errors" "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
do
	if ( cp /dev/null "$errfile" 2> /dev/null )
	then
		chmod 600 "$errfile"
		exec > "$errfile" 2>&1
		break
	fi
done

# handle KDM
if [ -n "$1" ]; then
	export XSESSION="$1"
fi

xinitdir=/usr/X11R6/lib/X11/xinit
startup=$HOME/.xsession
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=$xinitdir/.Xresources
sysmodmap=$xinitdir/.Xmodmap

# First run the system default.  Because KDE uses this
# to switch sessions, we MUST first check the system
# default, and then ~/.xsession.  If the user Do not
# want this, he should override XSESSION, or at least
# clear it.
if [ -n "`/etc/X11/chooser.sh`" ]; then
	exec "`/etc/X11/chooser.sh`"
# If not defined, try the user's ~/.xsession
elif [ -s "$startup" ]; then

	# merge in defaults and keymaps

	if [ -f $sysresources ]; then
		xrdb -merge $sysresources
	fi

	if [ -f $sysmodmap ]; then
		xmodmap $sysmodmap
	fi

	if [ -f $userresources ]; then
		xrdb -merge $userresources
	fi

	if [ -f $usermodmap ]; then
		xmodmap $usermodmap
	fi

	if [ -x "$startup" ]; then
		exec "$startup"
	else
		exec /bin/sh "$startup"
	fi
# Lastly, xsm as failsafe
else
	if [ -r "$userresources" ]; then
		xrdb -load "$userresources"
	fi
	exec xsm
fi