Init
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Sunshine Snake Glue
|
||||
(Yes it's a silly name)
|
||||
|
||||
## What's This?
|
||||
A tool that changes the resolution of a Sunshine host to an approximation of the client Moonlight resolution.
|
||||
|
||||
## What is Sunshine and Moonlight?
|
||||
[Sunshine](https://github.com/lizardbyte/sunshine)
|
||||
|
||||
[Moonlight](https://moonlight-stream.org/)
|
||||
|
||||
**TLDR**: Sunshine is an ultra low latency display streaming server, and Moonlight is a client for it. I get around 1ms~ when using it for my tablet as a second display.
|
||||
|
||||
## What Does This Support?
|
||||
Linux, specifically only GNOME's Wayland session at the moment ([and in a very hacky state...](https://git.coolbea.nz/oscarg/sunshine-snake-glue/src/branch/main/pkg/wayland_display_manager/gnome/__init__.py)).
|
||||
|
||||
### Support list:
|
||||
| Compositor | Support |
|
||||
| :--- | ---: |
|
||||
| GNOME | ⚠️ (Work in progress / Hacky) |
|
||||
| KDE Plasma | ❌ |
|
||||
| Sway | ❌ |
|
||||
| Hyprland | ❌ |
|
||||
|
||||
### X11?
|
||||
I don't think I'll ever extend this to support X11. Sunshine has options to interact with an X server, Wayland compositors tend to be much stricter, and this is just a middle layer to make that communication pleasant. Sunshine's documentation [even has instructions for X11](https://docs.lizardbyte.dev/projects/sunshine/master/md_docs_2app__examples.html#x11). Yes, it does mention GNOME's Wayland session, but it makes the bold assumption that the client has an exact match with a resolution/refresh rate the compositor offers.
|
||||
|
||||
## Dependencies
|
||||
A version of GNOME that supports `gdctl`. That's all! Presumably you have `python3`, right?
|
||||
|
||||
## Usage
|
||||
### Arguments
|
||||
- `set` changes the resolution of the given display adapter
|
||||
- `create` generates a script, filling placeholders documented below. (It aligns the application with the matched resolution, not Sunshine's internal resolution info)
|
||||
- `reset` sets the resolution of the provided adapter back to what it was before connecting.
|
||||
### Common Usage
|
||||
`[path]` represents the full path of sunshine snake glue for brevity.
|
||||
`[display adapter]` represents the adapter identifier that Sunshine internally uses.
|
||||
`[string with placeholders]` is self explanatory.
|
||||
#### Do Instructions
|
||||
Do: `python3 [path] set [display adapter]`
|
||||
|
||||
Do: `python3 [path] create [display adapter] [string with placeholders]`
|
||||
(This saves a file in `~/.sunshine-snake-glue` called `script.sh`, and sets its permissions accordingly.)
|
||||
|
||||
#### Undo Instructions
|
||||
Undo: `python3 [path] reset [display adapter]`
|
||||
|
||||
#### Possible Placeholders
|
||||
- `{res_x}` (The horizontal resolution.)
|
||||
- `{res_y}` (The vertical resolution.)
|
||||
- `{rate}` (The refresh rate.)
|
||||
|
||||
### Example Usage
|
||||
#### Do:
|
||||
```
|
||||
python3 /home/agrey/Development/sunshine-snake-glue set HDMI-2
|
||||
python3 /home/agrey/Development/sunshine-snake-glue create HDMI-2 "gamescope -f -W {res_x} -H {res_y} -r {rate} -e -- steam -bigpicture -steamos3"
|
||||
```
|
||||
#### Command:
|
||||
```
|
||||
/home/agrey/.sunshine-snake-glue/script.sh
|
||||
```
|
||||
#### Undo:
|
||||
```
|
||||
python3 /home/agrey/Development/sunshine-snake-glue reset HDMI-2
|
||||
```
|
||||
Reference in New Issue
Block a user