Use a laptop as a 2nd display on Linux using FreeRDP
blog.jacobstoner.com
blog.jacobstoner.com
Software used to be called Synergy, but that went commercial, so there's a fork called barrier. https://github.com/debauchee/barrier
Wow that sounds handy indeed.
Besides being OS, what are the advantages of Barrier? Worth the (probably small amount of) time to switch?
Barrier worked fine for my multi-OS use case (Windows, MacOS, various Linux distros).
For some reason, I had to restart Barrier periodically when I was on mesh wifi (by Vilo), but when I switched to a different wifi AP (Starlink's actually) Barrier worked consistently.
I have used Mouse Without Borders across work and personal Windows machines -- mostly works with occassional quirks. I think there is some latency though when mouse input is routed through another PC.
It looks like input-leap has drag-drop in the works, but apart from that I have no clue which one is the blessed one right now.
"The name debauchee is not professional and should not be associated to a popular project."
From the github thread linked above. How disgraceful.
https://www.microsoft.com/en-us/download/details.aspx?id=354...
The only issue I really have now is once in a while I can't use my keyboard on the client computer(s), and that is because my server is currently my work Mac, and the terminal will occasionally request secure lock (probably when I use sudo) and as part of that, the keyboard is not allowed to be accessed by programs like Synergy until the lock is released. But Mac gets kinda buggy once in a while and doesn't properly release the lock.
Most of the time it just works though, and I've gotten way more than my $30 worth at this point.
It works for me across a laptop and an RPI.
Or if you're using Wayland, I'm sure they have an even better solution that has been around for negative three months already. :)
Pay $29 once or use open source software with 600 open GitHub issues... :D
1. https://www.reddit.com/r/gnome/comments/uz5as7/gnome_has_mad... (discussion)
I feel like all the parts of linux are there for an amazing desktop(its already great), its just sometimes the discoverability/documentation/usability need a little push.
> gsettings set org.gnome.desktop.remote-desktop.rdp screen-share-mode extend
> No such schema “org.gnome.desktop.remote-desktop.rdp”
I had a quick look at Parsec and was surprised at how expensive it is - starts at $8.33 a month.
the frictionless RD side of Parsec is completely free. you only pay if you require >60fps, extra monitors, teams, etc.
linux/android client only, last time I checked. Can't host on those platforms.
> Linux does not support hosting at this time and any computers on this operating system will not be listed.
https://support.parsec.app/hc/en-us/articles/4422939258893-P...
There is a trick for achieving low latency video with TCP: set SO_SNDBUF to the lowest possible value and do your own buffering. If your buffer grows too large, lower the bitrate and/or drop frames.
Ever since h264 there is a feature called intra-refresh, which allows you spread key frames over time, reducing the burstiness of the transmission (and therefore improving latency in most scenarios)
I also have good experience with Spice. I haven't found a way to set it up as a server, but Qemu uses it for all its VMs, and the performance is great, you can watch videos and everything, if you have the bandwidth.
For WiFi and slower networks, Moonlight was way more performant for me.
In my testing, VNC is not a suitable replacement for FreeRDP in this setup--it's too slow.
And yes, it seems in general something was wrong in your vnc setup. I was doing fullhd back then and typing or moving smaller Windows was near instant, maybe 100ms delay if the window was larger or the screen busy. Even video playback in YouTube was smooth (with occasionally dropped frames) as long as I kept it at the default size, which was surprising.
On another note, a few days ago for reasons I had to access a machine at work running xfce. Used VNC via SSH tunnel and didn't expect too much, since last I checked the protocol was very sensitive to latency, but it was a pretty smooth experience still. Maybe those tigervnc folks are still busy tweaking it.
Will try freerdp next time :-)
I feel that the VNC protocol gets a bad reputation because of bad implementations. There's really nothing in the protocol itself that keeps it back.
What I like about VNC is that you can actually read the RFC and get fairly a good understanding of it in less than a day. I'm not sure if the same can be said for RDP.
Microsoft has this page where you can access a bunch of PDF documents that describe RDP in some sense, but I've no idea where I would even start and/or what's even relevant for any given problem that you might want to solve.
I've tried I think a couple of VNC-based solutions (since I've tried the most common, TigerVNC was very likely one of them), and they were extremely slow - I can't remember how fast, but something like 1/2 FPS.
This left me very perplexed, because on a 10 Mbit network, with 25-ms ping, a protocol must be very badly designed (or, to be more precise, very antiquated) to have such bad performance. So IMO, the bad reputation is justified.
Other FOSS solutions weren't better, in one way or another. The other one that worked out of the box was X2Go (based on NX 3), which was still very slow (and it seems to be abandoned nowadays).
Sadly, I had to move to a closed-source solution.
Closed source solutions are so fast that sometimes I forgot that I'm on a remote machine. I'm very puzzled why there is such a large gap between open and closed source solutions.
At least some commercial remote desktop solutions are very strict about business usage - they don't allow it at all (last time I've checked, Teamviewer was so).
Nomachine is a bit looser: they allow occasion business usage, as long as it's not the core of the remote workflow.
No, I do not want to view my beautiful Retina MBP's screen on my 4K laptop at... 1440x900.
Admittedly, because of VNC's age, there are many sub-optimal encoding methods available and many different implementations which might not be fully compatible with each other. So, maybe your chosen server has some good encoding methods available and maybe the client can support some good encoding methods, but the intersection of supported encodings might be bad.
Users of VNC often need to understand how to tweak their settings for the best result. The client should choose the "best" encoding automatically, but this cannot be fully relied upon. On a slow network (like yours), it's probably best to select "tight" encoding, allow lossy compression (jpeg) and turn down the quality a bit.
That is to say, if the implementation that you're using doesn't support h264. Currently, there are not many that do.
Typo :) It's 100 Mbit.
VNC is definitely easier to understand but the common servers usually leave a bad taste in my mouth after using them. RDP clients are often higher quality but there are many issues with (configuring) RDP servers right for Linux; however, GNOME's direct RDP integration has solved a lot of problems I was having before.
It certainly has its place, but as a remote desktop solution it is the simplest (and stupidest) way that functionality could possibly be implemented. VNC is what you use if you want to copy whatever is on the screen of the remote system, RDP is what you use if you want your displays connected to a remote system.
RDP lets you use all of the client's monitors, printers, clipboard, audio, USB devices, etc. as though they were plugged in to the host. The clipboard sharing extends to files, so you can drag and drop a file from the client to the host via the RDP window. If you lock your workstation at work with a bunch of running programs, drive home, and RDP into it, all of the applications will be moved to your RDP session and rearranged to fit your display(s). The next day you log back in at work and they get moved back to the local displays.
Oh, and did I mention all of this works well even on crap connections? I have been at jobs where a remote branch has such shit internet that they RDP into a VM at the head office to browse the internet because RDP uses less bandwidth than the sites they are browsing.
RDP is one of the things I miss using Linux.
Edit: just seen that adding H264 is on the roadmap for KasmVNC
Secondly none of the computers involved for me have two monitors attached..
Funny enough I thought the same thing. RDP has to be slower on Linux compared to VNC. It was just by accident that I discovered how freakishly fast it is.
https://twitter.com/rcarmo/status/1584627462939492354?s=61&t...
It was already pretty fast with plain xorgxrdp, but using xorgxrdp-glamor made the server side _way_ faster. RDP as a protocol blows VNC out of the water, and can use x264 as well.
OK, but you get PCIe passthrough with Thunderbolt, so you can put a capture card in an eGPU enclosure, assuming you have TB.
I don't think manufacturers will bother implementing extra hardware just in case their devices die on you. It'd be great, but it's very much a niche use case.
Worth noting gnome 42+ also has an extend display over vnc setting , it may be hidden by default.
This should be done via MiraCast. And then the same system would be compatible with smart tvs, smartphones, Samsung Dex and Windows.
For Linux the project implementing the protocol is called MiracleCast. There is a GTK Gui to send your screen. But there is no GUI to receive a screen.
Unfortunately this gets little love.
Also, to my understanding, Wayland is still not ready for such a use case.
* add a virtual screen of specified resolution (The command is `swaymsg create_output`, then adjust its position and resolution if the default 1080p on the right are not to your liking)
* start a vnc server for that screen (`wayvnc -o HEADLESS-1`)
* start a vnc client on the laptop
Regarding screencast, xdg portals and pipewire streams are a thing (including zero-copy DMA-BUF access, and hardware encoding).
it's very easy to
[complex list of tasks]
This is the typical HN fallacy.Go try to explain your mother over the phone how to edit a sway configuration to 'add a virtual screen of specified resolution'.
Compare that to clicking on the cast icon and selecting a TV.
source: spent years supporting Linux for my tech-illiterate parents.
Support is basically zero these days. He uses Chrome and Firefox and LibreOffice. He occasionally fires up the Simon Tatham Portable Puzzles collection. I have uBlock Origin installed on both browsers. I installed XFCE on day one, spent a couple of hours demonstrating things, and then left.
Every five or six years I buy a new tiny, NUC-like machine, configure it up, pull his home directory across, and then send him the replacement. There's more work on the phone getting him to plug the cables in properly than anything else.
Year of the Linux desktop? It's been more than a decade.
> Also, to my understanding, Wayland is still not ready for such a use case.
With an example showing how to do it.
To answer your point, this wouldn't faze any sway user, and it is perfectly scriptable, you can add a button or script to perform the three server-side steps. Of course, gnome includes a button to cast to a nearby miracast-enabled screen.
I'm not answering to my mother, I'd set it up for her with a nice shortcut. And she probably wouldn't be using sway.
You also need a complex list of tasks for miracast.
* Turn on the TV (simple enough, but since we're counting steps...)
* Make sure the miracast option is enabled, and the TV is discoverable. That one is impossible to explain over the phone -- unlike a command line -- as every TV burries this under a different menu.
* Find the right button on the "client" PC (might require enabling an option before?) and click it.
See https://github.com/any1/wayvnc/pull/200/files
The script in the PR does something a bit different, but it's only an example and can be modified to do what I described in the first paragraph.
At least since all wireless implementations I've tried have been very flaky and after the first the initial "this is pretty cool", immediately followed by "ouch, the input lag".
Which then is followed by flaky connections and if on a phone ridiculous battery drain. It is nothing but a source of frustration and waste of time so anytime I hear the word I just tune out.
Wow, that's an insane software design choice.
edit: looks like there's support for Miracast over Ethernet at least in Windows: https://learn.microsoft.com/en-us/surface-hub/miracast-over-...
It is important to note that Miracast over Infrastructure is not a replacement for standard Miracast. Instead, the functionality is complementary, and provides an advantage to users who are part of the enterprise network.
Discovery requests to identify Miracast receivers can only occur through the Wi-Fi adapter. Once the receivers have been identified, Windows 10 can then attempt the connection to the network.I'd love to see the project mature but right now I don't think it's usable.
https://github.com/faust93/turbovnc
But it has to be used in pair with TigerVNC viewer only, because AFAIK there're no other viewer implementations with h264 decoding support
Alternatively there's ShaderGlass, but I would have to modify it to work with an image mask.
If anyone has a better idea for Windows that doesn't involve hardware changes I would be much obliged.
RDP/VNC/HTML on a second screen it is, I use my sever witha connected screen.
There is, however, a very good remote virtual monitor solution called Spacedesk [1], which has a windows server (with virtual display driver included) and a JavaScript client that runs in any browser (it refuses to run in Firefox, but if you just comment out that line of code it works perfectly fine).
[0] https://github.com/pavlobu/deskreen/discussions/86 [1] https://www.spacedesk.net/
... RDP?
same for remote viewers
The mentioned aFreeRDP seems to require at least Android 5.0.
i have a high speed internet so the performance is on par and i personally spend my work hours on rustdesk (almost 750-80 hours a week)....
my only problem with tailscale has been the oath login which is significantly different than what zerotier does. (i just create the account, use the key on any random computer and authorize from the login, meaning no auth from user side).... i know headscale but that has to be selfhosted... eh
tailscale looks good tech without that imo