Giter Site home page Giter Site logo

pavlobu / deskreen Goto Github PK

View Code? Open in Web Editor NEW
15.4K 242.0 824.0 5.98 MB

Deskreen turns any device with a web browser into a secondary screen for your computer. ⭐️ Star to support our work!

Home Page: https://deskreen.com

License: GNU Affero General Public License v3.0

JavaScript 4.27% TypeScript 92.91% CSS 1.99% HTML 0.83%
second-screen wifi share-screen share-app-window electronjs electon-app electron typescript electron-react-boilerplate darkwire-io

deskreen's Issues

Allow changing a share after it is started

First of all great app! it's incredibly fast and low latency. 🔥

Maybe I'm missing something, but currently if I want to change what is shared in a connection, I tihkn I have to first disconnect it, then share link again because the old session is broken.

Would be very nice to be able to either:

  • Disconnect, then reuse the same session (so that the client can just try to continously reconnect instead of erroring out)
  • modify an existing connection

FYI: Linux on Xorg can create virtual desktops

I saw on the readme that you are looking for a way to get rid of the dummy plug. Well, if you're running any linux distro with Xorg X11 display server, then you can simply:

remoteHScreen=2560
remoteVScreen=1600
refreshRate=60
existingScreenName="DP1"

params=$(gtf ${remoteHScreen} ${remoteVScreen} ${refreshRate} | grep Modeline | sed 's/^\s\sModeline \".*\"\s*//g')

xrandr --newmode "extraScreen" ${params}
xrandr --addmode VIRTUAL1 extraScreen
xrandr --output VIRTUAL1 --left-of ${existingScreenName} --mode extraScreen

And to delete the screen:

xrandr --output VIRTUAL1 --off
xrandr --delmode VIRTUAL1 
xrandr --rmmode extraScreen

I believe this can be done on Wayland as well, but since I don't use wayland, I dont' really know...

Regarding the other 2 OSes:

  • OSX: Although similar to linux in many ways, OSX has long departed from X11 display server. I have investigated quite a lot on how to create a virtual monitor through the command line, but I could find anything for the display server used by Mac OS.
    I suspect that installing XQuartz might allow you to do this, but I'm not even sure if XQuartz is still working on newer version of OSX
  • Windows: I don't believe there's anything working out of the box. Did some research, couldn't find anything. Likely needs an ad-hoc solution.

Please add a system tray icon

Right now there doesn't seem to be system tray support, at least not under Linux. It would be really cool if Deskreen could be minimized to the tray.

Touch inputs

Is it possible to share touch inputs? since i mostly share screen to my phone it would be awesome if i could control from there too.

Can't select windows or screen on Windows 10

Prerequisites

Expected Behavior

Select windows or screen

Current Behavior

I can't select it, i click on it but nothing happens :(

Steps to Reproduce

image

  • Deskreen version or branch : 1.0.2
  • Operating System and version : Windows 10 LTSC

Allow sharing application on different desktops

All OS' have the option to have multiple "Desktops", it would be very useful to be able to share an application thats on a Desktop your not currently on. (for example on windows you can press the windows key + TAB to open more desktops and windows key + ctrl + arrow keys to change between desktops)

Failed to detect network devices.

On AppImage version.
It fails to recognize local network devices.
The app itself works ok, and clients reach it without problems. But the "Not WiFi and LAN Connection" dialog is stuck and preventing to allow an incoming connection.

This dialog should be easy to skip or override.

TODO

write bug report template

Blank page on iPad 1 and iPad 2

Device: iPad 2 (iOS 9.2.1), iPad 1 (iOS 5.1.1)
Browser: Safari

