HACKER Q&A
📣 asiachick

Why is there no performant remote desktop for Mac/Linux?


IIUC, RDP (Microsoft's remote desktop protocol) sends draw commands across. It's the default way to access remote desktops on Windows. Conversely, AFAICT, the default way on MacOS and Linux is VNC which IIUC sends all the pixels (with compression). I've noticed for years I can work remotely, edit code, etc on RDP. I've done it around the across 8000 miles and had hardly any lag. Conversely I'm trying to share 2 computers right next to each other in the same network via VNC and it's horribly laggy.

Is this just not an itch anyone has wanted to scratch in the last 25 years? On Linux you can maybe XWindows your way to a faster connection by what about Mac? Also, RDP seems to let me run GPU based stuff where as XWindows you're actually not seeing the computer's display.


  👤 dan-robertson Accepted Answer ✓
0. RDP is not as simple as sending draw commands. It has eg commands that correspond to scrolling regions of the screen to save on network use, a framerate limit (25fps I think) and allows some colour space reduction to reduce bandwidth too. I think it does a bunch of raster things (eg maybe caching floating windows like right-click menus). I think the windows server implementation can take advantage of information about the composition of the screen from windows.

1. There is some trade off of latency for bandwidth: it may take more time to figure out a small change to send over the network. Looking at api use from eg X may help with old apps that make small updates but more modern apps (or even modern fonts) which just render to gpu buffers and composite are less amenable to this. Very modern apps that use special apis to do lower latency scrolling/resize may be a little better.

3. A lot of the time for Linux the solution is to use ssh and terminal apps as they tend to make smaller updates and require less bandwidth. You can also try mosh to compensate for high latency connections. Text editors can work ok in terminals, especially fancy modern ones with eg mouse support. And for web things you can do set up a socks proxy over ssh which I think can work for a lot of apps which are really just web sites. So this may be part of the reason: fewer people see Remote Desktop as necessary.

4. I’ve had reasonable success with xrdp on the server and a windows client. One needed to select 32-but colour to get a better protocol version and turning off double-buffering in some apps (eg emacs) helped. But that was over a wired high bandwidth low latency connection.


👤 kaladin-jasnah
I have been working on one for the past two/three months to scratch this itch. I will probably release it soon (and hopefully shill it on HN!). In the meantime, NoMachine is a very good remote desktop software (macOS and Linux), and possibly Sunshine (GameStream host), but basically I'm not sure why a more popular one exists.

In essence, a good remote desktop software will use video encoding/decoding (h264/265 for both ways being very fast) to encode captured frames of the desktop, and a good transport protocol over the network with good tuning parameters to achieve low latency (which is what mine does). I believe this is what NoMachine and Parsec do and why they are so good (along with NICE DCV). From my work I've found that video processing libraries/techniques are extremely poorly documented (think the libav* family of libraries), which makes it a very difficult segment to conquer because of what I perceive as honestly massive gatekeeping (or by Hanlon's razor perhaps laziness). There's nothing impossible about making a remote desktop software (I can say this since I'm doing it right now) but I can say it's harder than it has to be.


👤 tgflynn
This was a solved problem 30 years ago in the Unix and later Linux worlds. Completely remote X based terminals/thin clients were quite common. My impression is that things have mostly regressed since then, probably due to neglect since it's a kind of functionality that not many people seem to be interested in these days.

👤 jeroenhd
Ubuntu 22 ships an RDP server by default these days. Haven't tried it myself (my manual attempts at running xrdp way back in Ubuntu 18 broke stuff) but it seems to work quite well. Just open the settings application and enable it. Might not even be Ubuntu-specific, might be available in every GNOME distro?

Personally, I've used stuff like Steam in-home streaming and Parsec for remote desktop access. They're more meant for game streaming but they handle normal applications just fine and they run on pretty much any platform I can think of. As an added bonus, there's something nice about the idea of picking up a cheap second hand Steam Link and using it as a thin client for your PC.

Don't know about macOS, though.


