summaryrefslogtreecommitdiff
path: root/system/xrdp/xrdp-xwmconfig
diff options
context:
space:
mode:
Diffstat (limited to 'system/xrdp/xrdp-xwmconfig')
-rw-r--r--system/xrdp/xrdp-xwmconfig215
1 files changed, 215 insertions, 0 deletions
diff --git a/system/xrdp/xrdp-xwmconfig b/system/xrdp/xrdp-xwmconfig
new file mode 100644
index 0000000000..b614ba6020
--- /dev/null
+++ b/system/xrdp/xrdp-xwmconfig
@@ -0,0 +1,215 @@
+#!/bin/sh
+# Copyright 1999, 2002 Patrick Volkerding, Moorhead, Minnesota USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Modified by Phillip Warner <pc_warner@yahoo.com>
+# for editing xrdp-xinitrc for use with xrdp
+
+# $DWM is the file under /usr/lib/xrdp that points to /etc/xrdp/xrdp-xinitrc.
+# /etc/xrdp/xrdp-xinitrc will be modified by this script if run by root.
+# $UWM is the file under $HOME that will be modified by this script.
+# The values for DefaultWindowManager and UserWindowManager, respectively,
+# in sesman.ini should match these.
+DWM=startwm.sh
+UWM=.xrdp-xinitrc
+
+# First, let's bail if our being here doesn't make sense:
+if [ ! -d /etc/X11/xinit ]; then
+ exit
+fi
+if [ "`cd /etc/X11/xinit ; echo *.*`" = '*.*' ]; then
+ exit
+fi
+if [ ! -d /etc/xrdp ]; then
+ exit
+fi
+if [ $(grep -w DefaultWindowManager /etc/xrdp/sesman.ini | cut -f2 -d"=") != $DWM ]
+then
+ echo "DefaultWindowManager in sesman.ini MUST be $DWM to use this tool. Aborting..."
+ exit
+fi
+if [ $(grep -w UserWindowManager /etc/xrdp/sesman.ini | cut -f2 -d"=") != $UWM ]
+then
+ echo "UserWindowManager in sesman.ini MUST be $UWM to use this tool. Aborting..."
+ exit
+fi
+
+if [ "$USER" = "root" ]; then
+ TMP=/var/log/setup/tmp
+else
+ TMP=$HOME/.xrdp-xwmconfig
+fi
+
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+ chmod 700 $TMP
+fi
+
+# Do we already have an existing default?
+unset PRESELECT
+if [ -L /etc/xrdp/xrdp-xinitrc ]; then
+ CURRENT="$(basename $(/bin/ls -l /etc/xrdp/xrdp-xinitrc | cut -f 2 -d '>'))"
+ PRESELECT=" --default-item $CURRENT "
+fi
+
+# Figure out who we are and set up some background information:
+if [ "$USER" = "root" ]; then
+ BACKTITLE="--backtitle \"Setting system-wide default xrdp window manager at /etc/xrdp/xrdp-xinitrc\""
+else
+ BACKTITLE="--backtitle \"Setting user default xrdp window manager in $HOME/$UWM\""
+fi
+
+# This stops --backtitle from cluttering the initial install:
+if [ ! -r /proc/kcore ]; then
+ BACKTITLE=""
+fi
+
+# Remove any previous script:
+rm -f $TMP/tmpscript.sh
+
+# Add the top of the script:
+cat << EOF > $TMP/tmpscript.sh
+dialog $BACKTITLE --title "SELECT DEFAULT WINDOW MANAGER FOR XRDP" $PRESELECT --menu \\
+"Please select the default window manager to use with XRDP. \\
+This will define the style of graphical user interface the \\
+client computer uses in remote X11rdp sessions." 0 0 0 \\
+EOF
+
+# Add KDE as the first and default entry:
+if [ -r /etc/X11/xinit/xinitrc.kde ]; then
+ echo "\"xinitrc.kde\" \"KDE: K Desktop Environment\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Then, we add GNOME:
+if [ -r /etc/X11/xinit/xinitrc.gnome ]; then
+ echo "\"xinitrc.gnome\" \"GNU Network Object Model Environment\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add XFce:
+if [ -r /etc/X11/xinit/xinitrc.xfce ]; then
+ echo "\"xinitrc.xfce\" \"The Cholesterol Free Desktop Environment\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add Enlightenment:
+if [ -r /etc/X11/xinit/xinitrc.e ]; then
+ echo "\"xinitrc.e\" \"Enlightenment\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add Fluxbox:
+if [ -r /etc/X11/xinit/xinitrc.fluxbox ]; then
+ echo "\"xinitrc.fluxbox\" \"The fluxbox window manager\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add Blackbox:
+if [ -r /etc/X11/xinit/xinitrc.blackbox ]; then
+ echo "\"xinitrc.blackbox\" \"The blackbox window manager\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add WindowMaker:
+if [ -r /etc/X11/xinit/xinitrc.wmaker ]; then
+ echo "\"xinitrc.wmaker\" \"WindowMaker\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add FVWM2:
+if [ -r /etc/X11/xinit/xinitrc.fvwm2 ]; then
+ echo "\"xinitrc.fvwm2\" \"F(?) Virtual Window Manager (version 2.xx)\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add FVWM95:
+if [ -r /etc/X11/xinit/xinitrc.fvwm95 ]; then
+ echo "\"xinitrc.fvwm95\" \"FVWM2 with a Windows look and feel\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add icewm:
+if [ -r /etc/X11/xinit/xinitrc.icewm ]; then
+ echo "\"xinitrc.icewm\" \"ICE Window Manager\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add sawfish:
+if [ -r /etc/X11/xinit/xinitrc.sawfish ]; then
+ echo "\"xinitrc.sawfish\" \"Sawfish without GNOME\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add twm:
+if [ -r /etc/X11/xinit/xinitrc.twm ]; then
+ echo "\"xinitrc.twm\" \"Tab Window Manager (very basic)\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Add mwm:
+if [ -r /etc/X11/xinit/xinitrc.mwm ]; then
+ echo "\"xinitrc.mwm\" \"Motif WM\" \\" >> $TMP/tmpscript.sh
+fi
+
+# Now, add support for the other window managers:
+( cd /etc/X11/xinit
+ for file in xinitrc.* ; do
+ if [ ! "$file" = "xinitrc.kde" -a ! "$file" = "xinitrc.gnome" \
+ -a ! "$file" = "xinitrc.e" -a ! "$file" = "xinitrc.wmaker" \
+ -a ! "$file" = "xinitrc.fvwm2" -a ! "$file" = "xinitrc.fvwm95" \
+ -a ! "$file" = "xinitrc.icewm" -a ! "$file" = "xinitrc.twm" \
+ -a ! "$file" = "xinitrc.mwm" -a ! "$file" = "xinitrc.xfce" \
+ -a ! "$file" = "xinitrc.blackbox" -a ! "$file" = "xinitrc.fluxbox" \
+ -a ! "$file" = "xinitrc.sawfish" ]; then
+ echo "\"$file\" \"$file\" \\" >> $TMP/tmpscript.sh
+ fi
+ done
+)
+
+# Then, the tail end:
+cat << EOF >> $TMP/tmpscript.sh
+2> $TMP/output
+if [ ! \$? = 0 ]; then
+ rm -f $TMP/output
+ echo "Canceled."
+ exit
+fi
+EOF
+
+sh $TMP/tmpscript.sh
+
+if [ ! -r $TMP/output ]; then
+ rm -f $TMP/tmpscript.sh
+ exit
+fi
+
+OUTPUT=`cat $TMP/output`
+
+# If xrdp-xwmconfig is run by root, it changes the system-wide default for users
+# that do not have a $HOME/$UWM:
+if [ "$USER" = "root" ]; then
+ if [ -r /etc/X11/xinit/$OUTPUT ]; then
+ ( cd /etc/xrdp/ ; rm -f xrdp-xinitrc ; ln -sf /etc/X11/xinit/$OUTPUT xrdp-xinitrc )
+ fi
+fi
+
+# Also set up a new $HOME/$UWM:
+if [ -r /etc/X11/xinit/$OUTPUT -a ! "$HOME" = "/" ]; then
+ if [ -r $HOME/$UWM ]; then
+ rm -f $HOME/${UWM}-backup
+ mv $HOME/$UWM $HOME/${UWM}-backup
+ chmod -x $HOME/${UWM}-backup
+ fi
+ cat /etc/X11/xinit/$OUTPUT > $HOME/$UWM
+ # Unlike .xinitrc, $UWM *MUST* be executable
+ chmod u+x $HOME/$UWM
+fi
+
+rm -f $TMP/tmpscript.sh $TMP/output
+