In contrast, RDP and VNC type protocols are screen-replicating designs more suited to higher latency connections.
Finally, if you're using RDP, I'd suggest Remmina as an client. It's fantastic.
With ssh and X forwarding, my local gnome constantly threw up modal dialogs that the forwarded window was unresponsive, forcing me to keep clicking "Wait" to dismiss the modal, then quickly interact with the forwarded window before the next "unresponsive" modal popped up.
X11, the protocol, is actually mostly asynchronous, it's the libraries and the applications that were built around it in synchronous ways. If you run older applications (like 90s to early 2000s) over X11, it's a lot less bad than modern apps.
Something like this: curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd --mail-from 'xyz remote IP' --mail-rcpt '[email protected]' --upload-file mail.txt --user '[email protected]:pwd'
Where rather than the mail.txt file I can send the public IP of the remote machine, such as the output of "curl ipinfo.io/ip". Unfortunately I couldn't find how to do that. Backquotes also don't work, it wants a file.
The purpose would be to build a "pre-command" one liner that sends me an email with the remote IP as payload every time the remote user accepts an external connection through remmina. The remote users are old relatives with no knowledge about computers, so the simpler (one click) the better.
Have you tried process substitution?
<(curl -s ipinfo.io/ip)
https://en.wikipedia.org/wiki/Process_substitutionConnect to an existing session and just "continue where you were" is not easy though there might be unmaintained solutions.
If you use ssh forwarding and for some reason gets disconnected, the application dies.
I'd love for you to tell me I'm wrong :-)
The way rdp works on windows is the only thing where I think windows is superior.
Vnc, TeamViewer and similar are not remotely close and they will leave your remote screen open for anyone to see.
I have never heard of Parsec before but it's not immediately obvious that it's an alternative to RDP (Desktop usage)
However, as far as the actual implementation goes, RDP is closer to X11 than VNC. VNC is basically a remote frame buffer, akin to streaming video. This makes it very cross platform friendly, but also IMO feels very slow, even on a local network. RDP is closer to X11 in that it sends display directives (AFAIK, please correct me if I'm wrong) so that it can draw them on the client as they would be drawn on the server. Think sending a "draw button" command rather than sending an image of pixels that are how the button would be rendered. This, combined with compression, helps make RDP feel very fast compared to VNC, and can be used very well even over the internet, unlike X11. I connect to RDP servers in Azure all the time and sometimes forget I'm not working locally, while with VNC you're always aware that it's not as performant.
I really wish there was something like RDP as a server for Linux. (OP seems to be a client AFAICT?) Given Microsoft's recent investment in Linux, maybe this will happen soon?
RDP has capability[1] to send draw commands directly.
From memory it has had this since the early days. At least I used RDP against NT4 servers over a single ISDN link and it was very smooth. I can't believe it could have done that by streaming bitmaps ala VNC.
[1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols...
Found an RDesktop implementation from 2001[1] which implements the draw commands. So yeah, old stuff.
Good toolkits like WPF and UWP implement their own drawing by utilizing Direct3D. These two are using DX 9.0c and D3D 11.0 respectively, and both are supported in RDP protocol.
If you connect to a remote PC and run dxdiag.exe there, you’ll see 3D acceleration is supported, you’ll also see the GPU driver got replaced with completely different one, it’s no longer Intel, Nvidia or AMD, but the one from MS.
This has interesting consequences, e.g. all D3D APIs which move data from system RAM or VRAM or back now become network calls, the system RAM is on the server, VRAM is on the client.
P.S. Modern web browsers use Direct2D and DirectWrite to render stuff on Windows, there’s D3D 11 underneath, i.e. RDP remote rendering is fully supported for browsers and Electron apps.
1) X11 is already a network aware display system, so it wouldn't take too much work to run remote.
2) SSH has built-in X11 forwarding with `ssh -X <host>`, when you run commands they will be rendered locally. On OSX this needs an X11 server (XQuartz) to work properly.
3) There are "better" remote desktop solutions like "parsec"[0] which run on Windows and Linux. They offer much lower latency and higher bit-depth. They're designed for games. (obviously this comes at the price of bandwidth).
[0]: https://parsecgaming.com/features/