Deskreen turns any device with a web browser into a secondary screen for your computer

Overview

Deskreen

Github All Releases

Deskreen Logo

Website: https://deskreen.com

release all os -- no code signing build-and-test codecov-generate codecov platform

▶️ 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 FAQ


Get Started for translators

Want to add a new language support for Deskreen? Or you found a typo in existing translations of Deskreen App or website? Here are step by step guides:


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.



  • 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 Discussion - for general discussion. For example how did you find out about Deskreen? Or send cheers and thanks to anyone in Deskreen's community members. 🎉


  • 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

  • Or get from Homebrew: brew install --cask deskreen

Linux

  • Debian and Ubuntu based distributions (deb)

  • Enterprise Linux based distributions (rpm)

  • Arch Linux AUR Package

  • AppImage for other distributions

Get Started for Developers

Run yarn test-all locally to make sure you don't have any errors, before submitting your PR

Prerequisites

You will need to have node npm and yarn installed globally on your machine.

  1. git clone this repo
  2. cd app/client; yarn install --frozen-lockfile ; cd ../../ ; yarn install --frozen-lockfile
  3. 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

for more yarn commands look at package.json

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

run tests for app/client

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

How to regenerate snapshots if you have tests failing when running yarn test?

in root ./ folder of project run this:

yarn jest --updateSnapshot

in Deskreen Viewer ./app/client folder of project run this:

cd app/client
SKIP_PREFLIGHT_CHECK=true yarn test:nowatch -- -u

Run yarn test-all locally to make sure you don't have any errors, before submitting your PR

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

high-level-design

WebRTC Screen Sharing Session Initiation Step by Step

sharng-session-init

Benchmarks:

Benchmarks can be found here

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> ! without v in the beginning! (ex. 1.0.0 -- not start with v) in these three files:
    • package.json -- in version key ex. 1.0.0
    • app/package.json -- in version key ex. 1.0.0
    • app/package-lock.json -- in version key ex. 1.0.0

Found typo on https://deskreen.com ?

You can submit your pull request with fix on Deskreen website locales 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

🙏 Special thanks to Electron React Boilerplate community for providing a good kickstart template boilerplate code for electron project, that really helped a lot to get started with development of Deskreen.

🙏 Thanks to Github workflows for enabling a robust CI pipeline for the needs of 'forging' 🛠️ Deskreen.

🙏 Many thanks to all 🌍 open source community members and maintainers of libraries used in this project.

Donate

Click to donate on Deskreen's Patreon page

Click to donate on Deskreen's Opencollective page

