Hacker News new | past | comments | ask | show | jobs | submit login
I made Deskreen, open source app to make any device a second screen for computer (deskreen.com)
331 points by pavlobu 5 months ago | hide | past | favorite | 151 comments



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,


Thank you for making this open source. I hope you'll be able to find a way to make this worthwhile for yourself.


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


I agree!


> 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.


Yep, code signing is a racket and a complete bs :/


Cool, from a cyber security perspective... can I access it from another network?

and does it communicate over TLS?


> * 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?


There 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.


your "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.


Hi, you are absolutely welcome to contribute and later I'll make an API to fetch and display contributors from github there.

Cheers


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.


I see download counts rising with this command: curl -s https://api.github.com/repos/pavlobu/deskreen/releases | egrep '"name"|"download_count"'


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


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


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.


Thank you for your feedback! It really means a lot to me :)


Very nice! Maybe look at Synergy for mouse/keyboard/stylus sharing between devices: https://github.com/symless/synergy-core


synergy these days has been replaced for most serious use by barrier, due to the restrictive synergy license and costs.

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.


Thanks! I mentioned Synergy as I've used it many years ago and was not aware of license change implications (that's why I linked to the open-source repo). Good to know there's a good fork.


Cool! Thank you for coming here :)


Synergy 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.


I 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.


For Windows only there exists Mouse without border [0] which works a lot better than synergy, including sharing of the clipboard. Of course not usable if you have different systems, but for Windows there is no better solution I'm aware of.

[0] https://aka.ms/MouseWithOutBorders


Beware, once you install Synergy on Mac, there seems to be no way to uninstall.


Hey, thanks!

I'll check that out.


Or Barrier: https://github.com/debauchee/barrier

Its a fork from Synergy 1.9


Barrier is available in the standard Ubuntu and Debian repos too.


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.


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


Gotcha! 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.


Thanks for this question and answer -- I recently learned about both xpra and x2go, and was wondering if this was related, like a generalization of it or something.

Now I think maybe this is a good answer for some remote visualization applications.


On 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.


Can you gleen anything from how Facebook messenger does screen sharing on Android and iOS?


I don't know but it may be WebRTC behind it as well.


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.


Any practical guides/info on how to achieve this setup without a dedicated research session?


For Linux, X11, USB-connection to Android-Device(s), and the TV over Network:

- 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.

https://github.com/mlukaszek/evdipp


Thanks, appreciate this - your effort will hopefully save humanity a year or two at scale!


Wow, sounds great!


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.


That'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.


You'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/G9SMD8T...


Please, remove that atrocious "smooth scrolling" script from your website so it doesn't feel broken.


Removed!

Agree, not everybody likes it :)


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.


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 (!)


jQuery is legacy now? I still use it... Is it just not new enough?


Yes, 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.


jQuery’s API is still (and, probably, forever will be) miles ahead of the native DOM API.

Cross browser compatibility was just one of the reasons the world fell in love with jQuery.


Personally, I find it miles behind the modern native DOM API, which is what I prefer now, but I guess to each their own!

(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)


It's a lot more verbose and less powerful.

I mean, the http://youmightnotneedjquery.com site reads like a parody even in 2021.


I guess it truly does come down to preference and perception, as looking over that link you provided I actually had the opposite reaction!

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)


This is something I really can't fathom.

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.


I mean there is no point to use jQuery if you use react.

In that meaning jQuery is legacy.

That is just my humble opinion.


Vanilla JS works just as well now, so jQuery is just bloat.


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.


Love 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


You 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.


Hey thank you for mentionin that! I was down that lane too and also googled that solution with xrandr on Linux, but at least on Ubuntu 18.04 and 20.04 there is a problem with a nautilus, because it has huge glitches on an emulated xrandr as it is not running on that screen. Also you can't drag and drop windows to that screen as well, because window manager does not recognize it as a desktop. But mouse pointer can go there and I was actually able to share it with Deskreen and was able to see mouse pointer moving, but with huge glitches on background. This soulution turned out to be of no use.


That glitch result should only apply to the --fb variant. Using a disconnected output is not "emulating" anything, it's just overriding what's automatically detected and will not result in glitches. With intel GPUs, you can also add virtual outputs by fiddling with xorg.conf and use those, in case there are no spare outputs.


Yeah, 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.


Kernel level sounds like the wrong approach to me. It might be more generic if done right, but having X11/Wayland support arbitrary virtual outputs directly seems much simpler and probably performs better. On X11 you can do this if you have an intel GPU by adding stuff to your xorg.conf. That makes it inconvenient and more of a hack than anything, but if this were to exist a layer above and you could simply add and remove them dynamically via xrandr it would be perfect. It had to be duplicated for Wayland though.


