mirror of
https://github.com/pavlobu/deskreen.git
synced 2025-05-28 05:10:09 -07:00
drivers guidelines, docs
This commit is contained in:
parent
849dc5cf72
commit
1cf44333c5
14
README.md
14
README.md
@ -18,6 +18,20 @@ For better security mechanism, end-to-end encryption is implemented, which is in
|
||||
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.
|
||||
|
||||
## 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 triks, 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 wihtout 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 challanges 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`.
|
||||
|
||||
Thank you in advance!
|
||||
|
||||
## Get Started for Developers
|
||||
|
||||
### Prerequisites
|
||||
|
57
drivers/README.md
Normal file
57
drivers/README.md
Normal file
@ -0,0 +1,57 @@
|
||||
## Deskreen `drivers` : getting rid of Display Dummy Plugs
|
||||
|
||||
We plan to add vritual display driver support for three most popular operating systems. The driver related codes can be places in following subdirectories `win`, `mac`, `linux`.
|
||||
It is a challanging technical task and we need to enable an entire community to solve it. If you know a solution and willing to contribute, you are highly welcome!
|
||||
|
||||
### Things that you need to keep in mind while making your virtual display driver solution for Deskreen:
|
||||
|
||||
1. The driver code can be in any language you are comfortable with, the most important that the API should provide a functionality to **add**, **set virtual display resolution**, **get virtual display resolution**, and **remove** the virtual display.
|
||||
2. Your driver code will be interfaced with Typescript/JavaScript after your successful submission. You **don't** have to write an interface for JS yourself. The community will come to help. It is going to be implemented by maintainer and other community members if there are any to voluneer. But if you want, you can participate in making a JS interface for it.
|
||||
3. After creating virtual display with you driver code API, it should display virtual screen in native **OS** _Displays_ settings, so that user will be able to arrange it as a normal display. (similar to how commercial solutions work)
|
||||
|
||||
### What Your Driver API Should Have:
|
||||
|
||||
#### Add Virtual Display
|
||||
|
||||
```C++
|
||||
driver.addVirtualDisplay(width: 640, height: 480) : // returns OS specific virtual display ID usually it's integer but can be other type as well.
|
||||
```
|
||||
|
||||
#### Set Virtual Display Resolution
|
||||
|
||||
```C++
|
||||
driver.setVirtualDisplayResolution(virtualDisplayID: 123543, width: 640, height: 480) : // returns void
|
||||
```
|
||||
|
||||
#### Get Virtual Display Resolution
|
||||
|
||||
```C++
|
||||
driver.getVirtualDisplayResolution(virtualDisplayID: 123543) : // returns object: { width: int, height: int }
|
||||
```
|
||||
|
||||
#### Remove Virtual Display -- disconnects virtual display from OS
|
||||
|
||||
```C++
|
||||
driver.removeVirtualDisplay(virtualDisplayID: 123543) : // return void
|
||||
```
|
||||
|
||||
#### Remove All Virtual Displays
|
||||
|
||||
```C++
|
||||
driver.removeAllVirtualDisplays() : // return void
|
||||
```
|
||||
|
||||
#### Get All Virtual Displays
|
||||
|
||||
```C++
|
||||
driver.getAllVirtualDisplays() : // returns array of virtual display objects created by driver: [{ displayID: int, width: int, height: int }, ...]
|
||||
```
|
||||
|
||||
### OS Patches: To Be Discussed to Make a Right Decision
|
||||
|
||||
After OS updates your driver code **may** break. This happens even in commertial second screen software, so we need to think on how to add patches for OS updates in that case.
|
||||
|
||||
#### Ideas on how patching done in other projects can be found here:
|
||||
|
||||
1. rdpwrap - a tool that allows to have multiple user sessions in windows: https://github.com/stascorp/rdpwrap
|
||||
they have patches for each minor windows update.
|
0
drivers/linux/git-dummy
Normal file
0
drivers/linux/git-dummy
Normal file
0
drivers/mac/git-dummy
Normal file
0
drivers/mac/git-dummy
Normal file
0
drivers/win/git-dummy
Normal file
0
drivers/win/git-dummy
Normal file
Loading…
x
Reference in New Issue
Block a user