When accessing the client URL (http://xx.xx.xx.xx:3131/123456) it shows a blank page and can't connect.

Not sure if this is a quick fix or a major overhaul of the code, they're pretty old so don't feel too bad about it 😊
It would be so nice to use Deskreen in these bricks and bring them back to life!

Great work BTW

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

Using xrandr to create a virtual display (Linux)

Creating a virtual display with xrandr that can be broadcasted as an extra monitor is fairly easy on Linux. I think that this method should be implemented as a guide as it is a viable method for Linux users without the need of extra drivers or a dummy plug. To achieve this I did the following:

First, run the following command:

xrandr

Command output
    DisplayPort-0 disconnected (normal left inverted right x axis y axis)
            DisplayPort-1 disconnected (normal left inverted right x axis y axis)
            DisplayPort-2 disconnected (normal left inverted right x axis y axis)
    HDMI-A-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm
             1920x1080     60.00*+  71.91    50.00    59.94  
             1680x1050     59.88  
             1600x900      60.00  
             1280x1024     60.02  
             1440x900      59.90  
             1280x800      59.91  
             1280x720      60.00    50.00    59.94  
             1024x768      70.07    60.00  
             800x600       72.19    60.32    56.25  
             720x576       50.00  
             720x480       60.00    59.94  
             640x480       72.81    66.67    60.00    59.94  
             720x400       70.08  
    DVI-D-0 disconnected (normal left inverted right x axis y axis)
             1920x1080     60.00  
    DP-1-4 disconnected (normal left inverted right x axis y axis)
    HDMI-1-2 disconnected (normal left inverted right x axis y axis)
    DP-1-5 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 531mm x 299mm
             1920x1080     60.00*+
             1680x1050     59.88  
             1280x1024     75.02    60.02  
             1440x900      74.98    59.90  
             1280x960      60.00  
             1280x800      59.91  
             1152x864      75.00  
             1024x768      75.03    70.07    60.00  
             832x624       74.55  
             800x600       72.19    75.00    60.32    56.25  
             640x480       75.00    72.81    66.67    59.94  
             720x400       70.08  
    DP-1-6 disconnected (normal left inverted right x axis y axis)
    HDMI-1-3 disconnected (normal left inverted right x axis y axis)
            1920x1080 (0x5b) 148.500MHz +HSync +VSync
                                    h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.50KHz
                                    v: height 1080 start 1084 end 1089 total 1125           clock  60.00Hz
            1680x1050 (0x5f) 119.000MHz +HSync -VSync
                                    h: width  1680 start 1728 end 1760 total 1840 skew    0 clock  64.67KHz
                                    v: height 1050 start 1053 end 1059 total 1080           clock  59.88Hz
            1280x1024 (0x61) 108.000MHz +HSync +VSync
                                    h: width  1280 start 1328 end 1440 total 1688 skew    0 clock  63.98KHz
                                    v: height 1024 start 1025 end 1028 total 1066           clock  60.02Hz
            1440x900 (0x62) 88.750MHz +HSync -VSync
                                    h: width  1440 start 1488 end 1520 total 1600 skew    0 clock  55.47KHz
                                    v: height  900 start  903 end  909 total  926           clock  59.90Hz
            1280x800 (0x63) 71.000MHz +HSync -VSync
                                    h: width  1280 start 1328 end 1360 total 1440 skew    0 clock  49.31KHz
                                    v: height  800 start  803 end  809 total  823           clock  59.91Hz
            1024x768 (0x67) 75.000MHz -HSync -VSync
                                    h: width  1024 start 1048 end 1184 total 1328 skew    0 clock  56.48KHz
                                    v: height  768 start  771 end  777 total  806           clock  70.07Hz
            1024x768 (0x68) 65.000MHz -HSync -VSync
                                    h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
                                    v: height  768 start  771 end  777 total  806           clock  60.00Hz
            800x600 (0x69) 50.000MHz +HSync +VSync
                                    h: width   800 start  856 end  976 total 1040 skew    0 clock  48.08KHz
                                    v: height  600 start  637 end  643 total  666           clock  72.19Hz
            800x600 (0x6a) 40.000MHz +HSync +VSync
                                    h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
                                    v: height  600 start  601 end  605 total  628           clock  60.32Hz
            800x600 (0x6b) 36.000MHz +HSync +VSync
                                    h: width   800 start  824 end  896 total 1024 skew    0 clock  35.16KHz
                                    v: height  600 start  601 end  603 total  625           clock  56.25Hz
            640x480 (0x6f) 31.500MHz -HSync -VSync
                                    h: width   640 start  664 end  704 total  832 skew    0 clock  37.86KHz
                                    v: height  480 start  489 end  492 total  520           clock  72.81Hz
            640x480 (0x70) 30.240MHz -HSync -VSync
                                    h: width   640 start  704 end  768 total  864 skew    0 clock  35.00KHz
                                    v: height  480 start  483 end  486 total  525           clock  66.67Hz
            640x480 (0x72) 25.175MHz -HSync -VSync
                                    h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
                                    v: height  480 start  490 end  492 total  525           clock  59.94Hz
            720x400 (0x73) 28.320MHz -HSync +VSync
                                    h: width   720 start  738 end  846 total  900 skew    0 clock  31.47KHz
                                    v: height  400 start  412 end  414 total  449           clock  70.08Hz

Here I selected one of the disconnected outputs. For this example I am going to use DVI-D-0

If there is no output mode, one can be added with

xrandr --addmode DVI-D-0 1920x1080

# you may use the output you selected and the resolution you want

Next step is to identify the display you are going to use to position your new display. For example, I want to place my virtual display to the left of my primary display, which is HDMI-A-0, so I run the following command:

xrandr --output DVI-D-0 --mode 1920x1080 --left-of HDMI-A-0

# replace DVI-D-0 with the virtual output you selected
# and 1920x1080 with the resolution you chose on the previous command

# other options are --right-of, --above and --below

Finally, when running deskreen:

deskreen_working

The virtual display is available (Screen 2).

If you want to disconnect the display, just run:

xrandr --output DVI-D-0 --off

I am willing to do a complete guide and open a pull request if you think it is a good enough method.

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.

New Language

Can we add a BR Portuguese translation? I could work on it!

Raspberry Pi Support

As you mentioned on the website, you said you'd like Raspberry Pi support. I just used the compiling instructions to run deskreen on my Raspberry Pi, and it ran without a hitch. I was testing on my pi's browser window, but it did properly capture and display my pi's screen. I think if you directly built this for armv7l, then it would work perfectly.
Screenshot_2021-01-26_09-26-08

Virtual display on Android

Originally wrote it on HN, but this seems a better place to start discussion.

Android 10 introduces "Desktop mode", vendors like Samsung, LG or Huawei offers own solutions for additional separate screens. There are also commercial solutions for virtual screens on Android from company offering DisplayLink chips (they claim it is easy to modify android to support additional screens). Getting such a driver to mainline Android will be probably difficult, but there is an option to provide it for example for LineageOS or for rooted phones.

Ethernet + Wifi: Let us choose adapter

I have ethernet and wifi (sometimes both connected) on the MacOS - allow to choose which Adapter (actually its IP address) is written in program and in QR code.

Auto scan

Give a common ip address for all remote devices to visit and let the user select id, instead of entering it as part of url this way reconnection will be effortless even if server has created a new id.

Add a portable version for Windows

Actually, there isn't a Windows portable version, yet.

Please, add a portable version: I'd like to test the app features but without installing it.

Application Window sharing - limited list

The list seems to show only some of all active applications windows - like 12 or 16 (can't check right now). When I add a new browser window for instance, it does not show up .. even after reload button press.

Make it work even if the screen is closed

Here you post only concrete examples of enhancements with code and solutions that you have. Other BIG enhancements and general ideas of features you would like to see in Deskreen, you post here: #50

Make it work even if the screen is closed

Otherwise this issue will be closed.

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

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

Can only one device be connected?

Only one device can be connected, an error will be reported when the second device is connected.

You were not allowed to connect.
You may close this browser window then try to connect again.

image

Connection error after the second screen is turned off for a while

Prerequisites

Expected Behavior

I expect the connection stays even when the tablet's screen is off for a while.
The tablet's screen goes off automatically after 2 minutes to save battery.

If the tablet's screen stays off for a while (>5 minutes) when I turned the tablet screen on again it returns:
Deskreen Error Dialog
Something wrong happened :(

Closing the browser and opening it again did not work.
On Deskreen "Connected Devices" windows shows none devices connected.

If I get the tablet on again in a short period (<5 minutes) it resumes the connection, and updates the remote screen properly.

Current Behavior

The connection is lost after the tablet's screen get off for a while (more than 5 minutes or so)

Steps to Reproduce

Connect a tablet in Deskreen
Let it turn off automatically and let if off for more than 5 minutes or so.
Turn the tablet on again and you see there is no active connection to deskreen anymore.

Possible Solution (Not obligatory)

Context

Your Environment

I am using an Android Tablet Lenovo TB-8703X running Android 8.1.0 as a connected device and google chrome as primary browser.

Running Deskreen 1.0.2 on desktop:

Operating System: openSUSE Tumbleweed 20210114
KDE Plasma Version: 5.20.5
KDE Frameworks Version: 5.78.0
Qt Version: 5.15.2
Kernel Version: 5.10.7-1-default
OS Type: 64-bit
Processors: 8 × Intel® Core™ i7-3770 CPU @ 3.40GHz
Memory: 14.6 GiB of RAM
Graphics Processor: GeForce GTX 970/PCIe/SSE2

  • Node version :
  • Deskreen version or branch : 1.0.2
  • Operating System and version : see above
  • Link to your project :

Cli only version

Awesome app!

It would be great if a cli only version is available, it would be easier to programmatically start the sharing

Share Sound

Share screen and sound with the connected device.

Intended use case(s):

  • Stream a video from a PC to a (toaster) "Smart" TV, smartphone, tablet, …

Allow port-forwarding services to be used such as ngrok

Hello. Due to various reasons, I cannot connect my phone and my PC to the same wifi. By using services such as ngrok, I hoped I would be able to connect, and use the app. However, it gave a "something went wrong" message. Please add support for these services. Thank you!

Windows 10 virtual display driver

Hi,

I found a virtual monitor driver on this site
https://www.amyuni.com/forum/viewtopic.php?t=3030

Initial testing on Windows 10 64bit shows it works for me.
Could we use this driver for Windows 10?

Support for pivot screens

Some computer screens allows to flip them by 90 degrees. Would be nice to have option to flip image (and set virtual screen resolution accordingly)

Copyright notice

Hello. I really love this project, but it is based on an electron boilerplate which used the MIT License, and you can't change the MIT License. So I would switch to it (due to legal reasons).
(e.g. 21fa81a)

Teleprompter mode

Great tool. Would love to be able to use it with mirrored screen option. This would be very popular with the people who run teleprompters.

Polyfill WebRTC?

I was trying to run the secondary screen on my Xbox One browser, (Microsoft Edge 18). unSurprisingly it did not worked, so I tested in my computer with the same version, the console reports that WebRTC is not supported.

I found that WebRTC is only fully compatible with Edge 79+ (the Chromium based). But there is an implementation called Object RTC that matches the edge version. I was wondering if it's not possible to somehow adds a polyfill to allow the client to runs on old browsers. I found this lib that adds a common layer that enables the protocol on a large range of browsers.

Build / instruction issue

On Arch Linux, while trying to run the package from source, I get the following error when running 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
$ react-scripts build
/bin/sh: line 1: react-scripts: command not found
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.
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Looks like the relevant line is /bin/sh: line 1: react-scripts: command not found. It looks like react-scripts is a dependency in app/client/package.json.

This can be fixed with cd app/client; yarn install, then going back to project root and running yarn start.

I don't know yarn, and I'm not sure if it can handle running yarn install in app/client on its own; if so, it should be configured to do it. Otherwise, there should be instructions in the README specifying that it is necessary to run yarn install in app/client as well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.