Neal Gompa
9a3b27705c
This changes Xsession and Xclients to call to the KDE Plasma X11 session binary directly, rather than assuming that "startkde" will start an X11 session.
94 lines
3.5 KiB
Bash
94 lines
3.5 KiB
Bash
#!/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"
|
|
[ -x /sbin/restorecon ] && /sbin/restorecon $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 obsolete 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 [ "$#" -eq 1 ] && [ -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|kdeplasma)
|
|
exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"startplasma-x11\""
|
|
;;
|
|
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
|
|
|