👤 philsnow
I haven't seen anybody mention xpra ( https://xpra.org/ ) yet, but I used to use it daily a while back when I still used linux on my laptop. "Screen for X" really jives with how I wanted to use it (beefy server, ultrabook laptop, fast local network).

X2Go is also pretty good IIRC.

I used NoMachine at work a few jobs ago, but I didn't like how it required a weird dedicated unix user for itself. I don't know why they needed that (maybe so that they could multiplex multiple users over a single port or something like that?), but I never understood why it didn't just run as my own user. It was fast, I'll give it that.


👤 topspin
Two hosts on the same LAN can have excellent performance with VNC. There are some things you need to know and some work you need to do, however.

First, the two most common DEs, Gnome and KDE, use X compositing by default. This is very bad for VNC. You want to turn that off. Unfortunately you can't with Gnome, which is sad. You can turn off compositing in KDE, and that's one reason I've preferred KDE for years. Other DEs can also forego compositing.

Second, turn off all encryption between the VNC client and server. No SSH-ing, no build-in VNC encryption. Nothing. Ignore the nag warning about the lack of encryption some VNC clients hit you with.

Third, no VNC compression. You're on a LAN and you don't need it or the lag it adds.

Forth, don't "share" the VNC session with the remote host's desktop. Use the vncserver headless X server. Every "shared" VNC system (where the desktop appears both local and remote) I've encountered is laggy.

Fifth, use a fast VNC client. RealVNC's VNC Viewer is excellent.

Sixth, do not scale. Ensure your vncserver's resolution matches your VNC's client size exactly.

Seventh, tune your DE to remove whatever animations or alpha effects exist.

Eighth, no wifi. Ethernet only between VNC server and client. Wifi is awful for this.

Ninth, use decent ethernet gear. Some NICs are low end and impose more latency. Likewise, low cost switches are bad news as well.

Do these things and your VNC session will be difficult to distinguish from a local DE. If you're using gigabit or faster LAN you'll be able to play video through VNC reasonably well.


👤 emaxt6
Nobody mentioning something like PCoIP?

I think the direction to go, being compute/GPU nowadays much more powerful and even in the same chip (and bandwidth), is to just remote the framebuffer or the video output built on the source machine, with realtime hardware assistance. No primitives, no API... just pixels, so both world can evolve without being in lockstep.

