updated on Thu Jan 26 16:09:46 UTC 2012
[aur-mirror.git] / slim-plus / Xsession.sh
blob6b0e12de2472d5b5745df644b7f131e0db4823db
1 #!/bin/sh
3 # fix broken $UID on some system...
4 if test "x$UID" = "x"; then
5 if test -x /usr/xpg4/bin/id; then
6 UID=`/usr/xpg4/bin/id -u`;
7 else
8 UID=`id -u`;
9 fi
12 if test "x$XDG_CONFIG_HOME" = "x" ; then
13 XDG_CONFIG_HOME=$XDG_CONFIG_HOME/.config
15 [ -d "$XDG_CONFIG_HOME" ] || mkdir "$XDG_CONFIG_HOME"
16 if test "x$XDG_CACHE_HOME" = "x" ; then
17 XDG_CACHE_HOME=$XDG_CONFIG_HOME/.cache
19 [ -d "$XDG_CACHE_HOME" ] || mkdir "$XDG_CACHE_HOME"
21 if [ -e $HOME/.xsession-errors.0 ] && [ -e $HOME/.xsession-errors ]; then
22 rm $HOME/.xsession-errors.0
23 mv $HOME/.xsession-errors $HOME/.xsession-errors.0
24 elif [ ! -e $HOME/.xsession-errors.0 ] && [ -e $HOME/.xsession-errors ]; then
25 mv $HOME/.xsession-errors $HOME/.xsession-errors.0
28 for errfile in "$HOME/.xsession-errors" "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
30 if ( cp /dev/null "$errfile" 2> /dev/null ) ; then
31 chmod 600 "$errfile"
32 exec > "$errfile" 2>&1
33 break
35 done
37 echo "$0: Beginning session setup..."
39 userresources="$HOME/.Xresources"
40 usermodmap="$HOME/.Xmodmap"
41 userxkbmap="$HOME/.Xkbmap"
43 sysresources=/usr/lib/X11/xinit/.Xresources
44 sysmodmap=/usr/lib/X11/xinit/.Xmodmap
45 sysxkbmap=/etc/X11/Xkbmap
47 rh6sysresources=/etc/X11/xinit/Xresources
48 rh6sysmodmap=/etc/X11/xinit/Xmodmap
50 # merge in defaults
51 if [ -f "$rh6sysresources" ]; then xrdb -merge "$rh6sysresources"; fi
52 if [ -f "$sysresources" ]; then xrdb -merge "$sysresources"; fi
53 if [ -f "$userresources" ]; then xrdb -merge "$userresources"; fi
55 # merge in keymaps
56 if [ -f "$sysxkbmap" ]; then
57 setxkbmap `cat "$sysxkbmap"`
58 XKB_IN_USE=yes
61 if [ -f "$userxkbmap" ]; then
62 setxkbmap `cat "$userxkbmap"`
63 XKB_IN_USE=yes
66 if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
67 if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
68 xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
69 if [ -n "$xkbsymbols" ]; then
70 setxkbmap -symbols "$xkbsymbols"
71 XKB_IN_USE=yes
76 # xkb and xmodmap don't play nice together
77 if [ -z "$XKB_IN_USE" ]; then
78 if [ -f "$rh6sysmodmap" ]; then
79 xmodmap "$rh6sysmodmap"
81 if [ -f "$sysmodmap" ]; then
82 xmodmap "$sysmodmap"
84 if [ -f "$usermodmap" ]; then
85 xmodmap "$usermodmap"
89 unset XKB_IN_USE
91 # run all system xinitrc shell scripts.
92 if [ -d /etc/X11/xinit/xinitrc.d ]; then
93 for i in /etc/X11/xinit/xinitrc.d/* ; do
94 if [ -x "$i" ]; then
95 . "$i"
97 done
99 SESSIONS="/usr/share/xsessions"
100 Session=xfce #Default set to xfce
101 dmrc=/var/state/dm/dmrc
102 userdmrc=$HOME/.dmrc
104 if [ -e $dmrc ]; then
105 localecmd="$(grep "LANG=" $dmrc 2>/dev/null)"
106 keymapcmd="$(grep "loadkeys" $dmrc 2>/dev/null)"
107 xkbmapcmd="$(grep "setxkbmap" $dmrc 2>/dev/null)"
108 if [ "$localecmd" ]; then
109 if [ "$(grep "LANG=" $userdmrc 2>/dev/null)" ] ; then
110 sed -i "s@^.*LANG=.*@$localecmd@" $userdmrc
111 else
112 echo "$localecmd" >> $userdmrc
115 if [ "$keymapcmd" ]; then
116 if [ "$(grep "loadkeys" $userdmrc 2>/dev/null)" ]; then
117 sed -i "s@^.*loadkeys.*@$keymapcmd@" $userdmrc
118 else
119 echo "$keymapcmd" >> $userdmrc
122 if [ "$xkbmapcmd" ]; then
123 if [ "$(grep "setxkbmap" $userdmrc 2>/dev/null)" ]; then
124 sed -i "s@^.*setxkbmap.*@$xkbmapcmd@" $userdmrc
125 else
126 echo "$xkbmapcmd" >> $userdmrc
130 rm -f $dmrc
132 if [ -e "$userdmrc" ]; then
133 source $userdmrc 1> /dev/null 2> /dev/null
134 [ "Language" ] && export LANG="$Language"
135 export LC_COLLATE="$LANG"
136 else
137 echo "[Desktop]" >> "$userdmrc"
138 echo "Session=" >> "$userdmrc"
139 echo "Language=" >> "$userdmrc"
142 # accept $SESSION and remember Session
144 if [ "$1" ];then
145 Session="$1"
146 sed -i "s@^.*Session=.*@Session=$1@" $userdmrc
147 if [ ! "$(grep "Session=" $userdmrc 2>/dev/null)" ] ; then
148 echo "Session=$Session" >> $userdmrc
152 echo "$0: Session=$Session"
154 profile=/etc/profile
155 userprofile=$HOME/.profile
157 if [ -r $profile ]; then
158 source $profile 1> /dev/null 2> /dev/null
160 if [ -r $userprofile ]; then
161 source $userprofile 1> /dev/null 2> /dev/null
164 xprofile=/etc/xprofile
165 userxprofile=$HOME/.xprofile
166 if [ -r $xprofile ]; then
167 source $xprofile $Session
169 if [ -r $userxprofile ]; then
170 source $userxprofile $Session
173 echo "$0: Ready to start desktop..."
174 # We should normally get the session command from desktop files
175 if [ -e ${SESSIONS}/${Session}.desktop ];then
176 COMMAND="$(sed -n 's/Exec[ \t]*=[ \t]*\(.*\)$/\1/p' ${SESSIONS}/${Session}.desktop)"
177 echo "$0: Setup done, will start: ${SESSIONS}/${Session}.desktop"
178 exec ck-launch-session dbus-launch --auto-syntax --exit-with-session $COMMAND
179 else echo "$0: Faild to find ${SESSIONS}/${Session}.desktop, try another way..."
182 case "$Session" in
183 default)
184 xsetroot -solid SteelBlue
185 exec xterm -geometry 80x24-0-0
187 xfce4)
188 startxfce4
190 kde)
191 ck-launch-session startkde
193 gnome)
194 ck-launch-session gnome-session
196 fluxbox)
197 ck-launch-session fluxbox
199 fvwm2)
200 xsetroot -solid SteelBlue
201 ck-launch-session fvwm2
203 fvwm95)
204 xsetroot -solid SteelBlue
205 ck-launch-session fvwm95
207 blackbox)
208 ck-launch-session blackbox
210 windowmaker)
211 exec /etc/X11/xinit/xinitrc.wmaker
213 afterstep)
214 ck-launch-session afterstep
216 enlightenment)
217 exec /etc/X11/xinit/xinitrc.enlightenment
219 twm)
220 #xclock -geometry 50x50-1+1 &
221 #xterm -geometry 80x50+494+51 &
222 #xterm -geometry 80x20+494-0 &
223 #xterm -geometry 80x66+0+0 -name login &
224 xsetroot -solid SteelBlue
225 ck-launch-session twm
227 esac
229 if [ -x $HOME/.xsession ]; then
230 exec $HOME/.xsession $@
233 if [ -r /etc/X11/xinit/xinitrc.xfce ]; then
234 exec /etc/X11/xinit/xinitrc.xfce