Deskreen – Turn any device with a web browser to a second computer screen
github.com
github.com
Go to Settings > Projecting to this PC to enable it. You may need to install the Wireless Display optional feature first.
It works well enough, but it’s not going to satisfy people who are concerned with things like benchmarks and FPS.
Very useful for presentations, if the Intel drivers and TV manufacturer code have mercy on you that day and work without crashing, artefacts or random disconnects.
I understand it’s not the usecase, but would be cool if this also worked over ethernet.
I for instance bought "Assure Software Support" at $99 a year to try to get support for an unrelated (usb-c dock) issue. And there seemed to be no way to actually use it, and I just gave up, resentful that I paid Microsoft a support fee.
I had a problem at work with Microsoft X.509 certificate management. I even found the reasonably capable, actual decision-making person who did X.509 at a conference, and he was pretty clear: nothing I said to him there, or in any other forum was going to change pace inside the company on the problem at hand. (he did point out it affected the DoD so I was somewhat assured it was going to get fixed)
OTOH when it was pointed out how badly Microsofts TCP implementation behaved, they did make changes. So "it depends"
The only downside imo is we (engineers) cannot directly respond to a end-user feedback.
We use Indirect Display driver model for lots of other things such as RDP, Graphics over USB etc..
I really dislike our reliance on TeamViewer, especially now in covid times where were relying even more on remote access.
I've also tried moonlight (which is an nvidia gamestream implementation), which seems to have performance but the client wasn't very usable for this usecase.
Still great for general productivity type stuff though!
I am able to RDP freely onto desktops with rtx 2070/gtx 960 cards no problem.
Is this more something specific involving some degraded performance/reduction in features?
The issue seemed to be switching between remote and local access, i.e using the machine locally, then from remote, then coming back to local. It would usually survive a couple of cycles of this then just be a black screen after login. Once in that state tricks to reboot the graphics driver did not work and reporting in speed working too, though the rest of the machine was up as services like IIS and file shares kept responding just fine.
My hacky solution is to run VM for most day-to-day work on that machine and remote to that, only using the bare metal when I need the fancy gfx card or otherwise the little bit of extra unpf gained by not having a virtualization layer in the mix.
RDP/termsrv by design create a new session for incoming connections. However, with Windows Virtual Desktop (WVD), Windows Containers and Windows AppGuard, we definitely have a way of launching remote applications in an existing session.
Have you perhaps looked at WVD or RemoteApp? If you'd like to talk more professionally, you can email me at {first_name}.{last_name}@microsoft.com (my name is available on github.com/zeusk).
It will take advantage of the ethernet connection, making for a more responsive experience, but however it is designed requires wireless even if the both computers are connected to ethernet.
I connected a usb wireless dongle and it did the trick for me.
- Add a headless display with `swaymsg create_output SOME_NAME`
- Configure its resolution and position like you do for other outputs
- Start a VNC server on that output with `wayvnc --output=SOME_NAME`
- Start a VNC client somewhere else you want to use your second screen (there are some that are browser-based)
Unfortunately it is somewhat undocumented: https://github.com/swaywm/sway/issues/5553 but you can find some info on the net: https://www.reddit.com/r/swaywm/comments/k1zl41/thank_you_de...
I saw in that readme that they wanted ways to get rid of dummy adapters. That above is one such possible way for sway.
This made me think, "Sway. Sway. Sway. Sway in the Morning."
Not sure how many hip hop fans there are here...
Sway is so deeply rooted in the game and remains a solider for the culture to this day. Always a positive beam of positivity from him.
Though that currently takes a bit of fiddling (`swaymsg seat seat_name attach "virtual pointer"` + one wayvnc instance per pointer), wayvnc reportedly has a branch where it's done automatically.
For Windows "software display" driver implementations, from top of my head there are DisplayLink, Fresco Logic FL2K driver, and a homebrew one by q61.org[1] but none are open sourced.
Considering Duet works again, I wonder if the mechanism they use was quietly shared with them or if it was publicly shared.
With DVI-I, the resistor trick should work (it's just VGA), but not as easy as just folding some 1cent resistors around.
https://www.geeks3d.com/20091230/vga-hack-how-to-make-a-vga-...
sort of an inverse KVM. and without the ridiculous cost/licensing issues of the official synergy.
Other times, it'll refuse to start working again, requiring me to restart one or both computers, with know way to know which is messed up.
If I could guarantee one of the non-subscription ones would work properly, I'd probably pay. But since Barrier is apparently a fork of Synergy, I don't trust it. And most of the others have weird monetization, or I've heard bad things about their customer service... So I don't trust any of them.
In the end, I'm still using Barrier and just dealing with its problems.
An often overlooked feature of synergy is the ability to share clipboards between machines. You can copy a URL from your email and paste it into a browser on another box. Particularly useful if the reason you're doing synergy is to do cross-platform testing and validation.
The thing that made me stop using it was that they punted security to be someone else's problem, so you had to set up some ssh tunnel and be sure to run it only over that. It's not so bad on Linux or OS X, but that's quite a bit of extra work on Windows.
Does barrier take care of authentication or session encryption?
I've only used it between macos and linux machines, so that's easy. An example of the very tiny shell script that I use for VNC-over-SSH to a remote machine.
In which the VNC daemon on the remote machine only listens on its own localhost, and I use ssh to form the tunnel then use the vnc client on my workstation to connect to localhost:5902 to access it.
ssh -v -L 5902:127.0.0.1:5901 -C -N -f -l myusername -i ~/.ssh/my_ssh_id remotehostname.net
echo "localhost port 5902 for the VNC client to remotehostname.net"
I actually think this is better because for a very small open source project like barrier, that might literally be developed by one person, the workload and time/effort to be ABSOLUTELY CERTAIN you've implemented the crypto libraries correctly is a lot of work and worry.
Whereas if you use ssh you can be fairly certain that it's been battle tested by a huge number of people who have a lot more time and resources than yourself.
Nowadays, we have wireguard, so you can create a secure little network to run this sort of thing over much more easily.
Running tailscale (https://tailscale.com/) on each machine you're using, and then using their tailscale private ips with synergy, should be both secure and work painlessly across those three platforms
Since the typical use case for barrier is to have something like two desktop PCs, each outputting to two displays but with no mice or keyboards, and one laptop in the center, where you want to use your laptop's keyboard and trackpad to run everything.
Tailscale has much better UX, so it solves that problem.
In addition, wireguard is just as simple to setup as ssh (again in my experience), can operate over local LAN too, and some people have found it to have better performance than ssh forwarding (such as https://news.ycombinator.com/item?id=21162273).
The tool I've tried gave poor results with lots of latency.
Unfortunately, on both Windows and Mac, open-source solutions don't exist because no single developer wants to deal with driver signing.
On Linux, you can do this a number of ways:
- the evdi kernel module can create fake video outputs (I'm currently working on a CLI for it - stay tuned)
- xrandr can force-enable disconnected video outputs (I believe even if you've used up all the CRTCs)
- xrandr with Intel drivers can create virtual screens
- swaywm has a config option to make virtual screens
This does seem to be changing [1], but I haven't looked into what the new procedure is/will be.
[0] https://www.digicert.com/code-signing/driver-signing-certifi...
[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/in...
I am very much looking forward to try this.
I've been using one to pipe an old Android phones camera to a virtual cam on my laptop.
The display underneath should be connected via LVDS, so it should be relatively easy to give it native inputs.
https://www.ifixit.com/Answers/View/117066/Can+I+Mod+an+earl...
This will involve some kind of DisplayPort-to-LVDS board (or HDMI/DVI/VGA-to-LVDS). LVDS is the type of input on LCD panels.
If "amazing screen" means retina, one question is whether there is even a board available that can output high enough resolution for good results.
This page seems to have good info: https://jared.geek.nz/2015/apr/driving-fpdlink-displays
Anyway, the advantage would be you can plug directly into it and get full performance (no lag, full bandwidth) because you've basically converted it into a monitor.
I did eventually find that project, but only after having written what is essentially the non-VNC half (creating and managing evdi displays) of it from scratch...
It streams Android and iOS UI to desktops with actionable controls.
Definitely seems like a helpful project. The stars on GitHub have jumped from 1 to 1,900+ in just one week! Enjoy the ride and thanks for open-sourcing your work.
Another thing is Linux, drivers for virtual screen already exist, check xvfb and xorg-video-dummy
In other words, can I use this app to draw from a tablet to something like Gimp on my main computer?
So, combined with @gambiting saying something similar exists on Windows, I'm struggling to see the utility of Deskreen given the two main OS's already have such functionality built in.
I guess cross-platform might be the only use ?
I don't think you can use another mac as a second screen though.
Edit: I don't think this would be a good solution. It mentions getting a qr code from the host machine and approving the connection inside the application. These things would be really hard to do on a pi with no screen over an ssh connection.
And why not use a virtual workspace manager instead?
But I'm not sure making a mouse pointer blink is the right thing to do.
The whole Windows-Icons-Mouse-Pointer environment was developed when 640x400 was a high resolution and 22" monitors were considered huge. So easy to pick out the pointer at rest, but I can see how you can get lost on basically a 4K resolution TV.
Also when coding. I keep docs and messaging apps on one screen and I can keep the other screen clean with only code. It really is faster and easier with two screens.
I often have one screen for "actual" work and the other screen for chat/mail/... then checking for something going on there isn't a full context switch, but a short look.
Sometimes in development a second screen can be useful to have a screen full of different code files and second screen for documentation or the app or logs or whatever.
During video chat i have the faces of the others on one screen and notes and other things on the other screen or during social videoconfs during covid I have faces in one screen and second screen for a (board) game we are playing ...
It always depends on what you are doing. Things one can do are many.
Vertical oriented 1080p: chat windows, sometimes replaced by multiple command line windows.
Horizontal 4K: Emacs, Visual Studio Code, Browser with repositories/jira, command line windows.
Horizontal 4K: Browser with documentation, secondary VS Code windows, Outlook, Teams.
Macbook Pro screen: Finder, calculator, more command line windows.
Most of my "main" work takes place in the 2 horizontal 4K screens. The other 2 screens are "secondary" information. Having that much screen real estate allows me to more easily collect and arrange the information I need to do my job.
If I could change anything, it would be getting a 24 inch 4K screen to replace the vertical one, and having a higher refresh rate than 60Hz on all my screens.
I hope that one day 8K screens become affordable, because I'd love even sharper text. Reading on the vertical 1080p screen seems fuzzy compared to the 4K screens. (Which is definitely a "first world problem"!!)
;)
But, more seriously since this is HN: While the extra screens are great, as is the mouse and mechanical keyboard, it's not much of a hassle at all to work in a different location. I think the extra screens, desk space, peripherals, all go towards making me more comfortable rather than efficient. Which for me, rocking the oh-so-annoying ADHD along with nerve and back pain, means I can focus on work for that much longer in one session.
I should be working from home at least until mid 2021, hopefully much longer or even permanently. A good working environment can really improve your mental health at a time when, in the USA especially, things are incredibly stressful.
Besides, more generally the drive to the office helps put me in work mode. The whole office building is a place where work happens. Then the drive home helps put me in leisure mode. Without those neatly coded space/time contexts I have been seriously struggling.
Everybody that keeps talking about how the world is going remote has been giving me a fair amount of anxiety. If I lose my office I'm not sure how I'm going to function. Besides, my coworkers and I miss seeing each other and being able to work together in person. We don't do much pair programming, but when we do, trying to do so over screen share has proven to be significantly less productive.
But then again, I am lucky to have an amazing team of people who I genuinely enjoy being around, and who are all very respectful of quiet time to work when needed. I'm also definitely an introvert but maybe less so than the average dev.. I miss social contact!
(Of course I'm talking only about computer monitor, for very big TV screens or for screens that I have 10cm from my nose it's a different story)
I am a little picky about fonts and their display though. The higher resolution the screen, the better. I have my Emacs configuration using a bunch of different fonts and sizes/weights/etc for my Org-mode, Terraform, TypeScript, and other editing. For example, when a todo item is put into "in progress" the heading is slightly larger and bolder, and when that item is complete, marking it "done" changes the text to italic, extra-light, and grey to reduce its visibility.
Time spent messing around with fonts is definitely an expression of ADHD and active procrastination, but I do get a pleasing effect from it! :)
I don't know why you wouldn't want two screens, personally. I've worked with three before and found them useful. Virtual desktops never felt natural.
The closest I came to adopting them really was during the "compiz" era, using the desktop cube effect. That metaphor seemed to play into my brain's spatial awareness quite well. But still not quite as well as a separate screen.
This makes me wonder how your brain can handle multiple browser tabs ;)
My ADHD almost certainly takes a lot of the blame for that.
When I'm testing/debugging, one monitor might be the web app I'm working on, the other is the code I'm stepping through. Or I'll be tailing a log file or watching something in a database while using the app.
I do lots of client/server stuff, so sometimes I have a monitor showing the server-side (web UI and/or logs) and the other showing client-side (cli, logs, and/or local UI). The key useful thing is seeing the client do an action and send something to the server, and seeing the server instantly react: that's not possible when you can't see everything.
In some cases, I'm debugging remotely, and a monitor will be partly or completely dedicated to ssh/rdp/vnc to the remote system(s), with the other used for browser or cli app I'm testing. Usually chat, documentation, source, issue tracker is mixed in there too.
There's a couple things I work on that have long running builds (10+ minutes) or integration tests that takes a bit over 30 mins. Both are long enough that I'll do something else while waiting and suddenly 2 hours pass before I remember, so I like keeping the build status page visible somewhere to avoid that.
Even for non-work/coding sometimes I just have YouTube or Netflix open (either 1/4 window or full-screen) while I'm browsing the web on another.
To me, working on my laptop is doable, but feels like having one hand tied behind my back when compared to working with multiple monitors and a proper keyboard and mouse.
I've found about two hard sells so far:
Online presentations and demos to people. For example, showing some slides to some people, with some jumps to code or terminals. In this case, it's extremely valuable to have the call with webcams open on a second monitor so I can keep tabs on the expressions of the audience in order to adjust tempo. Switching the contents of the presentation screen / shared screen without warning is jarring and confusing to the audience. And commonly used communication programs do not support sharing one virtual desktop easily, only screens and/or windows.
And sometimes, it is valuable to be able to display more information at once. Sometimes, during larger outages, it helps to be able to display more key metrics of the system on one screen and poking the system on the other screen. This one can be done with virtual desktops, yes, but it has less overall cognitive overhead for me to just have a stable screen with the monitoring data and/or logs on it available instead of constantly flipping between desktops.
And again, during screen sharing, people hate it and get confused if I flip the main screen around too much between monitoring data and shells. So having a work screen to share with people on a call and another screen for information helps reduce that.
A lot of other use cases are convenient with more screen space, but good virtual screens with hotkeys work almost as well I've found.
As for the use cases, here are my most common layouts (3 monitors - old 4:3, 1440p, vertical 1080p):
- preview/debugger | code | docs (programming)
- slides | video call | chat (online presentations)
- gallery | photo | same photo but 1:1 zoom (photo editing)
- effect controls | timeline,preview,more controls | clip bins (video editing)
- chat | game | game wiki
Also you need to have an access to private networks if you are on Windows.
Cheers
"Also you need to have an access to private networks if you are on Windows."
This was the problem. Being the bonehead that I am, my home network profile was accidentally set to Public network, rather than private.