blob: d24ee1c030119e23e77417e3a0972f4897880108 (
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
#!/bin/sh
#
# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/files/Xsession,v 1.1 2010/09/20 15:22:38 darkside Exp $
#
# SLiM Xsession script
#
# This script is a wrapper that handles selection of a session from
# /etc/X11/Sessions/ as necessary. It doesn't handle actual session setup.
#
# The script takes a session name as the first argument. If no argument is
# given, or if the argument does not match an available session script:
# - Run ~/.xsession and if that's not available,
# - Run the appropriate Xclients startup (see the code below)
#
# (Note that other arguments could also follow, but only the command one is
# right now relevant and supported)
#
# The output is redirected to /var/log/slim.log.
#
# By default this is run in a login shell, see /etc/slim.conf for details.
command="$@"
# this will go into the slim.log along with all other echo's
# good for debugging where things went wrong
echo "$0: Beginning session setup..."
# Read /etc/xprofile and .xprofile for X specific setup
test -f /etc/xprofile && . /etc/xprofile
test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
# userresources and sysresources and all these other vars are
# unneeded here as by default the session script we're handing
# off to will take care of it.
# wrap possible arguments to determine whether to treat special or not
if [ "x$command" = "xcustom" ] || [ "x$command" = "xCustom" ] || \
[ "x$command" = "xdefault" ] || [ "x$command" = "xDefault" ]; then
command="Xsession"
fi
if [ "x$command" = "x" ]; then
# no default specified, check if Xsession will complete
# and if not then assign XSESSION to command
if [ -x "$HOME/.xsession" ] || [ -x "$HOME/.Xclients" ] || \
[ -x /etc/X11/xinit/Xclients ] || [ -x /etc/X11/Xclients ]; then
command="Xsession"
else
command=$XSESSION
fi
fi
# ripped directly from /etc/X11/chooser.sh
sessionscript=""
for x in /etc/X11/Sessions/* ; do
if [ "`echo ${x##*/} | awk '{ print toupper($1) }'`" \
= "`echo ${command} | awk '{ print toupper($1) }'`" ]; then
# Found the matching session
sessionscript="${x}"
break
fi
done
if [ -n "$sessionscript" ]; then
if [ -f ${sessionscript} ]; then
if [ -x ${sessionscript} ]; then
exec "${sessionscript}"
else
exec /bin/sh "${sessionscript}"
fi
fi
echo "Unable to execute session script ${sessionscript}"
exit 1
fi
# Launch a default session
# This was mostly ripped from GDM's Xsession script
echo "Could not find appropriate session script, exec'ing xterm"
userresources="$HOME/.Xresources"
usermodmap="$HOME/.Xmodmap"
userxkbmap="$HOME/.Xkbmap"
sysresources=/etc/X11/Xresources
sysmodmap=/etc/X11/Xmodmap
sysxkbmap=/etc/X11/Xkbmap
rh6sysresources=/etc/X11/xinit/Xresources
rh6sysmodmap=/etc/X11/xinit/Xmodmap
# merge in defaults
if [ -f "$rh6sysresources" ]; then
xrdb -merge "$rh6sysresources"
fi
if [ -f "$sysresources" ]; then
xrdb -merge "$sysresources"
fi
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
# 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
#
# Eeek, this seems like too much magic here
#
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
if [ -f "$rh6sysmodmap" ]; then
xmodmap "$rh6sysmodmap"
fi
if [ -f "$sysmodmap" ]; then
xmodmap "$sysmodmap"
fi
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"
fi
fi
unset XKB_IN_USE
# run all system xinitrc shell scripts.
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for i in /etc/X11/xinit/xinitrc.d/* ; do
if [ -x "$i" ]; then
. "$i"
fi
done
fi
exec xterm -geometry 80x24+0+0
|