Why you should treat your desktop like a server
back
Oct 13, 2023
tech

No matter how well you dress it up in fancy clothes, the desktop tower will always be a stain on your workspace. It permanently scars an otherwise clean and managed desk with its big, blocky, loud, and dusty stature. It’s connected to its peripheral appendages with an unsightly, tangled mess of cables that never seem to go where you want them. As a result, there’s no option but to either buy all-wireless peripherals, Bluetooth headphones, and USB hubs to tame the beast and meticulously cable-manage your way to computer nirvana, or subjugate your tower to a shameful spot by your desk, deliberately hidden from view. Surely, we don’t have to treat our computers this way.

And why even have a desktop in the first place? At this point, modern laptops have mostly eclipsed the desktop in both form and functionality. Their portability, compactness, versatility, and ease of use are invaluable in an age of movement and collaboration. And advances in CPU efficiency, especially with the release of Apple Silicon, have axed the need for a big, beefy cooling system. As a result, modern laptops are sleek, quiet, powerful, and more affordable than ever.

However, there are things that desktops are great at that laptops are woefully unequipped for. A major one is GPU-intensive tasks—any relatively demanding game will absolutely clear on a desktop, and so will 3D modeling applications and video rendering. Laptops also can’t handle sustained heavy loads as well as a tower with dedicated cooling, even with gains in efficiency.

So, how do you combine the benefits of both? The answer is to treat your desktop like a server. Use your laptop for most things, either on its own or hooked up to your desktop peripherals, and stream the video output from your actual desktop for more intensive tasks when you need it. This solution may sound clunky, complicated, and ultimately not worth it, but I’ve found a setup that preserves the quick portability of a laptop, the comfort of desktop peripherals, and the power of a dedicated tower.

To make this happen, you will need two pieces of hardware, one of which you probably already have and both of which you might not even need. The first is a dock with a display output, USB hub, power, and Ethernet on one side and a laptop-compatible port on the other. This lets you hook up your laptop to your existing desktop peripherals, so it functions just like a regular tower. You could also just use the existing ports on your laptop for all of these, but I like the simplicity of unplugging only one cable when you need to take it anywhere. The second is a dummy headless HDMI or DisplayPort adapter that plugs into your tower’s graphics card to “trick” it into outputting a video signal. These go for a couple bucks, and some software doesn’t even require this. I would recommend it anyways, though, as it skirts around numerous bugs with mouse cursor rendering and output resolution that arise when you use virtual display drivers.

Once you have all the hardware, the first step is to install your preferred remote desktop software. This could be Parsec, RDP, Sunshine/Moonlight, AnyDesk, or any other desktop mirroring tool as long as it has a low enough latency for your liking. I’ll go into more detail on which is best for your specific use case later. Next, after you have the remote connection up and running and are able to access it when your device powers on, move your desktop to a place that is out of sight and only plug in a power and Ethernet cable. All that’s left is to reroute your existing peripheral cables to your laptop dock, plug your laptop in, and connect to your tower remotely. You’re now able to control your tower like it was sitting on the ground right beside you while still having complete and easy access to your laptop and its operating system.

Once you have your setup dialed in, you can enjoy the numerous benefits it offers. Now that your tower is out of sight, you can put crazy loads on it and let it spin up like a turbine engine without the fear of annoying anyone. Cable management is now much easier, considering that everything but a single power and Ethernet cable lives entirely on your desk. Standing desks greatly benefit from this, as well as desks that don’t have many places to hide cables. The third is that you can run any proprietary software you want on Windows without being limited to using Windows entirely. In my setup, I have a M1 Mac running MacOS with all my Windows-only programs and games on my tower. The same can be done for Linux, letting you run a FOSS system primarily while still keeping all the proprietary work applications or games you need. No need for emulation, dual-booting, or switching systems anymore—it’s all done with one computer running one operating system. You can even remote into your desktop when you’re away from home as long as you have a decent Wi-Fi connection, letting you use system-intensive software on the go without the need for a beefy laptop.