PCoIP is proprietary but the basic philosophy is pretty sounding ("graceful degradation" etc., I've used it even across WANs and the experience was pretty good).

Amazon AWS is using it to stream its remote cloud desktops.


👤 gregmac
My work setup (in my house) has been entirely based on RDP for a few years now, and I have to say it's great. I basically never physically touch my work laptop unless I'm not working from within my actual office.

Two of my three monitors run fullscreen RDP to my work laptop. I run Slack and Teams on the other one (on my personal PC) because audio/video over RDP is the one thing that doesn't work well. I can even copy/paste images across.

At one point I tried using a dock. It required me to physically switch the cable as well as switch inputs on one monitor (to still connect to my PC's GPU). Though a multi-hundred-dollar KVM could have "solved" this, it was still occasionally glitchy, comparatively slow to switch, and, frankly, just not as convenient. Doing it 100% software is just better.

I wish I could get the same experience doing this to a linux or mac system. In my experience, remote macOS over VNC is a punishingly bad experience, while RDP to a system even sitting physically next to the mac (same internet/VPN/LAN connection) is entirely usable.


👤 ravenstine
VNC doesn't send all pixels of every frame. If you look at the RFC for the frame buffer protocol it uses, it concerns itself with areas of the screen.

https://www.rfc-editor.org/rfc/rfc6143.html

I've only seen very good performance using the built-in VNC client/server for macOS. You can try it out by turning on remote sharing and doing this from the terminal:

`open vnc://:5900`


👤 nousermane
Sending pixels is not necessarily a show-stopper for a remote desktop that feels "snappy".

Case in point - scrcpy, remote "desktop" to access Android from Linux/Mac/PC. Very responsive, including during fancy animations, playing video, games, etc.

https://github.com/Genymobile/scrcpy


👤 smolder
I used to use NoMachine with good success. I believe they have the cross platform capability and performance you might expect, though it's been years since I used it. Can it work?

👤 FinalDestiny
As someone who likes to remotely stream games from my desktop, Parsec has been extremely easy to use and very performant. Could be worth a try!

👤 kllrnohj
Chrome Remote Desktop works pretty well and works on all OS's

https://remotedesktop.google.com/


👤 m463
I think it's worth mentioning that apple screen sharing is pretty amazing for apple <-> apple.

You can screen share a remote mac very efficiently, drag and drop files, use keystrokes such as modifier-plus-key in a sane way, and more.


👤 XorNot
This comment is interesting to me but for a very different reason: the real magic I find in RDP is that the hand off when going from "local" to "remote" is seamless. On windows, without any pre-setup other then enabling the service, I can logon remotely (and it will lock the screen locally) and resume using all my apps. Then I can come back to that workstation, logon (and it'll kick off the remote session if it's there) and keep using the apps locally - and repeat over and over.

And crucially: none of this harms the performance of my local session. I don't have any background daemons or special modes running, I'm not in a "virtual remote session" when working locally. It adapts resolution and screen sizes when I switch to remote consoles.

Everything just works really well, whereas the same is not remotely true on Linux. The best in class - x2go (NoMachine variant) can't do this. My local session can't become a resizeable remote session, it just becomes a slow screen grab of it, and doesn't allow me to lock the remote session when I log in, or kick off the remote session when I log back on.

If anyone knows how or what can get this experience to Linux, it's IMO not only something I greatly desire - it's vital.


👤 rel
Meshcentral is fantastic and cross-platform. Hosting it yourself is really simple. One of my favorite open source projects. https://meshcentral.com/info/

👤 AdieuToLogic
TigerVNC[0] might be of interest in this domain.

0 - https://tigervnc.org/


👤 dhd415
My work issues me a MBP that I can't stand, so finding a way to access it remotely has been a priority. For CLI apps, I SSH into it from a Linux machine, but for GUI apps, I've tried X (most Mac apps are Cocoa and not X-compatible), NoMachine (it was ok), Splashtop (ok speed but glitchy), VNC (slow), and Jump Desktop (https://www.jumpdesktop.com). I found Jump Desktop to be surprisingly good, roughly on par with RDP. They have a free version, so I'd recommend you try it.

👤 29athrowaway
There's an implementation of RDP for Linux, Xrdp.

https://github.com/neutrinolabs/xorgxrdp


👤 drdec
Remmina on linux will support RDP, VNC, SPICE and others. I've used it to remote into my Windows laptop from my linux desktop.


👤 phatfish
VNC is not too bad now with internet connection speeds increasing. It is usable for development, but not for video/graphics in the way RDP can.

I've found the SPICE protocol using the QXL driver with some compression settings tweaks gives the best performance. The latency is better than VNC, but video/graphics intensive screens are still a problem unfortunately.

I use it to connect to the console of a VM over VPN for Linux development currently.


👤 dominicl
I've been using https://remotedesktop.google.com/ for quite some time now with both Linux and MacOS because it provides the best latencies. Anyone knows what protocols it's using? And is this feature set part of the open source chromium distribution as well?

👤 berkut
I think there is - if you're willing to pay for it: Parsec's a pretty good cheap solution, and Teradici (HP have taken them over now) is good at the enterprise level.

👤 octoberfranklin
There is an excellent and ultra high-performance remote desktop server for Linux. It's called xorgxrdp:

https://github.com/neutrinolabs/xorgxrdp

I love it. It only works with X11, not with Wayland. Wayland refuses to add a protocol command for "blit this image to this surface" (would be ~20 bytes). That is the critical feature your protocol must have in order to get good RDP performance. Windows GDI has it.

To get good, responsive RDP you need to be able to send an image across the network once, and then be able to blit it to on-screen surfaces without having to upload the whole image again.

Windows GDI has this. X11 has this. That's why they're fast.


👤 pessimizer
In Linux's case I think it's partially because RDP/VNC afaik is only really useful for proprietary, locked down software. If I want to do work on remote resources that I can't do over ssh, I'll just download the files and my config, and install the program needed to work with them from my package manager.

The only real other uses for it that I can think of would be if I were working with graphics/video with files so large that transferring them would be annoying, or cross-platform access, like working on a remote Windows installation from a Linux machine. But for that, there seem to be multiple programs on Linux that implement RDP well enough for MS itself to recommend them.


👤 PaulHoule
Circa 1995 the physics department I was studying at received a grant from Microsoft and Intel to buy a large number of x86 workstations, first most of them were running Windows NT but the only people who would use NT were another grad student who liked Windows and me who would use vnc to log into a Linux computer without competing for one.

That grad student and I argued about many things, one of which was the relative merits of X windows and RDP and he was right about that one. RDP was written with the X Windows experience in mind and it performs much better. Compressors for the X protocol were made but they did’t address the high latency nature of the protocol.


👤 rcarmo
I’ve been using Xrdp (xorgxrdp) on Linux for years and thoroughly recommend it. It is stupendously efficient, and has evolved a lot beyond the ICA-based mapping of Windows primitives (current RDP streams owe more to video streaming than to any direct mapping of graphics calls).

It has also become a very efficient protocol on the client side: only last week I set up a dedicated terminal using a 512MB Raspberry Pi 3A (https://taoofmac.com/space/blog/2022/08/14/2030), and I can stream a Fedora desktop to it at 2560x1080 with audio (i.e., good enough to watch windowed video) and very low latency over Wi-Fi.

On the Mac, there is no equivalent because Apple pretty much neglected anything to do with remote displays — Apple Remote Desktop is a variation of the VNC protocol with extra authentication but no real encoding improvements (and designed to manage Macs in classrooms or small businesses over a LAN), so it completely lacks any real ability to work over real-world remote connections.

There have been a few attempts at jerry-rigging an RDP proxy on top of the built-in Mac VNC server, but I haven’t seen anything working in years. And NoMachine is just plain useless in most scenarios.

(I’ve been using VNC, Citrix and RDP over the past couple of decades and am quite into all the details - I’ve also streamed desktops over H.264 and various multicast setups for electronic signage, so I’ve explored plenty of hacks)


👤 password4321
Apple Remote Desktop is the official client for Mac (server is built-in), only $80 with 2 stars after ~275 ratings:

https://support.apple.com/guide/remote-desktop/welcome/mac

https://apps.apple.com/us/app/apple-remote-desktop/id4099073...


👤 jlarocco
I'm not sure VNC is the really the default on Linux, or that there even is a "default" solution.

On local networks I've had good luck tunneling X, and it's even worked well running lightweight programs remote over a VPN in a pinch.

For "real" remote connections through the internet, x2go has been pretty good. At a previous job I used Remmina (an RDP client) to connect to Windows machines, and X2Go for Linux machines, and they felt about the same to me.

It really depends far more on network speed than anything else.


👤 pmontra
I noticed that remote desktop from Linux to Mac (with Remmina) is much slower than Linux to Windows 10. It's definitely RDP on Windows, maybe it's VNC on the Mac.

No idea about the performances of a remote Linux desktop because I connect to remote machines with ssh and use only the command line. It's maybe 25 years since I run remote X11 applications to my local server.

There are other apps like NoMachine and TeamViewer. I never used them with a remote Mac.


👤 readerbaza
With Windows RDP it's possible to login in the same session that was started at the phisical machine. Also the physical monitor doesn't wake up upon login and the desktop remains password locked.

None of the options I tried on linux could match this features.

NoMachine did perform well but having the remote computer in the same room I could see it was mirroring the physical monitor and I could type on the keyboard. It does have a feature to make the screen black and lock inputs but then you're unable to log in from physical even if you know the password


👤 mike_hearn
You might want to try https://drovio.com/ - it's not free, but I searched a few years ago for the best screen sharing software and so far never found one that beats it.

Key features:

1. Extremely fast and smooth screen sharing. I've used RDP, I've used VNC, I've used Chrome, I've used Apple's screen sharing. None beat it.

2. Multiple mouse cursors! You can see where your co-workers mouse is, and they can click and interact with your desktop just like you do (if allowed of course). So far this has been the best way to do interactive code review sessions and even some pair programming.

3. Smooth animations. I originally started using it (back when it was called USE Together) because I wanted to do a presentation remotely that would show smooth 60fps animations from an app I was working on. It was the only one that could do it.

I never used it on Linux however.


👤 than3
The very simple answer to your question is, the developers that have made these great things weren't Management people. They don't generally work in MiS, and when they target something, they've just gone their own way.

This leaves multiple fragmented camps of GUI to target, increasing the technical debt before you can get anything done. Wayland was a step forward, but overall 20 years too late. This stuff isn't rocket science; if something hasn't been done its a structural issue that needs to be addressed but the project maintainers of the projects that you would need to target don't see it that way.

Why should someone that puts effort in to a project like this be forced into a dovetailed management strategy that is doomed to maintainability failure as a 1 bus factor project.


👤 asadlionpk
In the past, I did some optimizations on top of guac (https://guacamole.apache.org/) and got pretty nice results.

I used that 'protocol' to build this: https://allmydesktops.com/


👤 gerdesj
meshcentral - https://meshcentral.com/info/ - self hosted server needed for best effect.

Open Source and development is lead by an Intel employee. I use Arch (btw) exclusively on my personal gear and I'm a first class citizen along with pretty much everything. The Windows binaries are signed too, which is nice. It also fully supports Intel AMT (vPro) which is probably why it is supported by Intel.

You can auth with say MS Azure (documented config required) so you simply click on the MS logo instead of filling in username and password and if you have an Azure cookie you go straight in or you go through the usual MS sign in thing. There are several more auth/auth mechs.

There is an agent install required and my Ansible playbook for it is roughly 10 lines long so rather simple.


👤 acd
You can use Cendio Thinlinc which uses jpeg turbo over SSH for faster remote VNC expierance.

Cendio Thinlinc https://www.cendio.com/thinlinc/what-is-thinlinc

Also you can use game streaming technologies such as Steam remote play over layer2 VPN and hack it to stream your desktop. Since game streaming uses mpeg4 like video compression technology and is built for low latency the lag will be less and video quality good.

Steam streaming https://store.steampowered.com/streaming/

You need a Layer2Vpn to use steam streaming Freelan layer 2 VPN https://www.freelan.org/


👤 Inhibit
X2Go here, although it looks like it needs updates for the future to continue.

NX (the protocol it uses) had a novel way of only updating pixels that were changed and tunnels through ssh for security. Although if you're curious on the technicals look them up; my knowledge of it's got to be 20 years old at this point.


👤 indianmouse
Really interesting conversations here! Thanks community.

Is there any free / open source solution for Mac? Parsec is really nice. So is JumpDesktop. But running a closed source is a little jittery because no one knows what it could do and capable of.

The workflow does require some security and privacy since it is not like gaming. Sometimes accessing a sensitive file or a document across multiple networks requires the opensource software's trust which can never be provided by any closed source application.

Some of the mentioned solutions like RustDesk is really good and it is open source and can be self hosted (it does win on many areas naturally!), but it still lacks the performant part to the likes of Parsec or JumpDesktop or similar high performance RDP solutions. Anydesk is again closed source.


👤 technofiend
For demonstration purposes I've stood up Digital Ocean droplets, installed Apache Guacamole and streamed YouTube videos. If that's your definition of performant check out the app: it's easily installed and configured and there are demo scripts on GitHub that automate it.

👤 btax
I went through a back injury that saw me wanting to use my desktop from bed for extended periods of time. Support for remote desktop _with audio_ seems very lacking. xrdp on Ubuntu sorta works, except that you can't easily drop into an existing session, and it develops horrible audio lag/stutter if too much of the screen changes at once.

I've settled on Steam Link for remote desktop on Linux. It still has one big issue for me: the cursor rendered by Steam jumps around weirdly at the edges of windows. I would love to solve that problem. However, apart from that, it flawlessly transmits video and audio in a way that Just Works.

I just wish it was packaged as a standalone solution.


👤 bschwindHN
For many setups, we now have enough bandwidth between peers to stream video with low latency and with a "good enough" to "great" quality, at 60 FPS.

For most cases you just need a GPU or some hardware video encoder (H264/H265/VP9/AV1, etc.) that can work in real time. It's not the most efficient in terms of bandwidth, of course, but if you have a decent connection to your remote peer it's the most straightforward way to accomplish this on any system.

I haven't tried Parsec personally but from their website description and screenshots, it looks like they're taking this approach and I bet it works great.


👤 mxvanzant
I found that RustDesk worked very well for me: https://github.com/rustdesk/rustdesk

(I'm using it for linux to linux.)


👤 noduerme
It's probably not what you're looking for, as it's proprietary & closed-source, but I've found AnyDesk to be pretty smooth. They have a free tier for personal use. I really only use it to help out my parents when they can't figure something out on their computers, but one advantage is it's very easy to walk a non-technical person through the setup process, without knowing anything about their network topology.

For my own gaming I used Parsec for a long time, which does stream pixels but has pretty impressive variable rate compression.


👤 zamadatix
RDP is very good but it also hits its ceiling extremely quickly. E.g. the RDP client that ships with Windows is limited to 30 FPS, as is the server that ships with Windows with default config. It can also be extremely CPU intensive on 1080p and larger resolutions to the point it becomes another limitations. You can enable hardware accelerated video encoding for RDP but then it's really not any different than something like NxMachine or Parsec except it has a 30 FPS limit.

👤 tmikaeld
If you don't mind a hosted service that doesn't proxy the stream, then https://getscreen.me/ is great, you can even watch a movie over the wire performantly. It uses a custom native handshake client and WebRTC for the capture & encryption, in other words, same as Chrome Desktop but simpler to use.

👤 JustinGarrison
There’s lots of solutions in this space but they’re not commonly used in non-business settings

- Teradici is the best I’ve used (hardware and software options)

- HP remote graphics licenses come with some Linux workstations

- Amazon NICE DCV is used in AWS Workspaces (disclaimer I work for AWS)

- Thinlinc is high performance but no GPU acceleration or audio the last time I used it

There are others but those are the ones I’ve used the most and recommend


👤 wizofaus
Even RDP isn't great with latency over about 30ms from my experience. The mouse cursor never quite follows my hand movements and everything feels slightly sluggish. Without tech whereby the client can somehow anticipate user actions and predict the next likely update I'm not sure how you solve that.

👤 siraben
From experience, Parsec is the best instance of remote desktop I've seen. Another one that is pretty solid is RDP for Windows (it feels as if it uses more information than raw pixels from the display, since it seems to render UI elements accurately).

For macOS, Apple's Screen Sharing is pretty good, using some video compression and diffs to render the frames rather than vanilla VNC.


👤 yewenjie
I'm surprised that nobody mentioned RustDesk.

https://rustdesk.com/


👤 unnouinceput
This is a quest for a remote desktop software that is free and/or included in the OS, yes? Because otherwise, in the land of paid software nothing beats TeamViewer. Not even Windows' RDP does. I use TV daily with clients across oceans and nothing else offers a better remote desktop experience than TV.

👤 ianai
Others are giving options for Linux/Mac I’ve not used. Probably the reason a name like RDP for Linux/max isn’t so widely spread is because RDP is daily driven in IT “enterprise” at scale for course of business stuff. The equivalent for IT pros in Linux is ssh. Mac is decidedly un-“enterprise” friendly.

👤 emptysongglass
Reemo.io is all browser based with fantastic performance, easily competitive with Parsec without requiring a client side agent as it's all browser accessible.

Sound doesn't yet work on macOS (word is coming soon) but I found it otherwise the best in the space. Also supports Linux and Windows.


👤 kasajian
I've used RDP based remoting in the early 2000s, with a 28K modem, for development, on my full-time job for six weeks. It wasn't amazing, but totally usable. Even today's tight-VNC at the time would have been unusable.

👤 batmanturkey
Linux has a CLI culture and SSH works just fine.

It’s more efficient to use a remote shell than to pipe a constant stream of screenshots at video rates, to say nothing about latencies and mousing.

Draw commands would require a uniform windowing solution for all clients.

I cannot speak for why Apple doesn’t make such a product.


👤 sgt
The answer is basically that in Unix-world (Mac and Linux) we focus a lot more of our attention on the command line. I have mostly remote Linux servers but also a couple of Macs I can remotely ssh into. You use your own computer for UI. The thin client dream is a bit.. 90s.

👤 oneplane
It's somewhat a case of "they almost went there"; around the time that MCX (Managed Client for Mac OS X) and Apple Remote Desktop (the central management tool, not the built-in one) peaked, they also had the option of selecting or starting a new user session over VNC. This was the foundation of concurrent desktop sessions in Mac OS X (now macOS) and was pretty much one step away from Terminal Services style multi-user computing.

Right then and there, the choice flipped the other way: instead of taking the management approach to remote computing they made management go the MDM route, and made remote computing more of an application-specific detail; if you need something 'remote', it's probably just data so remote data access could cover that. If you need a piece of software, the idea was that you'd simply run it locally instead of remotely over a stream, and if you need something specific to the remote location (i.e. the network) you'd use a VPN connection.

The biggest benefits of terminal-style computing is that you can lock away special software on a server or use computing resources that aren't available locally. That second part was something Apple probably never wanted to have to deal with, either you get the 'big fat expensive machine' for your heavy workload, or you get the Mac mini for your ligher workloads. If you want to have one big machine shared by two people, that wasn't really something they cared about, and you'd just have to buy two of them. This makes sense from their perspective: you buy the machine for a specific task or purpose, and that makes remote computing a bit redundant because you'd have bought the machine that fits your needs.

In a way they are right; nearly every device they make can do the same tasks and only heavy resource eaters really need more hardware than a base configuration can deliver.

For Linux it's different; you can just install an RDP client and server and do the same thing windows does. The only thing you need to do yourself in such a setup is configure the desktop environment so it doesn't do weird things like wobbly window animations over RDP which don't translate well. Microsoft doesn't write RDP clients or servers for Linux, and only has a client for macOS, so not much of a commercially validated option on Linux. There is NoMachine's NX which essentially does what RDP does, and on Linux you'd also not actually transmit the entire application; most of the window chrome can be handled by the local window manager instead, like with X11 forwarding.


👤 binbashthefash
Gnome 42 in Ubuntu 22.04 uses RDP, otherwise use X11vnc and GPU acceleration.

https://linuxhint.com/enable-remote-desktop-ubuntu-access-fr...


👤 bawolff
SSH is super speedy, and for many linux users remote commandline is all that is needed

👤 intelVISA
Have you considered something like NICE DCV which uses QUIC and is pretty performant?

👤 urza
This is what keeps me on Windows. If there would be Linux RDP client with these capabilities I would switch to Fedora or something. But remote desktop performance on Windows with RDP vs. anything on Linux is not even comparable.

👤 anthk
X2Go/FreeNX since forever.

👤 tomjen3
Its a paid product but NoMachine solves this problem fully, including across networks and between different platforms. Accessing a full desktop computer from your ipad is crazy magical the first time you see it.

👤 rlkf
But there is! With xrdp on the server and xfreerdp on the client, using RFX codec, I can have a remote login across town with 4K resolution through a Wireguard tunnel over a residential DOCSIS broadband.

👤 oaf357
macOS has Screen Sharing.app that works wonderfully across 8000 miles when screen sharing Mac to Mac.

Mac to Windows is easy with RDP.

But sharing a screen, Linux to Mac or vice versa... I wish you all the best. It's wild to me too.


👤 RantyDave
There's an HP Remote Desktop thing that's "free" for HP workstations. I've used it before and it's good but absolutely chews through bandwidth. Surprisingly good over 5G.

👤 phibz
I do 99% of my day job on a windows laptop connected to a Linux NoMachine session. It's not perfect but it works really well.

There are RDP implementations for Linux both client and server. x11rdp, remotedesktop,, etc.


👤 tobsterius
Parsec performance is impressive. I've had good luck with Splashtop, though I've experienced some lagging at times.

There's also Teradici (HP bought them a few months ago) but that can get pretty costly.


👤 Spooky23
It’s flipped the other way around. VMWare’s Blast Extreme is essentially an x264 stream that outperforms RDP in most ways.

It’s pretty awesome, any device with a x264 decoder chip can be a performant client.


👤 bick_nyers
Moonlight with an NVIDIA GPU is the best solution imo.

👤 glitchc
AnyDesk exists. It’s cross-platform and works well.

👤 umvi
Usually when I'm remoting into systems I don't need a full GUI, I just need access to some resource, for which ssh is great.

👤 nineteen999
We just use Xrdp. It's not as fast as RDP into a Windows server, but it's still pretty decent for us.

👤 1R
If you have an Nvidia card then gamestream (or quadro experience) works really well, with sunlight and moonlight

👤 unixhero
X2go is super smooth and fast, yes Linux has a fast remote access protocol, server and client software.

👤 Cyder
Anydesk and nomachine work good for me... windows to linux, linux to linux.

👤 throwaway892238
Remmina is your best bet. You should also try X2Go (an NX fork).

👤 Traubenfuchs
What about TeamViewer? Works very well on Windows.

👤 jcelerier
ssh -X works much faster than RDP and VNC here, and doesn't have horrible blurry compression artifacts

👤 hackpert
x2go works quite well actually. Its definitely not like local but it does the job.

👤 frozenport
AnyDesk runs great

Teamviewer runs great in Wine


👤 nurettin
What is wrong with x2go?

👤 georgia_peach
RDP also does its fair share of raster shuffling. Where it has the edge is that most windows programs still use GDI (i.e. windows native draw commands), and RDP can send a lot of that as commands instead of pixels.

Xwindows used to have the same advantage, but lost it for most modern applications (i.e. ones written in GTK or Qt, which pre-rasterize almost everything for simplified cross-platform compatibility). Nowadays, unless you restrict yourself to classic X applications, X forwarding is going to be a slower, dumber, version of VNC.

Mac has so many fades & animations that, raster or command, it will probably always be slower.


👤 cloudymeatballs
DCV is the best remote desktop tool I've found - alas it is closed source and requires a paid license unless you're running on AWS EC2.

👤 rando_comment
export your $DISPLAY with X11, Citrix stole the idea. not many really do it anymore it seems, and i doubt Wayland does it at all.. works great for me

👤 simonblack
The capability is there in Linux. I use it myself now and then.

With regards to the Mac, MacOS is BSD-based. BSD UNIX has had that capability and the required software for decades. So ... the capability is there. The software 'app' probably isn't. It would probably only need the installation of several packages.

MacOS is a downgrade from the underlying BSD UNIX that is its foundation.


👤 supportlocal4h
There are plenty of good ones, but you probably fail to recognize the best ones. In fact, the very question suggests that you have a limited world view. You will reject what I say because it doesn't fit into your narrow view. That's not meant as an attack, just an observation of human nature.

For example, one "remote desktop" that has become popular lately is called Wireguard. You connect, open the spreadsheet stored on the office network drive and print it to either the printer in the office on to the printer sitting next to you.

Many people would say that is sooo much better than RDP. That is not Windows thinking. That is Unix thinking--you know, Mac/Linux. (And BSD and most everybody else in the world)

So, to say it differently, Mac/Linux people often solve problems a different way, so they use different tools. Why don't laser printers come with whiteout toner?