I'd normally agree, but seeing how long it took to get screensharing implemented "on Wayland" (the terminology gets weird there) and how much of a mess it is even now that it finally is (GNOME making up its own unnecessarily complicated system, KDE copying GNOME but badly and Weston doing something more reasonable but completely different and incompatible), I wouldn't hold my breath for a reliable implementation of virtual displays.

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.


True, the situation currently is suboptimal. It feels like X11 was given up on while Wayland and its implementations and ecosystem aren't quite there yet.

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.


Wow that is amazing progress you made! :D

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


To be fair, I didn't write the kernel side of the implementation - that already existed and was made by DisplayLink, a company that Deskreen is actually in a way competing with.

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.


Sounds great!


Great thoughts !


Thank you for sharing what you know with us.


Dummy display adapter for $1.47 shipped with promo code 7O8A2CEG

https://smile.amazon.com/dp/B08RCHWKWQ/


See, they are cheap like chips :)


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.


Yes 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 :)


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).


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


Text should look pixel-perfect if you use loss-less compression. Or aren't you? Are you using QuickSync/HWEnc (lossy h26X?) ?


I 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 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


If you have a Mac then just use Sidecar


I have iPad Pro 2017 and Apple already thinks it is too old to run a SideCar on it. Such an incredible world we live in :)


Old iPads are plentiful


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.


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.


Yes, 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).


15 years is long, even longer in Linux time...


Time is relative to your age, young padawan ;-)

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).


Any hope of security, for a start! ;D


The reason the first generation iPads may not work is that it is older than Chrome and other browsers started to adopting WebRTC technology. Deskreen is using WebRTC under the hood. So it will not work.


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


Haha!

Thank you for such a kind feedback!

Paul


Congratulations for the diagrams on GitHub! This is rare these days, but so helpful to understand a project.


This is freaking awesome. Brings old tablets back to life. Genius, thanks a bunch


Absolutely, positively, welcome! :)


This 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.


Thank you for liking it! Yes I was thinking of adding a system tray functionality and adding console client commands as well.


agreed and maybe with some sort of predefined or saved sessions for different usecases.


Yes, the ones that can be managed in Connected Devices panel


OK, 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 ;-)


Heh thanks! :) You are welcome


If anyone is interested, here is a documentation on how screen sharing session starts step by step: https://github.com/pavlobu/deskreen#webrtc-screen-sharing-se...


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


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.


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.



Nice one! But still not cross platform.


It works on Linux, macOS and windows


I mean not cross platform for mobile devices. I was thinking on doing something like Deskreen but with React Native for mobile. But found that technology is not there yet.


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/


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/


Anybody who wants to this with Linux: scrcpy uses adb(turn on usb debug) und works like a charm


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


which interface is missing on mobile?


couldn't find out how to connect screen recorder on mobile with Webrtc in React Native. Maybe someone already did that?


I absolutly love the concept. Excuse me, I'm gonna install this on everything real quick. I'll report back (if I don't forget).


After playing with different combinations of screen-sharing between my devices, I'm pretty happy with how it works. Maybe still a bit rough around the edges but for simple usecases definitely useable.


Thank you!


A documentation on high level architecture of Deskreen available here:

https://github.com/pavlobu/deskreen#high-level-architecture-...


Wow, 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.


Thank you for kind words! :) You are welcome!


A high level architecture design of Deskreen is ready on Github: https://github.com/pavlobu/deskreen#high-level-design


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?


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


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.


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.


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.


A signaling server does not provide access to your screen. The clients can verify that they are connected to each other without MITM.


This 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.


the 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


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?


It is an electron app. We just have to live with it.


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.


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.


Understandable. Your progress so far is amazing.


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).


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 baffling address in browser only once :)

Cheers


You could probably use catt[0] and do `catt cast_site <the URL>`, but I haven't tested it.

[0] https://github.com/skorokithakis/catt/


Dang, this is what I call creative coding.


Haha! thanks :)


Great idea - though it doesn't seem like there are many options for USB-C based dummy display plugs.



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


Great project, but on Windows SpaceDesk doing the same things without plugs.


Yes, 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.


Very interesting. Does this act like Luna Display? How's the latency


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.


ANY device!


I 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.


Yes that is exactly what I meant.

But the viewing browser should be also with WebRTC support as well


Yup, lol :D


Any link to an HDMI 4k 60hz dummy adapter that support HDR?


No, but you can always google :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: