#!/bin/bash # Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This # copyrighted material is made available to anyone wishing to use, modify, # copy, or redistribute it subject to the terms and conditions of the # GNU General Public License version 2. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # redirect errors to a file in user's home directory if we can if [ -z "$GDMSESSION" ]; then # GDM redirect output itself in a smarter fashion errfile="$HOME/.xsession-errors" if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null ); then chmod 600 "$errfile" exec > "$errfile" 2>&1 else errfile=$(mktemp -q /tmp/xses-$USER.XXXXXX) if [ $? -eq 0 ]; then exec > "$errfile" 2>&1 fi fi fi SWITCHDESKPATH=/usr/share/switchdesk # Mandatorily source xinitrc-common, which is common code shared between the # Xsession and xinitrc scripts which has been factored out to avoid duplication . /etc/X11/xinit/xinitrc-common # This Xsession.d implementation, is intended to obsolte and replace the # various mechanisms present in the 'case' statement which follows, and to # eventually be able to easily remove all hard coded window manager specific # content from this script. See bug #142260 for additional explanation and # details. All window manager rpm packages and desktop environment # packages should be modified to provide the Xsession.d/Xsession.$wm scripts # to start themselves up. In the future, the legacy switchdesk mechanisms # and hard coded window managers and desktop environments will be removed from # this script. XCLIENTS_D=/etc/X11/xinit/Xclients.d if [ -d "$XCLIENTS_D" -a "$#" -eq 1 -a -x "$XCLIENTS_D/Xclients.$1.sh" ]; then exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $XCLIENTS_D/Xclients.$1.sh" else # now, we see if xdm/gdm/kdm has asked for a specific environment case $# in 1) if [ -x "$SWITCHDESKPATH/Xclients.$1" ]; then exec -l $SHELL -c "$SWITCHDESKPATH/Xclients.$1"; fi; case "$1" in failsafe) exec -l $SHELL -c "xterm -geometry 80x24-0-0" ;; gnome|gnome-session) # lack of SSH_AGENT is intentional, see #441123. though # the whole thing should really happen in xinitrc.d anyway. exec -l $SHELL -c gnome-session exec /bin/sh -c "exec -l $SHELL -c \"gnome-session\"" ;; kde|kde1|kde2) exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"startkde\"" ;; twm) # fall back to twm exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"twm\"" ;; *) # GDM provies either a command line as the first argument or # provides 'failsafe', 'default' or 'custom'. KDM will do the # same at some point if [ "$1" != "default" -a "$1" != "custom" ]; then exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"$1\"" fi ;; esac esac fi # otherwise, take default action if [ -x "$HOME/.xsession" ]; then exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.xsession" elif [ -x "$HOME/.Xclients" ]; then exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients" elif [ -x /etc/X11/xinit/Xclients ]; then exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients" else # should never get here; failsafe fallback exec -l $SHELL -c "xsm" fi