slackware-current/source/x/x11/post-install/xdm/Xsession

205 lines
5.3 KiB
Text
Raw Normal View History

#!/bin/sh
# $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
#
#
# $XFree86: xc/programs/xdm/config/Xsession,v 1.2 1998/01/11 03:48:32 dawes Exp $
# Modified for Slackware-3.5, 28-Mar-98 volkerdi
# Extensively rewritten for Slackware 7.0, 03-Oct-1999 volkerdi
# Patched to give priority to $HOME/.xsession, 10-Oct-1999 volkerdi
# Merged changes into upstream (XFree86-4.0.2) version, 17-Feb-2001 volkerdi
# Fixes for $PATH (from Jim Diamond), GDM/KDM/XDM, 2003-02-07 volkerdi
# Use absolute paths until $PATH is set, 2006-01-11 (Al's 100th :-) volkerdi
# merged changes from # $Xorg: Xsession,v 1.4 2000/08/17 19:54:17 cpqbld Exp $, 2007-02-13 volkerdi
# Changed /usr/lib/X11/xinit/ paths to /etc/X11/xinit/ 2011-01-23 rworkman
# redirect errors to a file in user's home directory if we can
errfile="$HOME/.xsession-errors"
if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null )
then
exec > "$errfile" 2>&1
else
mktemp=/usr/bin/mktemp
for errfile in "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
do
if ef="$( umask 077 && $mktemp "$errfile.XXXXXX" 2> /dev/null)"
then
exec > "$ef" 2>&1
mv "$ef" "$errfile" 2> /dev/null
break
fi
done
fi
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -r $sysresources ]; then
/usr/bin/xrdb -merge $sysresources
fi
if [ -r $sysmodmap ]; then
/usr/bin/xmodmap $sysmodmap
fi
if [ -r $userresources ]; then
/usr/bin/xrdb -merge $userresources
fi
if [ -r $usermodmap ]; then
/usr/bin/xmodmap $usermodmap
fi
# Since xdm doesn't run a bash -login shell (or any other login shell)
# we should source these files to set up the user's environment.
profile=/etc/profile
userprofile=~/.profile
if [ -r $profile ]; then
source $profile 1> /dev/null 2> /dev/null
fi
if [ -r $userprofile ]; then
source $userprofile 1> /dev/null 2> /dev/null
fi
# Set the $PATH through the user's preferred shell.
case `basename "$SHELL"` in
bash|sh|ash)
PATH="`( echo 'echo $PATH' | bash --login ) | tail -1`"
;;
csh|tcsh)
PATH="`( echo 'echo $PATH' | tcsh -l ) | tail -1`"
;;
ksh)
PATH="`( cat /etc/profile ; echo 'echo $PATH' ) | ksh | tail -1`"
;;
zsh)
PATH="`( echo 'echo $PATH' | zsh -l ) | tail -1`"
;;
*)
# We don't know your shell, so we'll set up reasonable defaults.
if [ "`whoami`" = "root" ]; then
PATH=$PATH:/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin
else
PATH=$PATH:/usr/local/bin:/bin:/usr/bin
fi
;;
esac
# These files (if they exist) are used to set up the X related environment. We used to
# exec .xsession at this location, but that can interfere with choosing a session type
# through XDM/KDM/GDM so it was moved to after a requested session is started. Since
# that means that .xsession might never be run at all when using XDM/KDM/GDM, support
# for the xprofile was added to allow a way for the user to customize the X environment.
if [ -r /etc/xprofile ]; then
source /etc/xprofile
fi
if [ -r ~/.xprofile ]; then
source ~/.xprofile
fi
# Some people say that an .xsession file should always be given priority, even if a
# different window manager was requested in $1. If you want that behavior, uncomment
# the lines below. This is not recommended (nor, in general, is the use of an
# .xsession file as a default... it should be left for the advanced users).
#if [ -x $HOME/.xsession ]; then
# exec $HOME/.xsession $@
#fi
# If a particular session type was requested in $1, start that session:
case "$1" in
failsafe)
xsetroot -solid SteelBlue
exec xterm -geometry 80x24-0-0
;;
kde)
exec startkde
;;
gnome)
exec gnome-session
;;
openwin)
exec olvwm
;;
fluxbox)
exec fluxbox
;;
fvwm2)
xsetroot -solid SteelBlue
exec fvwm2
;;
fvwm95)
xsetroot -solid SteelBlue
exec fvwm95
;;
blackbox)
exec blackbox
;;
xfce)
exec /etc/X11/xinit/xinitrc.xfce
;;
windowmaker)
exec /etc/X11/xinit/xinitrc.wmaker
;;
afterstep)
exec afterstep
;;
enlightenment)
exec enlightenment
;;
twm)
#xclock -geometry 50x50-1+1 &
#xterm -geometry 80x50+494+51 &
#xterm -geometry 80x20+494-0 &
#xterm -geometry 80x66+0+0 -name login &
xsetroot -solid SteelBlue
exec twm
;;
esac
# If we aren't running from XDM/KDM/GDM and no window manager was
# specified, then we'll run the user's $HOME/.xsession if it's
# executable. This must be set up to run the user's window manager.
if [ -x $HOME/.xsession ]; then
exec $HOME/.xsession $@
fi
# If the user doesn't have their own xsession and none was specified in
# $1, then run the system default session type:
if [ -r /etc/X11/xinit/xinitrc ]; then
exec /etc/X11/xinit/xinitrc
fi
# If a $startup variable is set to define the window or session manager,
# then run that:
if [ -s "$startup" -a -x "$startup" ]; then
exec "$startup"
else
if [ -r "$resources" ]; then
/usr/bin/xrdb -load "$resources"
fi
# Run xsm as a failsafe.
exec xsm
fi
startup=$HOME/.xsession
resources=$HOME/.Xresources
if [ -s "$startup" ]; then
if [ -x "$startup" ]; then
exec "$startup"
else
exec /bin/sh "$startup"
fi
else
if [ -r "$resources" ]; then
/usr/bin/xrdb -load "$resources"
fi
exec /usr/bin/xsm
fi