[HN Gopher] I made Deskreen, open source app to make any device ...
       ___________________________________________________________________
        
       I made Deskreen, open source app to make any device a second screen
       for computer
        
       Author : pavlobu
       Score  : 171 points
       Date   : 2021-01-18 11:13 UTC (11 hours ago)
        
 (HTM) web link (www.deskreen.com)
 (TXT) w3m dump (www.deskreen.com)
        
       | aargh_aargh wrote:
       | Does 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.
        
         | pavlobu wrote:
         | I was thinking of doing a Deskreen for mobile and tablets to do
         | exact same thing, but technology is not there yet for React
         | Native.
         | 
         | Things may change in future
        
         | jjice wrote:
         | I literally did this earlier today. Funny coincidence. I'm
         | using Vysor[0]. Worked out of the box for me. If you aren't
         | pro, the display quality leaves some to be desired, but it
         | works fine for me to make Android dev on hardware a bit more
         | comfortable. It requires the device be unlocked though. It even
         | has a web interface that uses WebUSB. I didn't try it, but
         | seems like a neat option.
         | 
         | [0] https://www.vysor.io/
        
         | ffpip wrote:
         | scrcpy - https://github.com/Genymobile/scrcpy
        
           | pavlobu wrote:
           | Nice one! But still not cross platform.
        
             | jowood wrote:
             | It works on Linux, macOS and windows
        
         | Groxx wrote:
         | Depending on how technical you are / your audience is: Vysor or
         | scrcpy. Vysor used to be a free chrome extension, but alas, no
         | longer. https://fossbytes.com/android-screen-mirroring-apps-pc/
        
         | pwlb wrote:
         | Anybody who wants to this with Linux: scrcpy uses adb(turn on
         | usb debug) und works like a charm
        
       | boromi wrote:
       | Any link to an HDMI 4k 60hz dummy adapter that support HDR?
        
         | pavlobu wrote:
         | No, but you can always google :)
        
       | mfkp wrote:
       | Dummy display adapter for $1.47 shipped with promo code 7O8A2CEG
       | 
       | https://smile.amazon.com/dp/B08RCHWKWQ/
        
         | pavlobu wrote:
         | See, they are cheap like chips :)
        
           | Yeroc wrote:
           | I 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.
        
       | dingdingdang wrote:
       | Think 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.
        
       | kevincox wrote:
       | It 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 wrote:
         | Yes 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
        
           | kevincox wrote:
           | I 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.
        
             | pavlobu wrote:
             | Not quite. As I've tested the speed is much slower when I'm
             | using a simple-peer API with external IPC servers array
             | filled in.
             | 
             | 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.
        
           | Animats wrote:
           | _Deskreen 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 wrote:
             | A signaling server does not provide access to your screen.
             | The clients can verify that they are connected to each
             | other without MITM.
        
       | premek wrote:
       | _ANY_ device!
        
         | pavlobu wrote:
         | Yup, lol :D
        
       | [deleted]
        
       | retribe wrote:
       | I 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 wrote:
         | Hey 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 wrote:
           | Text should look pixel-perfect if you use loss-less
           | compression. Or aren't you? Are you using QuickSync/HWEnc
           | (lossy h26X?) ?
        
       | grishka wrote:
       | Please, remove that atrocious "smooth scrolling" script from your
       | website so it doesn't feel broken.
        
         | pavlobu wrote:
         | Removed!
         | 
         | Agree, not everybody likes it :)
        
           | ficklepickle wrote:
           | You 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 wrote:
             | I 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 (!)
        
             | grishka wrote:
             | The #1 problem with all these scripts is that they make the
             | scrolling wonky when you use the trackpad on macOS. There's
             | supposed to be a 1:1 relationship between how far you move
             | your fingers and how far it scrolls, and these make it
             | either fly off the screen at the speed of light or feel
             | like you're scrolling through molasses. Either way, it
             | clashes with your muscle memory.
        
       | pavlobu wrote:
       | Meet 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/
       | 
       | 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,
        
         | ValentineC wrote:
         | Thank you for making this open source. I hope you'll be able to
         | find a way to make this worthwhile for yourself.
        
           | pavlobu wrote:
           | You are welcome!
           | 
           | 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
        
         | GordonS wrote:
         | > 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 wrote:
           | Yep, code signing is a racket and a complete bs :/
        
         | mnw21cam wrote:
         | No, 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 wrote:
           | Or 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
        
           | pavlobu wrote:
           | 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 wrote:
             | It 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 wrote:
               | Thank you for your feedback! It really means a lot to me
               | :)
        
           | pavlobu wrote:
           | I see download counts rising with this command: curl -s
           | https://api.github.com/repos/pavlobu/deskreen/releases |
           | egrep '"name"|"download_count"'
        
       | lrvick wrote:
       | X.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 wrote:
         | 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.
        
       | kodablah wrote:
       | Nice. 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
        
         | pavlobu wrote:
         | Great 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.
        
       | xur17 wrote:
       | Any 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 wrote:
         | It 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
         | bafflying address in browser only once :)
         | 
         | Cheers
        
       | christiansakai wrote:
       | Dang, this is what I call creative coding.
        
       | stragies wrote:
       | The 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 wrote:
         | It is an electron app. We just have to live with it.
        
       | michaelpb wrote:
       | Is 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 wrote:
         | Hi 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
        
         | stragies wrote:
         | If your device has an unused VGA connector, then on X11
         | (perhaps Wayland too) you can "force" the graphics-card into a
         | mode for that output without connecting a VGA dummy plug.
         | 
         | 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.
        
           | pavlobu wrote:
           | Wow, sounds great!
        
       | boromi wrote:
       | Very interesting. Does this act like Luna Display? How's the
       | latency
        
         | pavlobu wrote:
         | Hi 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.
        
       | jdalgetty wrote:
       | Great idea - though it doesn't seem like there are many options
       | for USB-C based dummy display plugs.
        
         | pavlobu wrote:
         | Hey, 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/oric...
         | 
         | and I plug HDMI plug there, and it perfectly works with
         | Deskreen!
         | 
         | HDMI plugs are the cheapest so far.
         | 
         | Cheers
        
         | boromi wrote:
         | https://www.amazon.com/Cablecc-Virtual-Headless-Emulator-192...
         | 
         | Is one option
        
       | francoisp wrote:
       | very 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 wrote:
         | Haha!
         | 
         | Thank you for such a kind feedback!
         | 
         | Paul
        
       | mmastrac wrote:
       | Very 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 wrote:
         | Thank 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 wrote:
           | Understandable. Your progress so far is amazing.
        
       | nihil75 wrote:
       | Very nice! Maybe look at Synergy for mouse/keyboard/stylus
       | sharing between devices: https://github.com/symless/synergy-core
        
         | pavlobu wrote:
         | Hey, thanks!
         | 
         | I'll check that out.
        
           | texs0987 wrote:
           | Or Barrier: https://github.com/debauchee/barrier
           | 
           | Its a fork from Synergy 1.9
        
             | als0 wrote:
             | Barrier is available in the standard Ubuntu and Debian
             | repos too.
        
       ___________________________________________________________________
       (page generated 2021-01-18 23:01 UTC)