I've been researching this topic myself today and I agree that the documentation on Xrdp sucks and on X11rdp non-existent.
To answer your question:
Quote:
if I install Xrdp on my Ubuntu host that I can use 'Remote Desktop Connection', as is, from my Windows workstation and see my/a Ubuntu desktop GUI session on the Ubuntu host?
|
The answer is "in theory yes, but in reality no". If I understand correctly 'Remote Desktop Connection' won't just
magically work after this and will require some additional configuration (
example) which is might as well be easier done by editing configuration files anyway (and leaving 'Remote Desktop Connection' alone).
Also, if by "Ubuntu desktop GUI session" you mean the same screen as shown on physical display, then no, Xrdp is not enough (but X11rdp should do it). With Xrdp you will see a *virtual* desktop when connecting this way and not the actual computer's screen. You will be able to run all the programs etc, but they will be separate from what is being ran/shown on your physical screen on that computer.
Basically, Xrdp is supposed to work like this:
Code:
Windows RDP client <-> (RDP protocol message exchange over the network) <-> X-rdp service <-> (VNC protocol message exchange) <-> X-vnc service <-> Linux graphical applications
The "X" in all these places stands for "
X Window System", which is basically a program interface which allows Linux graphical applications express what they want to draw, and then the X Window Server actually draws it on the screen (either actual physical screen or simulated screen observed remotely).
What 'Remote Desktop Connection' feature of Ubuntu does is allowing VNC clients connect and see graphical UI remotely:
Code:
VNC client (could be Windows, Linux, etc) <-> (VNC protocol message exchange over the network) <-> X-vnc service <-> Linux graphical applications
Applications do not even know that they draw not on the physical display, they just send commands of what needs to be drawn and X-vnc service transmits them over to the client. Physical display works the same way, except there is nothing to transmit - X Server just draws it on the screen. Ubuntu and other Linux distributions use X server called "
X.Org Server". Note, that usually there is also another piece of software which is called "desktop environment", main part of which is "window manager" which actually draws all the "system UI" - windows, system menus etc. and provides interfaces for those. Examples of those are
KDE, GNOME, MATE, XFCE.
If we include "Desktop environment" in the communication chains above, they will look like this (I skipped the fact that Xrdp talks to Xvnc locally using VNC protocol):
Code:
Windows RDP client <-> (RDP protocol message exchange over the network) <-> X-rdp service <-> X-vnc service <-> DE <-> Linux graphical applications
Code:
VNC client (Windows, Linux, etc) <-> (VNC protocol message exchange over the network) <-> X-vnc service <-> DE <-> Linux graphical applications
Now, to the topic of actually controlling computer's main physical display remotely. Since usually it's being drawn by "X.Org Server", there is no way to tell it to "hey, in addition to drawing everything on the monitor could you please also copy everything over the network". So, there are special programs which do this by literally screen-grabbing the screen image and sending it over to the remote clients (and delivering back inputs from mouse/keyboard).
One such program is "
X11Vnc" and another... drum roll... "X11rdp".
For X11rdp we have:
Code:
Windows RDP client <-> (RDP protocol message exchange over the network) <-> X-rdp service <-> X11rdp (polling X.Org Server for display data)
And for X11Vnc:
Code:
VNC client (Windows, Linux, etc) <-> (VNC protocol message exchange over the network) <-> X11Vnc service (polling X.Org Server for display data)
(It's possible that in case of X11rdp there is to Xrdp involved so it looks even more similar to X11Vnc, but I am not sure)