File xrdp-bsc965647-allow-admin-choose-desktop.patch of Package xrdp.31863
Index: xrdp-0.9.13.1/sesman/startwm.sh
===================================================================
--- xrdp-0.9.13.1.orig/sesman/startwm.sh
+++ xrdp-0.9.13.1/sesman/startwm.sh
@@ -7,34 +7,82 @@
# exec xterm
-# Execution sequence for interactive login shell - pseudocode
-#
-# IF /etc/profile is readable THEN
-# execute ~/.bash_profile
-# END IF
-# IF ~/.bash_profile is readable THEN
-# execute ~/.bash_profile
-# ELSE
-# IF ~/.bash_login is readable THEN
-# execute ~/.bash_login
-# ELSE
-# IF ~/.profile is readable THEN
-# execute ~/.profile
-# END IF
-# END IF
-# END IF
+#start the window manager
+wm_start()
+{
+ #To customize system-wise session, edit this file.
+ #To customize user specific session, copy this file to $HOME and edit it.
+ #Please refer to DefaultWindowManager and UserWindowManager in /etc/xrdp/sesman.ini for more details.
+
+ #The default session is gnome (GNOME Session)
+ #sle means SLE-Classic Session
+
+ SESSION="gnome"
+
+ case $SESSION in
+ sle)
+ if [ -r /usr/bin/gnome-session ]; then
+ export XDG_SESSION_TYPE=x11
+ export GNOME_SHELL_SESSION_MODE=sle-classic
+ /usr/bin/gnome-session --session gnome-classic
+ elif [ -r /usr/bin/icewm-session ]; then
+ /usr/bin/icewm-session
+ fi
+ ;;
+ gnome)
+ if [ -r /usr/bin/gnome-session ]; then
+ export XDG_SESSION_TYPE=x11
+ /usr/bin/gnome-session
+ elif [ -r /usr/bin/icewm-session ]; then
+ /usr/bin/icewm-session
+ fi
+ ;;
+ plasma)
+ if [ -r /usr/bin/startplasma-x11 ]; then
+ export XDG_SESSION_TYPE=x11
+ /usr/bin/startplasma-x11
+ elif [ -r /usr/bin/icewm-session ]; then
+ /usr/bin/icewm-session
+ fi
+ ;;
+ icewm)
+ if [ -r /usr/bin/icewm-session ]; then
+ /usr/bin/icewm-session
+ fi
+ ;;
+ esac
+}
+
+#Execution sequence for interactive login shell
+#Following pseudo code explains the sequence of execution of these files.
+#execute /etc/profile
+#IF ~/.bash_profile exists THEN
+# execute ~/.bash_profile
+#ELSE
+# IF ~/.bash_login exist THEN
+# execute ~/.bash_login
+# ELSE
+# IF ~/.profile exist THEN
+# execute ~/.profile
+# END IF
+# END IF
+#END IF
pre_start()
{
- if [ -r /etc/profile ]; then
+ if [ -f /etc/profile ]
+ then
. /etc/profile
fi
- if [ -r ~/.bash_profile ]; then
+ if [ -f ~/.bash_profile ]
+ then
. ~/.bash_profile
else
- if [ -r ~/.bash_login ]; then
+ if [ -f ~/.bash_login ]
+ then
. ~/.bash_login
else
- if [ -r ~/.profile ]; then
+ if [ -f ~/.profile ]
+ then
. ~/.profile
fi
fi
@@ -42,56 +90,20 @@ pre_start()
return 0
}
-# When loging out from the interactive shell, the execution sequence is:
-#
-# IF ~/.bash_logout exists THEN
-# execute ~/.bash_logout
-# END IF
+#When you logout of the interactive shell, following is the
+#sequence of execution:
+#IF ~/.bash_logout exists THEN
+# execute ~/.bash_logout
+#END IF
post_start()
{
- if [ -r ~/.bash_logout ]; then
+ if [ -f ~/.bash_logout ]
+ then
. ~/.bash_logout
fi
return 0
}
-#start the window manager
-wm_start()
-{
- if [ -r /etc/default/locale ]; then
- . /etc/default/locale
- export LANG LANGUAGE
- fi
-
- # debian
- if [ -r /etc/X11/Xsession ]; then
- pre_start
- . /etc/X11/Xsession
- post_start
- exit 0
- fi
-
- # el
- if [ -r /etc/X11/xinit/Xsession ]; then
- pre_start
- . /etc/X11/xinit/Xsession
- post_start
- exit 0
- fi
-
- # suse
- if [ -r /etc/X11/xdm/Xsession ]; then
- # since the following script run a user login shell,
- # do not execute the pseudo login shell scripts
- . /etc/X11/xdm/Xsession
- exit 0
- fi
-
- pre_start
- xterm
- post_start
-}
-
#. /etc/environment
#export PATH=$PATH
#export LANG=$LANG
@@ -106,6 +118,8 @@ wm_start()
# includes
# auth required pam_env.so readenv=1
+pre_start
wm_start
+post_start
exit 1