53 ms·
I made Deskreen, open source app to make any device a second screen for computer
- pavlobu 6y agoMeet Deskreen an app to make any device with a web browser a second screen for your computer. You can download latest Deskreen-1.0.0 version on our website: https://www.deskreen.com/ https://www.deskreen.com/ Quick Demo Video On Youtube -- Tablet as Second Screen for a laptop | Using Deskreen: https://youtu.be/rmg5tZ4iSx8 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 https://github.com/pavlobu/deskreen Deskreen on Patreon: https://www.patreon.com/deskreen https://www.patreon.com/deskreen Thank you all for your attention,
- mnw21cam 6y agoNo, I don't seem to be able to download the latest Deskreen-1.0.0 version from your web site, because your web site is just a blank white page.
- pavlobu 6y agohttps://www.deskreen.com/ https://www.deskreen.com/ 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
- ficklepickle 6y agoIt works fine. That was a bad-faith comment from someone that browses with JS disabled. Frankly, I think that comment was uncalled for. 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.
- pavlobu 6y agoThank you for your feedback! It really means a lot to me :)
- pavlobu 6y agoI see download counts rising with this command: curl -s https://api.github.com/repos/pavlobu/deskreen/releases https://api.github.com/repos/pavlobu/deskreen/releases | egrep '"name"|"download_count"'
- pavlobu 6y agoOr just go straight to github.com releases page and download it from there directly. Here it is: https://github.com/pavlobu/deskreen/releases/tag/v1.0.0 https://github.com/pavlobu/deskreen/releases/tag/v1.0.0
- ValentineC 6y agoThank you for making this open source. I hope you'll be able to find a way to make this worthwhile for yourself.
- GordonS 6y ago> app is not Code-Signed yet, code signing is pricy 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.
- pavlobu 6y agoYep, code signing is a racket and a complete bs :/
- ropp 6y agoyour "meet the team" page seems pretty lonely, I hope there are people here, who are interested in contributing. I'm definitely going to look, if I find a place, where I can contribute some code, docu, translation or anything.
- pavlobu 6y agoHi, you are absolutely welcome to contribute and later I'll make an API to fetch and display contributors from github there. Cheers
- nextaccountic 6y ago> * use any device with web browser as second screen for your computer (using Display Dummy Plug) 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?
- pavlobu 6y agoThere are the ways to do it for every platform and commercial apps that have features like Deskreen prove that. But they don't disclose their solutions. It is beyond of my current knowledge at the moment how they made it. 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.
- avipars 6y agoCool, from a cyber security perspective... can I access it from another network? and does it communicate over TLS?
- jdalgetty 6y agoGreat idea - though it doesn't seem like there are many options for USB-C based dummy display plugs.
- pavlobu 6y agoHey, thank you for your comment! There are USB-C type based plugs out there. At least I wanted to buy one on Aliexpres, but then I decided not to buy it because I already had a converter from USB-C type to HDMI. Like the one here: https://cdn.webshopapp.com/shops/172646/files/146990684/orico-aluminum-usb-type-c-hub-suitable-for-macbook.jpg https://cdn.webshopapp.com/shops/172646/files/146990684/oric... and I plug HDMI plug there, and it perfectly works with Deskreen! HDMI plugs are the cheapest so far. Cheers
- boromi 6y agohttps://www.amazon.com/Cablecc-Virtual-Headless-Emulator-1920x1080p/dp/B086MKR9WH/ref=sr_1_3?dchild=1&keywords=dummy+usb-c&qid=1610994012&sr=8-3 https://www.amazon.com/Cablecc-Virtual-Headless-Emulator-192... Is one option
- nihil75 6y agoVery nice! Maybe look at Synergy for mouse/keyboard/stylus sharing between devices: https://github.com/symless/synergy-core https://github.com/symless/synergy-core
- pavlobu 6y agoHey, thanks! I'll check that out.
- ironmagma 6y agoBeware, once you install Synergy on Mac, there seems to be no way to uninstall.
- sixothree 6y agoSynergy never ceases to amaze me in that these few bugs that have been around for years make it a completely broken product for me. Regret paying them.
- josh_frome 6y agoI had a similar experience after purchasing a license. Admittedly a few years back now, but I seemed to encounter issues that would strike at the most inopportune time. I eventually moved to an RDP based setup and haven't looked back.
- walrus01 6y agosynergy these days has been replaced for most serious use by barrier, due to the restrictive synergy license and costs. https://github.com/debauchee/barrier 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.
- michaelpb 6y agoIs there no way to do this without a physical plug? I think there's a way to make dummy X.org display devices without any extra physical hardware -- I've definitely done similar stuff when setting up headless automated E2E testing, before tools for this were widely available. Is the hard part connecting it to an existing session as a display? Or is it that cross-platform compatibility is what's holding it back, since perhaps there is no equivalent for people running a macOS or Windows based OS? 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.
- pavlobu 6y agoHi thanks on paying attention on that, 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
- GekkePrutser 6y agoOn Mac the X server is only optional though (Xquartz) and I don't think it can even 'see' the entire screen. Only other X Windows apps.
- michaelpb 6y agoGotcha! Thanks for the reply, and thanks again for the project. > 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.
- 6y ago
- mmastrac 6y agoVery cool. IIRC some VNC distributions for Windows came with a virtual screen driver that was useful for avoiding the need for a dummy plug.
- pavlobu 6y agoThank you for your comment! Yes, but getting rid of a dummy plug is a whole separate project for each operating system, so I basically need to create three new repos on github and start development for that. 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.
- mmastrac 6y agoUnderstandable. Your progress so far is amazing.
- premek 6y agoANY device!
- pavlobu 6y agoYup, lol :D
- walrus01 6y agoI assume he actually means any device that can run a very recent HTML5 capable browser that can go into fullscreen mode. So for tablets it would be dependent on having a reasonably recent safari or chrome installed.
- pavlobu 6y agoYes that is exactly what I meant. But the viewing browser should be also with WebRTC support as well
- boromi 6y agoVery interesting. Does this act like Luna Display? How's the latency
- pavlobu 6y agoHi thank you for asking. 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.
- boromi 6y agoAny link to an HDMI 4k 60hz dummy adapter that support HDR?
- pavlobu 6y agoNo, but you can always google :)
- retribe 6y agoI tried it with an iPad and it works great, however the text-quality is sadly not good enough for my use case: as a second screen for looking at API documentation, PDFs and coding. I wish this could be improved - software such as Parsec(only for Windows hosts) can achieve better quality (though not perfect).
- pavlobu 6y agoHey thank you for your feedback! 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
- stragies 6y agoText should look pixel-perfect if you use loss-less compression. Or aren't you? Are you using QuickSync/HWEnc (lossy h26X?) ?
- pavlobu 6y agoI didn't dive that deep into WebRTC configuration yet. But I think it can be achieved with some sophisticated SDP transform configurations. 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 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
- suyash 6y ago
- kevincox 6y agoIt seems like the sender could be in-browser as well using WebRTC for the screen sharing. I would guess this is what is being used anyways as the receiver is a browser? If not is the quality much different?
- pavlobu 6y agoYes basically it's two browsers talking to each other. But there is an important thing to notice. 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
- Animats 6y agoDeskreen can run without access to world wide web with its own local signaling server. That should be the standard setup. Allowing any access to your screen via a remote server is a huge security hole.
- kevincox 6y agoA signaling server does not provide access to your screen. The clients can verify that they are connected to each other without MITM.
- kevincox 6y agoI can see the benefit of a local signaling server however I am always online so I would be happy to run it in my browser and avoid running electron. > 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.
- deleted 6y ago[deleted]
- mfkp 6y agoDummy display adapter for $1.47 shipped with promo code 7O8A2CEG https://smile.amazon.com/dp/B08RCHWKWQ/ https://smile.amazon.com/dp/B08RCHWKWQ/
- pavlobu 6y agoSee, they are cheap like chips :)
- Yeroc 6y agoI guess the downside of using this mechanism is that if you already have an external monitor attached then you can't use this solution? Or is there another way to use Deskreen? For example, my Mac laptop is already plugged into a large external display so there's no free port for a dummy plug like this.
- pavlobu 6y agoYes that is a downside at the moment. But for Deskreen things may change in future and many cool hackers will come to our github page and add their codes to hack modern OS to think that there is an external display connected. 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 :)
- grishka 6y agoPlease, remove that atrocious "smooth scrolling" script from your website so it doesn't feel broken.
- pavlobu 6y agoRemoved! Agree, not everybody likes it :)
- ficklepickle 6y agoYou can use the CSS attribute "scroll-behavior: smooth" which avoids the hazards of using JS to hijack the scroll event. I don't believe it works on safari, but safari is the new IE so what can you do.
- pavlobu 6y agoI removed it and it really works ok now even with safari. 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 (!)
- vulcan01 6y agojQuery is legacy now? I still use it... Is it just not new enough?
- michaelpb 6y agoYes, and the main historical reasons people used jQuery was for smoothing over browser discrepancies and using CSS selectors in JS, but with IE9 we have `querySelectorAll` which made what was jQuery's biggest selling point for many, standard to vanilla JS. I also find it more confusing to teach to beginners than equivalent vanilla JS, and easier to make performance-hurting mistakes.
- 6y ago
- kodablah 6y agoNice. I was considering the same (did POC w/ just screen no input a couple of years ago[0] tho may not work since I used gunjs). One thing I was considering instead of Electron is a systray daemon that send input to a chrome extension via native window messaging. 0 - https://github.com/cretz/myscreen.live https://github.com/cretz/myscreen.live
- pavlobu 6y agoGreat work! 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.
- lrvick 6y agoX.org already has this feature built in: XDMX. No need for Dummy Plugs. Can do 200 screens if you want. You can create extend your desktop to virtual screens all you like.
- pavlobu 6y agoYes, 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.
- ktpsns 6y agoYes, XDMX is amazing, but the last time I used it (literally 15 years ago), it required a hand crafted xorg.conf, which is not really practical in 2020 with notebooks and frequently changing settings. 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).
- acct776 6y ago15 years is long, even longer in Linux time...
- ktpsns 6y agoTime is relative to your age, young padawan ;-) The Xdmx changelog stops 16 years ago: http://dmx.sourceforge.net/ChangeLog http://dmx.sourceforge.net/ChangeLog , the last update at https://sourceforge.net/projects/dmx/ 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).
- acct776 6y agoAny hope of security, for a start! ;D
- xur17 6y agoAny chance this could work with a chromecast device (I imagine it should be fairly easy since they can be directed to display a webpage).
- pavlobu 6y agoIt already works with smart TV's, I've tested it, but you need to install a chrome browser on it and type in address manually. 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
- StavrosK 6y agoYou could probably use catt[0] and do `catt cast_site <the URL>`, but I haven't tested it. [0] https://github.com/skorokithakis/catt/ https://github.com/skorokithakis/catt/
- francoisp 6y agovery nice ! I had been using XDisplay, (wired, Macosx iOS only) requires an app on iOS device and needs a patch once in a while... maybe because Apple was about to come out with sidecar? (API changes?) Anyway this is WAY better! True hacker: hard to build a business out of it, so open-sources it. May the source be with you! Cheers
- pavlobu 6y agoHaha! Thank you for such a kind feedback! Paul
- christiansakai 6y agoDang, this is what I call creative coding.
- pavlobu 6y agoHaha! thanks :)
- aargh_aargh 6y agoDoes anyone have a recommendation if I want to do the reverse, i.e. share my Android screen in a PC window (Windows)? 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.
- stragies 6y agoThe package is huge, even the Debian package. Are you shipping a bunch of dependencies/frameworks in the package? Aren't there more system-components you could use?
- pavlobu 6y agoIt is an electron app. We just have to live with it.
- dingdingdang 6y agoThink you are missing a beat by not having affiliate links to those Display Dummy Plugs! Would certainly order via you as a cost free way of donating should I come to need this type of software.
- GekkePrutser 6y agoThat's peanuts though financially, if you use it it'd be much better to send a few bucks his way :) 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.
- cosmie 6y agoYou'd be surprised. Amazon's affiliate program, as one example, pays out for any item added to someone's cart within 24 hours of the affiliate click (with a 90 day window to complete the purchase)[1]. 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/G9SMD8TQHFJ7728F https://affiliate-program.amazon.com/help/node/topic/G9SMD8T...
- StavrosK 6y agoThis is very nice, thank you! I would love to have this as a smaller/self-contained server I can launch from the cli (at least on Linux), but it's great as it is.
- ropp 6y agoagreed and maybe with some sort of predefined or saved sessions for different usecases.
- pavlobu 6y agoYes, the ones that can be managed in Connected Devices panel
- pavlobu 6y agoThank you for liking it! Yes I was thinking of adding a system tray functionality and adding console client commands as well.
- tambourine_man 6y agoThis is freaking awesome. Brings old tablets back to life. Genius, thanks a bunch
- pavlobu 6y agoAbsolutely, positively, welcome! :)
- ropp 6y agoI absolutly love the concept. Excuse me, I'm gonna install this on everything real quick. I'll report back (if I don't forget).
- franga2000 6y agoLove the project as I currently don't have a way of doing this on Linux, but there is no way I'm using those dumb plugs. 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? [0] https://github.com/DisplayLink/evdi https://github.com/DisplayLink/evdi
- iforgotpassword 6y agoYou can abuse an unconnected output for this. Assume you're on a laptop and the internal screen is LVDS1 and you have another connector called HDMI1. 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.
- franga2000 6y agoYeah, this is what I meant by "X11-specific" solutions. Besides simply being an ugly hack (what if I don't have any spare outputs?), I'm not going to go back to XOrg just for that and a kernel-level solution sounds much more reliable anyway.
- tosterr 6y agoGreat project, but on Windows SpaceDesk doing the same things without plugs.
- pavlobu 6y agoYes, but they are close source. So I don't know yet how they did it. They have a windows driver obviously. Deskreen needs 3 display drivers so the technical task is even more challenging.
- ASpaceCowboi 6y agoThis is so awesome. I've been looking for something like this for my obsolete ipad 1st Generation! Do you think it works with that? The highest OS that is iOS 5.1.1.
- pavlobu 6y agothe problem of old Ipads are their old browsers that don't support WebRTC. 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
- DiggyJohnson 6y agoWow, this is actually one of the first open source projects that I have been generally surprised, and excited to see as it relates directly to one of my youth cases. I have literally explained this issue out loud to a friend of mine. I’m rambling. Thank you so much for making this open source.
- pavlobu 6y agoThank you for kind words! :) You are welcome!
- flaxton 6y agoOK, I’m very handy with Linux and tried X11/VNC mods before to do this but with no success, and they were very complex. 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 ;-)
- pavlobu 6y agoHeh thanks! :) You are welcome
- pavlobu 6y agoA high level architecture design of Deskreen is ready on Github: https://github.com/pavlobu/deskreen#high-level-design https://github.com/pavlobu/deskreen#high-level-design
- pavlobu 6y agoIf anyone is interested, here is a documentation on how screen sharing session starts step by step: https://github.com/pavlobu/deskreen#webrtc-screen-sharing-session-initiation-step-by-step https://github.com/pavlobu/deskreen#webrtc-screen-sharing-se...
- pavlobu 6y agoA documentation on high level architecture of Deskreen available here: https://github.com/pavlobu/deskreen#high-level-architecture-design https://github.com/pavlobu/deskreen#high-level-architecture-...
- gregoriol 6y agoCongratulations for the diagrams on GitHub! This is rare these days, but so helpful to understand a project.