#!/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