Deskreen
https://deskreen.com
Website:▶️ Deskreen Youtube channel (video tutorials, demos, use cases for Deskreen day to day usage)
Deskreen turns any device with a web browser into a secondary screen for your computer
Deskreen is an electron.js
based application that uses WebRTC
to make a live stream of your
desktop to a web browser on any device.
It is built on top of Electron React Boilerplate
For better security mechanism, end-to-end encryption is implemented, which is inspired by
darkwire.io. The difference is that it is rewritten
in Typescript
and transformed to use node-forge
instead of window.crypto.subtle
.
Why this was made? Because a client served with http
without SSL, which makes window.crypto.subtle
unavailable.
Deskreen Github Discussion Threads
Read and Respect our Contributor Covenant Code of Conduct When Writing in our Discussion Threads.
Announcements Channel in Discussions
Some progress and updates on Deskreen can be found here.
- Q&A General - for general questions about Deskreen.
- Bugs General - for general bug reports if you don't know dev environment details. Please include Deskreen version! If you saw a bug and know your dev environment, and how to reproduce it, please consider opening a new Issue labeled as Bug and provide full details.
- General - for general discussion. For example how did you find out about Deskreen? Or send cheers and thanks to anyone in Deskreen's community.
🎉
- Use Cases for Deskreen - let our community know how you use Deskreen in this thread.
- Enhancements and New Features for Deskreen - share your ideas of what improvements can be done to Deskreen. Issues created with enhancement tag should be related to some concrete example of change in UI, Security patch, Performance improvement with some concrete notes on how you think the problem should be approached. Otherwise for general improvements with short paragraphs post your thoughts here.
NOTE: We are looking for a solution to get rid from Dummy Display Plugs while using Deskreen as a second screen. Your code support is highly valuable and welcome in Deskreen!
Display Dummy Plugs are good temporary solution, but it is not that good for everyone. If you are a seasoned Windows or Linux or MacOS hacker with a knowledge of low level tweaks and tricks, you can help us to make Deskreen better! On a long run Deskreen seeks for getting rid of Display Dummy Plugs, because most people don't like using them. Sometimes they can't use them because all available display ports are already taken. So we need to have native drivers for Win / Mac / Linux that will help to enable virtual display without Dummy Display Plugs. There are already working commercial solutions out there with their own drivers which they don't disclose, but this task is doable with a help of entire community. The goal of Deskreen is to enable community power and knowledge to overcome these technical challenges and make it a go-to second screen solution that everyone will benefit from!
We plan on making virtual display driver support for each of three main operating systems and place all OS related codes in ./drivers
subdirectory of this project.
You can find brief requirements for driver API in ./drivers/README.md
.
Share your valuable knowledge on how to create virtual desktop without a Dummy Display Plug in this discussion thread.
Thank you in advance!
Installing with binaries
Windows
- Get the .msi or .exe file from Releases
Mac
- Get the .dmg file from Releases
Linux
-
Debian and Ubuntu based distributions (deb)
-
Enterprise Linux based distributions (rpm)
-
Arch Linux AUR Package
-
AppImage for other distributions
Get Started for Developers
Prerequisites
You will need to have node
npm
and yarn
installed
globally on your machine.
- git clone this repo
cd app/client; yarn install ; cd ../../ ; yarn install
yarn dev
-- run in dev mode with live updates
Useful yarn commands
yarn start
-- run in production mode to test, without packaging
yarn package
-- to package an app and make executables available in release
folder
package.json
for more yarn commands look at How to run tests
yarn test
-- run all unit tests
yarn build-ux && yarn test-ux
-- run User Experience tests (no tests for app/client
yet)
TODO: add e2e tests with host + client app interaction
run tests of host app
yarn test-watch-not-silent
-- run tests in watch mode with console logs only for host app, excluding app/client
yarn test -- -u
-- update snapshots
app/client
run tests for yarn test
-- run client tests in watch mode
test:nowatch
-- run client tests a single time
yarn test -- -u
-- update snapshots
Generate test coverage results
yarn coverage
-- when run from project root, generates a coverage report for host
and app/client
Instruction for running a local Sonar Qube, community edition
Prerequisites
You need to install Sonar Qube community edition for your machine. And sonar-scanner. Then add sonar scanner to your PATH.
You need to run sonar-scanner separately on root directory
and on app/client
directory.
Luckily for you sonar scanner is automatically triggered after husky
checks.
So you only need to install and configure SonarCube locally and
create two separate projects in SonarCube panel.
First project for host app, and second project for client viewer app.
TODO: add how to get started with local SonarCube for Deskreen in details.
Documentation
High level architecture design
WebRTC Screen Sharing Session Initiation Step by Step
Note on versioning:
- All versions git tags should start with
v
ex.v1.0.0
- Before making a new release with
git push <version-tagname>
set version to<version-tagname>
! withoutv
in the beginning! (ex.1.0.0
-- not start withv
) in these three files:package.json
-- inversion
key ex.1.0.0
app/package.json
-- inversion
key ex.1.0.0
app/package-lock.json
-- inversion
key ex.1.0.0
https://deskreen.com ?
Found typo onYou can submit your pull request with fix on Deskreen website repo
Maintainer
License
AGPL-3.0 License © Pavlo (Paul) Buidenkov
Copyright
Deskreen Logo PNG Image -- © Nadiia Plaunova
Apache 2.0 © blueprintjs
MIT © Electron React Boilerplate
simple-peer MIT. Copyright (c) Feross Aboukhadijeh
GNU General Public License (GPL) Version 2 node-forge
ISC Copyright (c) 2019, Mapbox pixelmatch
Thanks
Donate
Click to donate on Deskreen's Patreon page Click to donate on Deskreen's Opencollective page