Comments
  • Upgrade electron to V13 / Enable Pipewire v0.3 support

    Upgrade electron to V13 / Enable Pipewire v0.3 support

    Following #140 , upgrade electron in order to support pipewire>=0.3 by default.

    Users of xdg-desktop-portal>=1.10 beware: Multiple dialogs may show up, or just a black screen. Try running as follow:

    XDG_SESSION_TYPE=wayland2 deskreen --enable-features=UseOzonePlatform,WebRTCPipeWireCapturer

    opened by seffs 19
  • Sharing windows on non active desktop lagging

    Sharing windows on non active desktop lagging

    I'm using Arch Linux with Wayland (swaywm) on Thinkpad X1C gen7.

    When I share a window to my Android phone (Sony XZ2c) Brave browser, it works well.. As long as the window is being rendered on the laptop.

    When the window shared is not being rendered on the visible workspace on the source machine, the updates are very laggy. For example, if I try playing a video on my laptop and share it to my phone and navigate away from the workspace hosting the video on the laptop, the video sharing is only sending a frame every second or so.

    enhancement 
    opened by maricn 10
  • Update Traditional Chinese translation

    Update Traditional Chinese translation

    yarn test --updateSnapshot
    yarn run v1.22.10
    $ cross-env BABEL_DISABLE_CACHE=1 RUN_MODE=test jest --silent && yarn test-client --updateSnapshot
    /bin/sh:行1: cross-env:未找到命令
    error Command failed with exit code 127.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    
    yarn start                
    yarn run v1.22.10
    $ yarn build
    $ yarn build-client && yarn build-main && yarn build-renderer
    $ cd app/client && cross-env SKIP_PREFLIGHT_CHECK=true yarn build
    /bin/sh:行1: cross-env:未找到命令
    error Command failed with exit code 127.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    error Command failed with exit code 127.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    error Command failed with exit code 127.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    
    
    opened by taotieren 9
  • [F] Fix GitHub Actions trigger issues.

    [F] Fix GitHub Actions trigger issues.

    @pavlobu I move previous homebrew-pr actions to another action, the trigger condition is "on released". I hope it can fix the previous mistake...

    opened by VergeDX 8
  • [+] Auto update Homebrew cask from GitHub Actions.

    [+] Auto update Homebrew cask from GitHub Actions.

    opened by VergeDX 8
  • [U] Update comment of HOMEBREW_GITHUB_API_TOKEN's scope.

    [U] Update comment of HOMEBREW_GITHUB_API_TOKEN's scope.

    opened by VergeDX 7
  • Second screen not offered to share

    Second screen not offered to share

    Expected Behavior

    Both screens should be offered to share.

    Current Behavior

    Only the bigger primary screen is offered to be shared.

    Steps to Reproduce

    In the Select step, only the primary screen is offered to share

    Context

    I wanted to use an iPad as secondary screen. The secondary screen is cable connected and shows up in display settings of Windows. Windows is set to extend the Desktop to the secondary screen.

    Your Environment

    Windows 10 20H2 Deskreen 1.0.2 Binary Primary screen 5120 x 1440 Secondary screen 2048 x 1536

    bug 
    opened by Rokory 7
  • Shared App Windows (not entire desktop) disconnects after about 10 minutes

    Shared App Windows (not entire desktop) disconnects after about 10 minutes

    Host: Win 10 Sharing 1 specific app window to another desktop on the local network

    Issue: After about 10 minutes the app window on the client disconnects

    • if I go to the Connected Devices page on the host, there are no longer any connected devices

    Note: When sharing the entire desktop (same host/client) no disconnect occurs

    Thanks again!!

    Justin

    bug 
    opened by justinkelly 6
  • Not all open windows/apps (Win 10) available in the share App Window option

    Not all open windows/apps (Win 10) available in the share App Window option

    Firstly great work on this app - and thanks for open sourcing it!!!!!!!!

    It seems that in the share App Window option (Win 10 host) that there is either

    • a limit of 10 windows to choose from
    • or not all open apps/windows are available to select

    I am attempting to share a specific app window but it is not available in the list

    • only 10 windows are shown as selectable - and I have more than 10 open

    Cheers

    Justin

    bug 
    opened by justinkelly 6
  • Added German translation

    Added German translation

    • add german translation
    • resolved conflicts These might not be the most idiomatic but I think they're understandable. Still might have to work on some of them in the future.
    opened by Aceto1 5
  • Added initial Dutch language support

    Added initial Dutch language support

    Tried to keep the Capital Letter usage the same as with the English version. Unfortunately I'm not a NPM coder, so I couldn't run the yarn tests. Let me know if you can merge this or what needs to be done to get it into a proper state.

    opened by sebastianschauenburg 4
  • Is the download version not working?

    Is the download version not working?

    I grabbed the .deb from here: https://deskreen.com/lang-en#page-top for Ubuntu 22.04. Everything seemed to go well but got blank chrome tab on iPad 2 and then WebRTC error on my Galaxy Note 5.
    If it works, I want to donate so can you please tell me where the appropriate support channel is?

    Thanks,

    Nobu

    bug 
    opened by nyck33 0
  • Expanded Video Settings

    Expanded Video Settings

    While the current video settings are great when streaming to another PC or a Cell Phone, they seem to be focused around image quality/compression and don't provide enough tweaking for tablets.

    Many tablets are under-powered in terms of processor, gpu chip, and wi-fi connection. My 11" tablet for example, gets behind and lags horribly even @ 60%. The bottleneck i'm facing appears to be mainly the processor.

    Suggestions:

    • Add Video FPS (5, 10, 15, 30, AUTO)
    • Add Video Bit-Depth (16bit, 24bit, 32bit(true color))

    These capture/video settings would allow for more precise controls for people to reduce the processor & bandwidth required to stream and even allow people to balance those with higher vid quality %'s.

    Thanks for your time

    enhancement 
    opened by WHiZSTA 0
  • Allowing webdev tools to be opened

    Allowing webdev tools to be opened

    Would it be possible to allow the Electron dev console to be used in Deskreen? This might make it much easier to debug issues (or, for example, to remove the "No Wifi or Lan connection" prompt that is blocking the app in many bug reports). Since this comes for free with an Electron app, it'd be great if the console could be activated by the user.

    I thought it was on by default, but if it needs to be added it could be as simple as:

    mainWindow.webContents.openDevTools();
    // or to add it as a top menu option
    mainWindow.setMenu(theMenuGoesHere)
    

    Thanks a lot for the great work with Deskreen!

    enhancement 
    opened by ferrlen 0
  • Something went wrong :(

    Something went wrong :(

    Prerequisites

    • [? ] Using yarn
    • [ x] Using an up-to-date master branch
    • [ ] Using latest version of devtools. Check the docs for how to update
    • [ ] For issue in production release, add devtools output of DEBUG_PROD=true yarn build && yarn start

    Expected Behavior

    See the Mac screen?

    Current Behavior

    Nondescript error. See attached screen shot

    Steps to Reproduce

    1. Download and run Deskreen 2.0.3 on the Mac (Majove)

    2. Load the web page on an Android phone via WiFi (used a Brave private browsing window with VPN turned off, so no extensions)

    3. Get error

    4. File this bug report

    Context

    I want to remotely monitor my Mac

    All I did was download and run.

    Only other thing I'll mention is the Mac is also the WiFi router, but as you can see the web page loaded just fine. I tried two different IPs (one being the router IP) with identical results.

    bug 
    opened by ballo 0
Releases(v2.0.3)
Owner
Paul Pavlo Buidenkov
Paul Pavlo Buidenkov
screen sharing for developers https://screego.net/

screego/server screen sharing for developers Huge thanks to sipgate for sponsoring this project! Intro In the past I've had some problems sharing my s

screego 5k Sep 25, 2022
Fix Burp Suite's horrible TLS stack & spoof any browser fingerprint

Awesome TLS This extension hijacks Burp's HTTP and TLS stack to make it more powerful and less prone to fingerprinting by all kinds of WAFs. It does t

Sleeyax 66 Sep 19, 2022
Python's webbrowser in Go. Simple API for opening web pages on your default browser.

webbrowser webbrowser provides a simple API for opening web pages on your default browser. It's inspired on Python's webbrowser package but lacks some

Carlos Cobo 179 Sep 23, 2022
Control your legacy Reciva based internet radios (Crane, Grace Digital, Tangent, etc.) via REST api or web browser.

reciva-web-remote Control your legacy Reciva based internet radios (Crane, Grace Digital, Tangent, etc.) via REST api or web browser. Usage This progr

null 6 May 3, 2022
DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

subrahmanya  s hegade 1 Dec 20, 2021
Get ip address with Golang on your computer/system

Get IP Address with Golang Get IP address(es) with go-lang is a simple command line tool to get your IP address vpn, internal, external, etc. Usage ge

Murat Oğuz 6 Sep 5, 2022
Easily and securely send things from one computer to another :crocodile: :package:

This project is supported by: croc is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, croc is the only

Zack 20.8k Sep 29, 2022
Running Golang on the Internet Computer?...

Golang on the Internet Computer Running Golang on the Internat Computer?! Yes, it is possible! This repository contains a simple example that shows ho

Aviate Labs 2 Jun 13, 2022
Go setup - Setting up Golang on my computer

This is my Journey Of Learning Go in 2022 I am going to first get some backgroun

Ramzi A. 0 Feb 4, 2022
Package raw enables reading and writing data at the device driver level for a network interface. MIT Licensed.

raw Package raw enables reading and writing data at the device driver level for a network interface. MIT Licensed. For more information about using ra

Matt Layher 423 Jul 27, 2022
Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

Nil Hiiragi 3 Apr 15, 2022
Go wrapper around Device Console Windows tool.

go-devcon Go wrapper around the Windows Device Console (devcon.exe). go install github.com/mikerourke/go-devcon Introduction Here's a brief overview

Mike Rourke 0 Nov 4, 2021
IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

R4bin 3 Nov 10, 2021
An implementation of the FIDO Device Onboard (FDO) spec written in Rust.

fido-device-onboard-rs An implementation of the FIDO Device Onboard Specification written in rust. The current implementation targets specification ve

Fedora IoT 30 Sep 20, 2022
Nomad plugin for reserving device mappings used by ebs devices.

Nomad Skeleton Device Plugin Skeleton project for Nomad device plugins. This project is intended for bootstrapping development of a new device plugin.

Turbine Inc. 0 Jan 5, 2022
Parse any web page for URLs and return the HTTP response code of each one.

ParseWebPage - Fully Functional WebPage Parser Parse any web page for URLs and return the HTTP response code of each one. Creators ?? Steven Williams

null 0 Oct 25, 2021
[WIP] gg is a portable tool to redirect the traffic of a given program to your modern proxy without installing any other programs.

gg gg (go-graft), was inspired by graftcp. go-graft is a pure golang implementation with more useful features. TODO: Use system DNS as the fallback. R

mzz 208 Sep 25, 2022
Standalone client for proxies of Windscribe browser extension

windscribe-proxy Standalone Windscribe proxy client. Younger brother of opera-proxy. Just run it and it'll start a plain HTTP proxy server forwarding

null 53 Sep 21, 2022
Send email and SMS broadcasts to your contacts. SMS are sent via your Android phone connected to your PC.

Polysender Send email and SMS broadcasts to your contacts. Polysender is a desktop application, so it does not require a complicated server setup. Ema

Charalampos Mitsakis 13 Aug 11, 2022