The "ssh -X" and "ssh -Y" options above *DO* allow remote X11 apps to use your current desktop Xserver.
That may or may not be what you want.
--
Rdesktop(and I don't use it) claims to support Windows RDP protocol, so it's irrelevant to X11.
--
vnc (various implementations) was a useful way to create a local win for a remote desktop, but seems to have fallen into disuse. It doesn't transport X at all.
--
There are several packages that create another Xserver inside a local desktop window. Then you can just arrange for remote Xclients (apps) to use that window and perhaps start a new session on the remote system. Xnest is one xserver-in-a-window - and it still exists, but it's pretty broken. The newer replacement is Xephyr. Xspice is another but it's primarily aimed at virtualization.
--
Here is a 'sshnest' script I use.
getdisp finds an unused X DISPLAY name (like :1 ,:2 ...)
So the script creates an Xephyr window and then connects it via ssh -Y (assumes no passwd) to the far system, and then starts a brand new session there. It assumes startxfce4, startkde or /usr/bin/gnome-session exists and work (last definition applies) , but I haven''t used gnome-session in quite a while.
cat sshnest
Code:
#!/bin/bash
# NOTES:
# - on client(Xserver) system
# yum install xorg-x11-server-Xnest xorg-x11-server-Xephyr
# - on server
# yum install kdebase-workspac
# -
# Xnest $DISP & DISPLAY=$DISP ssh -Y $USER$HOST -f /usr/bin/startkde
# startx -- /usr/bin/Xnest -name "$HOSTNAME Default" $DISP
# startx /usr/bin/startkde -- /usr/bin/Xnest -name "$HOSTNAME XFCE" $DISP
# startx /usr/bin/xfce4-session -- /usr/bin/Xnest -name "$HOSTNAME KDE" $DISP
SCREENMODE="800x600"
SCREENMODE="1024x768"
STARTSESSION=/usr/bin/gnome-session
STARTSESSION=/usr/bin/startkde
STARTSESSION=/usr/bin/startxfce4
usage()
{
echo "Usage: $0 user@host" >&2
exit 2
}
# find first free local display number & name
getdisp()
{
DISP=""
for((n=0;;n++))
do
[ ! -e /tmp/.X${n}-lock -o ! -d /proc/$(egrep -o [0-9]+ /tmp/.X${n}-lock 2>/dev/null) ] && break
done
DISP=":$n"
}
# ---------------------------------------------
# get user@host arg
[ $# -ne 1 ] && usage
USERHOST=$1
getdisp
Xephyr -screen $SCREENMODE -title "$USERHOST $DISP" $DISP 2>/dev/null & \
DISPLAY=$DISP ssh -Y $USERHOST -f $STARTSESSION 2>/dev/null
sshnest stevea@hypoxylon
gets me the image shown