However, there are a few caveats to this setup. The first is that it’s absolutely necessary to plug your desktop into Ethernet to cut down on network latency that will add considerable delay to your video stream. I also recommend doing so on your laptop too, as this can cut the total delay down to mere milliseconds on some software. The second is that no matter how tuned your setup will be, there’s still visible artifacting and sometimes noticeable delay on your stream, at least as the stream gets “warmed up” before it ramps up its bitrate. You could try and solve this with advanced color sampling and crazy high bitrates to get crisp visuals right from the start, but after a minute or two of streaming, it will actually work itself out enough to be mostly unnoticeable. Games that rely heavily on accurate timing or split-second actions, like rhythm games or esports, may still suffer, no matter how dialed your setup is. The third is that much of this software is proprietary and has limited support for streaming setups that aren’t as popular, like Linux and MacOS hosting. This is being steadily improved, though, as existing software supports more operating systems and more software gets introduced.

The big decision is what software to use. In my research, I’ve narrowed it down to Parsec and Sunshine/Moonlight. There are a couple others, like RustDesk and TeamViewer, but those are more focused on providing remote desktop control over bad internet connections and suffer on latency and visuals. Parsec is my favorite out of the bunch. Its client is user-friendly, personal use is free, and the software latency can get down to three milliseconds start-to-finish while keeping crisp visuals. It’s seriously mind-blowing! It’s essentially indistinguishable from using your PC as-is, even when streaming video or playing games. However, I needed to set my bitrate to 100 Mbps in order to get it looking this good, although it normally uses much less than that, and its support for anything but Windows hosts is shoddy. If you want to go full FOSS, using Sunshine as your host and Moonlight as your client is the best bet. Moonlight is essentially a port of Nvidia’s GameStream protocol, and Sunshine adapts Moonlight to all GPUs and full desktop streaming. Moonlight clients are available on basically everything but Samsung smart refrigerators, and Sunshine hosting delivers latency and visuals that are very comparable to those of Parsec. Michael Horn has a great video outlining how this works and how to get it set up on your system.

If you’re still not sold, here are some simple tests of the latency of these two programs as well as other solutions like RustDesk and AnyDesk. The tests were performed simply by running a timer on the host, streaming the video output to the client, and comparing the difference in times between the host and client screens via a photo. These findings are nowhere near scientific—I just did this test to get a sense of how these programs compared.

delay-ms

As you can see, Parsec takes the lead on latency, followed closely behind by Sunshine and TightVNC. Although this makes TightVNC look like a real contender, while it does well on pure latency, I experienced a whole lot of delays maximizing windows, moving windows around, or doing anything that affected a large chunk of the screen. I wouldn’t recommend using TightVNC for this purpose. Although some programs did better than others, it’s important to note that any wired connection is going to blow any wireless connection out of the water. With the same exact settings, Parsec on a wireless client and wired host performed 100 ms or 6 frames worse compared to an all-wired connection. It’s also worth noting that this test was performed on a 60 Hz panel, meaning that the timer updates at around 16.6 millisecond intervals. This makes it impossible to get sub-frame latencies, and getting more accurate results would require having two 120, 144, or 240 Hz monitors and software that supports transmission over 60 Hz. Thus, it might be more realistic to express these findings as rounded to the nearest frame, with an error of 1 frame in both directions:

delay-nearest-frame

In general, I think Parsec is the best option overall. If you need better cross-platform support and/or something that’s open-source, Sunshine/Moonlight is your next best bet. Both of these produce a video stream that is more than adequate, and both are nearly indistinguishable from just hooking your desktop up to a monitor, especially at high refresh rates. They both support extensive user configuration and are free to use. As for me, I quickly uninstalled everything but Parsec after finishing the tests. I hope you found this little exploration insightful, or at least can view your desktop under a different lens now. I would love to see what other people settle on in their own use cases, and it would be cool if this workflow could be improved at all.