I made Deskreen, open source app to make any device a second screen for computer
deskreen.com
deskreen.com
You can download latest Deskreen-1.0.0 version on our website: https://www.deskreen.com/
Quick Demo Video On Youtube -- Tablet as Second Screen for a laptop | Using Deskreen: https://youtu.be/rmg5tZ4iSx8
Deskreen can be used not only for second screen use case, but also for screen mirroring through local WiFi, or single application window view sharing to other devices.
Features:
* works with WiFi or LAN
* use any device with web browser as second screen for your computer (using Display Dummy Plug)
* use any device web browser to mirror your computer's screen
* use any device web browser to view a single application window from your computer's screen
* supports multiple screen sharing sessions to as many devices as you want
* supports changing picture quality while sharing a screen.
* Picture auto quality change supported. (for performance boost while watching youtube video for example)
* End-to-end security
* dark mode UI support ;)
available for Win / Mac / Linux
Note: app is not Code-Signed yet, code signing is pricy. Any donations are highly encouraged. Donate on Patreon.
Links:
Deskreen on Github: https://github.com/pavlobu/deskreen Deskreen on Patreon: https://www.patreon.com/deskreen
Thank you all for your attention,
please try to visit that website
It may be a problem of Github CDN it is not able to catch up with so many users at the moment, probably
I also make the choice to disable JS by default, but I just enabled it to see your site.
I think this is an awesome project and I freaking love your attitude, too. Thanks for sharing and keep up the good work.
I know it is not absolutely encouraged nowadays, but I'm making it completely out of good will.
Making a good thing to the world you live in, is already worthwhile, isn't it? :)
Cheers
I've used K Software before (who resell Comodo certs for cheaper), but it looks like they are around $90/year now; I'm sure they were a good bit cheaper when I last renewed 2-3 years back :-/
Be prepared for a shitty and lengthy verification experience though, including having to put details on multiple online telephone directories of their choosing (wtf that is meant to prove, I don't know!), and possibly having to get your identity notarised by a solicitor/lawyer.
I really wish there was some kind of "Let's Encrypt for code Signing", but because of the verification requirements it's hard to see it happening. I suppose it might be technically possible to do for a selected set of countries if the right gov APIs existed.
Cheers
Does this really need the display dummy plug to function? Isn't there any way to create a "virtual" software-only display on eg. Linux?
The goal of Deskreen is to bring more attention to this problem from open-source community, so then we can all come together and build a really cool stuff!
Of course I wanted to make Deskreen an HDMI Dummy plug FREE solution from very beginning but could not find out how.
and does it communicate over TLS?
I'll check that out.
Its a fork from Synergy 1.9
https://github.com/debauchee/barrier
I actually clicked on this thread for the purpose of commenting that you could do cool things with some combination of this, using spare screen/tablet devices, and Barrier. But you beat me to mentioning the concept.
All that said, this looks super cool! Congrats and thanks for sharing! I'm tempted to give it a shot. My current set-up is similar except I use Barrier to share my mouse and keyboard across 4 cheap (<$200) laptops I've accumulated over the last few years.
Yes it is a problem of cross-platform support. Each os with its own zoo of tricks and tweaks.
So for each os there should be a separate module, basically 3 different projects that then can be used as native modules for Deskreen.
I'll just repost my previous answer.
>Yes, Both linux and mac have x servers running. But different
>variations of them. There is no problem with Linux at all, it
>is all customizable and user can be just asked to restart a
>computer to rewrite x server configs.
>But on mac and windows this is a quite different situation.
Cheers
> So for each os there should be a separate module, basically 3 different projects that then can be used as native modules for Deskreen.
I hope more folks contribute to improving each of the different modules. I personally would dive in to work on improving Linux support if I had time, but I'm already very stretched thin, so that will have to wait.
Now I think maybe this is a good answer for some remote visualization applications.
That second screen you just export with X11vnc.
Using Android Phones/tablets, and USB connections, you can do some little "adb forward" magic, and then push the VNC stream over the USB-connection to a VNC viewer on the Android tables.
Run x2vnc to "beam" pointer/HID data to the tablet, for when you are on the external screens with the mouse.
Works fine, very low latency, no WIFI required. And it charges your tablet too.
- Make another screen - 3 options, depending on driver/available_outputs:
1: make a mode with `cvt`, add it with `xrandr --newmode`, bind it to unused output with `--addmode`
2: Use a dummy plug on a free output
3: Use `evdi` and the `example` application in evdipp to create a virtual screen, attach the provider with xrandr
- Export the new screen, or a portion of it with `x11vnc`, using the `-clip` option with coordinates or screennumber. Optional: Use `NoVNC` to make VNC available to any HTML5 browser
- use adb port forwarding commands to forward localhost:whatever1 on the Android device to connect to the X11VNC port.- Use ADB, or your finger to start VNC session on tablet to localhost:whatever1, and UPNP/whatever to start browser on TV for NoVNC url.
That should cut down your research time ;)
Be warned, Evdi&EvdiPP are currently still glitchy, but under active development.
And yeah I regularly do that kind of thing :) Especially with single dev projects, I prefer spending on them than the big ones like Mozilla, Wikipedia etc. They already have plenty of ways to get themselves on the map for donations.
So even if the commission on the Display Dummy Plug would be peanuts, you can still generate a decent revenue stream from capturing commissions on ancillary and unrelated add to cart actions within that 24 hour window.
[1] https://affiliate-program.amazon.com/help/node/topic/G9SMD8T...
Agree, not everybody likes it :)
I don't believe it works on safari, but safari is the new IE so what can you do.
Uh.. Honestly I did not write a full website and just grabbed the one I found on github.
It is a cool template, though, it is not completely 'react'
and still using some legacy JS libraries, even jQuery (!)
I also find it more confusing to teach to beginners than equivalent vanilla JS, and easier to make performance-hurting mistakes.
Cross browser compatibility was just one of the reasons the world fell in love with jQuery.
(And I'm not even against jQuery, I used it extensively mid-2000s-2010s, including on fairly large SPAs, and even taught a class with it for a little under 2 years, but again, to each their own)
I mean, the http://youmightnotneedjquery.com site reads like a parody even in 2021.
I prefer the DOM API in each example, save for examples that are clearly out of date to support old versions of IE without a polyfill (e.g. all the AJAX examples at the top can use fetch, other can use Object.assign, no use of the iterator interface anywhere, etc)
It takes twice as much typing without the chainable, unix pipe like API. I really don't get it, but I've been baffled by this industry's decision for more than a decade.
In that meaning jQuery is legacy.
That is just my humble opinion.
On Windows there is SpaceDesk, which actually contains a proper virtual display driver and so doesn't need any of those dumb plugs.
Does anyone know of a Linux kernel module that would acomplish that? There's X11-specifc solutions and Weston has a config option for this, but I would absolutely love to be able to just load a kernel module that I could pass a number of displays and their resolutions and it would pop them up seamlessly, just as if I plugged in a display adapter.
EDIT: I did find evdi [0], but it's broken for the kernel I'm using. Does anyone have any experience with it?
Run xrandr to see the current configuration, pick the desired resolution for the second screen from the LVDS1 list and run "xrandr --addmode HDMI1 1920x1080" to tell X11 that that output supports that resolution, then do "xrandr --output HDMI1 --mode 1920x1080 --right-of LVDS1". This should now have extended your desktop and with a bit of luck you can share that screen with Deskreen. I've used that trick with x11vnc in the past at least. (If Deskteen supports sharing arbitrary regions of your screen you can even skip the whole output fakery and just make your virtual screen larger than your display using --fb, but that's a little fragile since most software assumes that the whole usable screen is covered by outputs.)
Please note I typed this on my phone so there might be some mistakes or typos in there but you should be able to fix those. :-)
If you want a custom resolution that isn't in the list of your primary screen you need to create that first using cvt and then xrandr --newmode before anything else.
Any engineering going towards doing this on X11 is wasted at this point and waiting on the Wayland community to agree on and implement a common interface is going to take years, so a kernel-level solution seems like the only way to have this right now. FWIW, that is how SpaceDesk does it on Windows and their performance is great, so it's not like it's impossible to make it work.
I've actually already managed to get a kernel-level virtual display working, but haven't tested with Deskreen yet as it's 1am and I've been staring at C code for too long now. Might post it on HN if I end up actually packaging it up into something usable.
I guess for Windows, a dummy driver is the only way to go since the layers above that are off limits for 3rd parties and it would be Microsoft who had to go ahead and do something there. But as you mentioned the wayland community is pretty chaotic with getting basic features implemented, so effectively it might be the same situation as with Windows ;-)
I'd be interested in seeing your finished product and trying out how it will handle different things you throw at it though.
I dreamed of people like you with deep knowledge of internals of operating systems will come together to solve the problem of virtual drivers! I mostly made Deskreen for that purpose. To bring a problem to community so we can make a really cool stuff that will outshine all the commercial applications out there and be the best screen sharing solution. That is a wonder of collective learning :)
It would be really great if you share a solution on Deskreen github.
Cheers
I merely wrote a userspace utility that lets you make virtual screens without worrying about the low-level stuff like EDID and such. I'll definitely be posting something on GH once I've tested it more tho.
That was my wish and I see 318 stars on github repo!!!!
Thank you all guys!! I see a lot of you coming from here to deskreen.com
Dreams may come true one day :)
Indeed there is still enough room to improve for Deskreen.
You can try to change resolution of your virtual display to make all look bigger if you need that.
Cheers
I have an idea how to make it more usable with with current setup.
There is a new feature in electron comming in future releases: https://github.com/electron/electron/issues/23923 they claim that it will make possible to run desktopCapturer without a mouse pointer.
So I was thinking when it will be released, we can make two separate streams: one for entire desktop with really high quality, and second streem just with a tiny fraction of desktopCapturer mouse with its position. Then merging these streams together and delivering to client web browser.
This is basiclly how astropad works. They are delivering high quality picture of entire desktop, but the fast mouse pointer movement in its own small box, you can see it when watching videos, the pointer has a slight bounding box around it when you are watching some Forza Horizon videos and hovering a mouse above it.
Hope that one day we can do it in Deskreen :)
Cheers
No need for Dummy Plugs. Can do 200 screens if you want.
You can create extend your desktop to virtual screens all you like.
But on mac and windows this is a quite different situation.
XDMX won't work with Mac OS, thought, except you want to work with X11-only apps (defacto a lightweight "virtual machine" without native mac apps).
The Xdmx changelog stops 16 years ago: http://dmx.sourceforge.net/ChangeLog , the last update at https://sourceforge.net/projects/dmx/ is 5 yrs ago. It still uses CVS at Sourceforge. The code will certainly still run modern day X11 applications, but probably with poor performance.
I wonder what Wayland can offer in this respect (regarding fancy X11 servers such as Xnest, Xvnc or Xdmx).
Thank you for such a kind feedback!
Paul
This - Deskreen - I ordered a dongle on Amazon, plugged it in, installed Deskreen with a single command and boom it works! Multiple resolutions available to choose from, decent performance, kudos!
This is on Ubuntu 18.04 with an iPad Pro 12.9” and it looks glorious.
THANK YOU THANK YOU THANK YOU ;-)
Yes, I was also thinking of adding an autostart on login feature and saving previously connected devices. So users don't have to reconnect every time.
A quick Google search reveals that there are options, does anyone have any experience doing that?
Ideally I'd like to mirror an app view to a PC window regardless whether the android display is turned off or even the app is in the background. Not sure if that's even possible on a non-rooted android.
Things may change in future
https://github.com/pavlobu/deskreen#high-level-architecture-...
You need to run a signaling server running somewhere. You cant run a signaling server in browser. When doing screen sharing between two browsers it basically goes to external signaling server on internet and asks credentials and then doing peer to peer communication.
Deskreen can run without access to world wide web with its own local signaling server.
The speed is also much better when doing direct communication through local signaling server running on host machine.
Hope that helps you to understand it better.
Cheers
That should be the standard setup. Allowing any access to your screen via a remote server is a huge security hole.
> The speed is also much better when doing direct communication through local signaling server running on host machine.
This should only affect the setup time right? As soon as the connect is established the signaling server should not be required.
You may use what better fits your use case. But I want to mention that I made and end-to-end encryption for initial signals to be sent to each other. Signals are basically encrypted and hard to hack. Also deskreen has a lot of alrets and confirmations so you can always check your devices IPs. Also it has Lock Room feature -> meaning as soon as someone connected to a socket, it is immediately locked and no one can access it except 2 host and client devices.
But you can have a look in source code and maybe find some security leaks. Please submit the issue if you find it.
By the way I forgot to reference simple peer on github, let me fix that soon.
Deskreen runs with WebRTC which was added after iPad 1st and 2nd generations we can see in chrome releases when it was added exactly for a reference. It first added somewhere in 2013
However I really feel there is a lack of low level programming languages knowledge such as C and Assembly from my side in order to write a code for Deskreen. It basically requires hacking knowledge and there should be patches for minor OS version updates.
This sounds like a tough task for me at the moment.
In future I thought to add a simple 6 digit pass when connecting to computer running Deskreen, kind of a chromecast experience, but this is more a commercial use case, because it requires load balancing and a fleet of cloud machines running on the background. Besides you will be Forced to use it with internet only.
So for now there is no better alternative to just using a web browser on your smart tv and typing address in manually.
...
Note that in future a feature to remember a previously connected device will be added, so you will have to type baffling address in browser only once :)
Cheers
and I plug HDMI plug there, and it perfectly works with Deskreen!
HDMI plugs are the cheapest so far.
Cheers
Yes it acts like luna display, but you can buy HDMI plug from third party.
The latency depends you how close you are to wifi source. When they are connected with a cable, then it depends on your local network hardware and network cards performance.
The framerate may drop if you move away from wifi or download something huge from internet like torrents, but overall it depends on how beefy the host machine is (where Deskreen app runs). My firend used a 3D modeling software Zbrush on a beefy Windows PC with Deskreen and barely noticed any lags. So it's usable even for creators.
on average it consumes pretty low network resources ~1.5 megabytes per second when watching youtube videos through it. but overall experience is good if you have fast network cards and fast router.
But the viewing browser should be also with WebRTC support as well