docs: refactor and general cleanup (#1992)
This commit is contained in:
parent
88d46914ca
commit
b5fae464b6
31 changed files with 974 additions and 879 deletions
|
|
@ -36,7 +36,7 @@ System Requirements
|
||||||
| +------------------------------------------------------------+
|
| +------------------------------------------------------------+
|
||||||
| | Linux/Debian: 11 (bullseye) |
|
| | Linux/Debian: 11 (bullseye) |
|
||||||
| +------------------------------------------------------------+
|
| +------------------------------------------------------------+
|
||||||
| | Linux/Fedora: 36+ |
|
| | Linux/Fedora: 37+ |
|
||||||
| +------------------------------------------------------------+
|
| +------------------------------------------------------------+
|
||||||
| | Linux/Ubuntu: 20.04+ (focal) |
|
| | Linux/Ubuntu: 20.04+ (focal) |
|
||||||
+------------+------------------------------------------------------------+
|
+------------+------------------------------------------------------------+
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ location by modifying the configuration file.
|
||||||
|
|
||||||
To manually configure sunshine you may edit the `conf` file in a text editor. Use the examples as reference.
|
To manually configure sunshine you may edit the `conf` file in a text editor. Use the examples as reference.
|
||||||
|
|
||||||
.. Hint:: Some settings are not available within the web ui.
|
.. hint:: Some settings are not available within the web ui.
|
||||||
|
|
||||||
General
|
General
|
||||||
-------
|
-------
|
||||||
|
|
@ -130,7 +130,7 @@ gamepad
|
||||||
**Description**
|
**Description**
|
||||||
The type of gamepad to emulate on the host.
|
The type of gamepad to emulate on the host.
|
||||||
|
|
||||||
.. Caution:: Applies to Windows only.
|
.. caution:: Applies to Windows only.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -157,7 +157,7 @@ ds4_back_as_touchpad_click
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
**Description**
|
**Description**
|
||||||
.. Hint:: Only applies when gamepad is set to ds4 manually. Unused in other gamepad modes.
|
.. hint:: Only applies when gamepad is set to ds4 manually. Unused in other gamepad modes.
|
||||||
|
|
||||||
Allow Select/Back inputs to also trigger DS4 touchpad click. Useful for clients looking to emulate touchpad click
|
Allow Select/Back inputs to also trigger DS4 touchpad click. Useful for clients looking to emulate touchpad click
|
||||||
on Xinput devices.
|
on Xinput devices.
|
||||||
|
|
@ -174,7 +174,7 @@ motion_as_ds4
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
**Description**
|
**Description**
|
||||||
.. Hint:: Only applies when gamepad is set to auto.
|
.. hint:: Only applies when gamepad is set to auto.
|
||||||
|
|
||||||
If a client reports that a connected gamepad has motion sensor support, emulate it on the host as a DS4 controller.
|
If a client reports that a connected gamepad has motion sensor support, emulate it on the host as a DS4 controller.
|
||||||
|
|
||||||
|
|
@ -192,7 +192,7 @@ touchpad_as_ds4
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
**Description**
|
**Description**
|
||||||
.. Hint:: Only applies when gamepad is set to auto.
|
.. hint:: Only applies when gamepad is set to auto.
|
||||||
|
|
||||||
If a client reports that a connected gamepad has a touchpad, emulate it on the host as a DS4 controller.
|
If a client reports that a connected gamepad has a touchpad, emulate it on the host as a DS4 controller.
|
||||||
|
|
||||||
|
|
@ -212,7 +212,7 @@ back_button_timeout
|
||||||
**Description**
|
**Description**
|
||||||
If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated.
|
If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated.
|
||||||
|
|
||||||
.. Tip:: If back_button_timeout < 0, then the Home/Guide button will not be emulated.
|
.. tip:: If back_button_timeout < 0, then the Home/Guide button will not be emulated.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``-1``
|
``-1``
|
||||||
|
|
@ -242,7 +242,7 @@ key_repeat_frequency
|
||||||
**Description**
|
**Description**
|
||||||
How often keys repeat every second.
|
How often keys repeat every second.
|
||||||
|
|
||||||
.. Tip:: This configurable option supports decimals.
|
.. tip:: This configurable option supports decimals.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``24.9``
|
``24.9``
|
||||||
|
|
@ -263,7 +263,7 @@ always_send_scancodes
|
||||||
|
|
||||||
Disable if keys on the client are generating the wrong input on the host.
|
Disable if keys on the client are generating the wrong input on the host.
|
||||||
|
|
||||||
.. Caution:: Applies to Windows only.
|
.. caution:: Applies to Windows only.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``enabled``
|
``enabled``
|
||||||
|
|
@ -297,7 +297,7 @@ native_pen_touch
|
||||||
|
|
||||||
This can be useful to disable for older applications without native pen/touch support.
|
This can be useful to disable for older applications without native pen/touch support.
|
||||||
|
|
||||||
.. Caution:: Applies to Windows only.
|
.. caution:: Applies to Windows only.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``enabled``
|
``enabled``
|
||||||
|
|
@ -313,9 +313,9 @@ keybindings
|
||||||
**Description**
|
**Description**
|
||||||
Sometimes it may be useful to map keybindings. Wayland won't allow clients to capture the Win Key for example.
|
Sometimes it may be useful to map keybindings. Wayland won't allow clients to capture the Win Key for example.
|
||||||
|
|
||||||
.. Tip:: See `virtual key codes <https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes>`__
|
.. tip:: See `virtual key codes <https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes>`__
|
||||||
|
|
||||||
.. Hint:: keybindings needs to have a multiple of two elements.
|
.. hint:: keybindings needs to have a multiple of two elements.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
|
|
@ -358,7 +358,7 @@ adapter_name
|
||||||
**Description**
|
**Description**
|
||||||
Select the video card you want to stream.
|
Select the video card you want to stream.
|
||||||
|
|
||||||
.. Tip:: To find the name of the appropriate values follow these instructions.
|
.. tip:: To find the name of the appropriate values follow these instructions.
|
||||||
|
|
||||||
**Linux + VA-API**
|
**Linux + VA-API**
|
||||||
Unlike with `amdvce` and `nvenc`, it doesn't matter if video encoding is done on a different GPU.
|
Unlike with `amdvce` and `nvenc`, it doesn't matter if video encoding is done on a different GPU.
|
||||||
|
|
@ -374,13 +374,17 @@ adapter_name
|
||||||
To be supported by Sunshine, it needs to have at the very minimum:
|
To be supported by Sunshine, it needs to have at the very minimum:
|
||||||
``VAProfileH264High : VAEntrypointEncSlice``
|
``VAProfileH264High : VAEntrypointEncSlice``
|
||||||
|
|
||||||
.. Todo:: macOS
|
.. todo:: macOS
|
||||||
|
|
||||||
**Windows**
|
**Windows**
|
||||||
.. code-block:: batch
|
.. code-block:: batch
|
||||||
|
|
||||||
tools\dxgi-info.exe
|
tools\dxgi-info.exe
|
||||||
|
|
||||||
|
.. note:: For hybrid graphics systems, DXGI reports the outputs are connected to whichever graphics adapter
|
||||||
|
that the application is configured to use, so it's not a reliable indicator of how the display is
|
||||||
|
physically connected.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
Sunshine will select the default video card.
|
Sunshine will select the default video card.
|
||||||
|
|
||||||
|
|
@ -390,7 +394,7 @@ adapter_name
|
||||||
|
|
||||||
adapter_name = /dev/dri/renderD128
|
adapter_name = /dev/dri/renderD128
|
||||||
|
|
||||||
.. Todo:: macOS
|
.. todo:: macOS
|
||||||
|
|
||||||
**Windows**
|
**Windows**
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
|
|
@ -403,7 +407,7 @@ output_name
|
||||||
**Description**
|
**Description**
|
||||||
Select the display number you want to stream.
|
Select the display number you want to stream.
|
||||||
|
|
||||||
.. Tip:: To find the name of the appropriate values follow these instructions.
|
.. tip:: To find the name of the appropriate values follow these instructions.
|
||||||
|
|
||||||
**Linux**
|
**Linux**
|
||||||
During Sunshine startup, you should see the list of detected monitors:
|
During Sunshine startup, you should see the list of detected monitors:
|
||||||
|
|
@ -419,7 +423,7 @@ output_name
|
||||||
|
|
||||||
You need to use the value before the colon in the output, e.g. ``1``.
|
You need to use the value before the colon in the output, e.g. ``1``.
|
||||||
|
|
||||||
.. Todo:: macOS
|
.. todo:: macOS
|
||||||
|
|
||||||
**Windows**
|
**Windows**
|
||||||
.. code-block:: batch
|
.. code-block:: batch
|
||||||
|
|
@ -435,7 +439,7 @@ output_name
|
||||||
|
|
||||||
output_name = 0
|
output_name = 0
|
||||||
|
|
||||||
.. Todo:: macOS
|
.. todo:: macOS
|
||||||
|
|
||||||
**Windows**
|
**Windows**
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
|
|
@ -448,7 +452,7 @@ fps
|
||||||
**Description**
|
**Description**
|
||||||
The fps modes advertised by Sunshine.
|
The fps modes advertised by Sunshine.
|
||||||
|
|
||||||
.. Note:: Some versions of Moonlight, such as Moonlight-nx (Switch), rely on this list to ensure that the requested
|
.. note:: Some versions of Moonlight, such as Moonlight-nx (Switch), rely on this list to ensure that the requested
|
||||||
fps is supported.
|
fps is supported.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
|
|
@ -465,7 +469,7 @@ resolutions
|
||||||
**Description**
|
**Description**
|
||||||
The resolutions advertised by Sunshine.
|
The resolutions advertised by Sunshine.
|
||||||
|
|
||||||
.. Note:: Some versions of Moonlight, such as Moonlight-nx (Switch), rely on this list to ensure that the requested
|
.. note:: Some versions of Moonlight, such as Moonlight-nx (Switch), rely on this list to ensure that the requested
|
||||||
resolution is supported.
|
resolution is supported.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
|
|
@ -509,7 +513,7 @@ audio_sink
|
||||||
**Description**
|
**Description**
|
||||||
The name of the audio sink used for audio loopback.
|
The name of the audio sink used for audio loopback.
|
||||||
|
|
||||||
.. Tip:: To find the name of the audio sink follow these instructions.
|
.. tip:: To find the name of the audio sink follow these instructions.
|
||||||
|
|
||||||
**Linux + pulseaudio**
|
**Linux + pulseaudio**
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
@ -533,9 +537,9 @@ audio_sink
|
||||||
|
|
||||||
tools\audio-info.exe
|
tools\audio-info.exe
|
||||||
|
|
||||||
.. Tip:: If you have multiple audio devices with identical names, use the Device ID instead.
|
.. tip:: If you have multiple audio devices with identical names, use the Device ID instead.
|
||||||
|
|
||||||
.. Tip:: If you want to mute the host speakers, use `virtual_sink`_ instead.
|
.. tip:: If you want to mute the host speakers, use `virtual_sink`_ instead.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
Sunshine will select the default audio device.
|
Sunshine will select the default audio device.
|
||||||
|
|
@ -563,9 +567,9 @@ virtual_sink
|
||||||
The audio device that's virtual, like Steam Streaming Speakers. This allows Sunshine to stream audio, while muting
|
The audio device that's virtual, like Steam Streaming Speakers. This allows Sunshine to stream audio, while muting
|
||||||
the speakers.
|
the speakers.
|
||||||
|
|
||||||
.. Tip:: See `audio_sink`_!
|
.. tip:: See `audio_sink`_!
|
||||||
|
|
||||||
.. Tip:: These are some options for virtual sound devices.
|
.. tip:: These are some options for virtual sound devices.
|
||||||
|
|
||||||
- Stream Streaming Speakers (Linux, macOS, Windows)
|
- Stream Streaming Speakers (Linux, macOS, Windows)
|
||||||
|
|
||||||
|
|
@ -585,7 +589,7 @@ install_steam_audio_drivers
|
||||||
**Description**
|
**Description**
|
||||||
Installs the Steam Streaming Speakers driver (if Steam is installed) to support surround sound and muting host audio.
|
Installs the Steam Streaming Speakers driver (if Steam is installed) to support surround sound and muting host audio.
|
||||||
|
|
||||||
.. Tip:: This option is only supported on Windows.
|
.. tip:: This option is only supported on Windows.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``enabled``
|
``enabled``
|
||||||
|
|
@ -634,7 +638,7 @@ port
|
||||||
Mic (unused) 48002 UDP +13
|
Mic (unused) 48002 UDP +13
|
||||||
================ ============ ===========================
|
================ ============ ===========================
|
||||||
|
|
||||||
.. Attention:: Custom ports may not be supported by all Moonlight clients.
|
.. attention:: Custom ports may not be supported by all Moonlight clients.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``47989``
|
``47989``
|
||||||
|
|
@ -677,7 +681,7 @@ pkey
|
||||||
**Description**
|
**Description**
|
||||||
The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.
|
The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.
|
||||||
|
|
||||||
.. Warning:: Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.
|
.. warning:: Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``credentials/cakey.pem``
|
``credentials/cakey.pem``
|
||||||
|
|
@ -693,7 +697,7 @@ cert
|
||||||
**Description**
|
**Description**
|
||||||
The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.
|
The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.
|
||||||
|
|
||||||
.. Warning:: Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.
|
.. warning:: Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``credentials/cacert.pem``
|
``credentials/cacert.pem``
|
||||||
|
|
@ -786,7 +790,7 @@ channels
|
||||||
- Clients connected through WAN and LAN have different bitrate constraints.
|
- Clients connected through WAN and LAN have different bitrate constraints.
|
||||||
- Decoders may require different settings for color.
|
- Decoders may require different settings for color.
|
||||||
|
|
||||||
.. Warning:: CPU usage increases for each distinct video stream generated.
|
.. warning:: CPU usage increases for each distinct video stream generated.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``1``
|
``1``
|
||||||
|
|
@ -802,7 +806,7 @@ fec_percentage
|
||||||
**Description**
|
**Description**
|
||||||
Percentage of error correcting packets per data packet in each video frame.
|
Percentage of error correcting packets per data packet in each video frame.
|
||||||
|
|
||||||
.. Warning:: Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.
|
.. warning:: Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``20``
|
``20``
|
||||||
|
|
@ -821,7 +825,7 @@ qp
|
||||||
**Description**
|
**Description**
|
||||||
Quantization Parameter. Some devices don't support Constant Bit Rate. For those devices, QP is used instead.
|
Quantization Parameter. Some devices don't support Constant Bit Rate. For those devices, QP is used instead.
|
||||||
|
|
||||||
.. Warning:: Higher value means more compression, but less quality.
|
.. warning:: Higher value means more compression, but less quality.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``28``
|
``28``
|
||||||
|
|
@ -837,7 +841,7 @@ min_threads
|
||||||
**Description**
|
**Description**
|
||||||
Minimum number of threads used for software encoding.
|
Minimum number of threads used for software encoding.
|
||||||
|
|
||||||
.. Note:: Increasing the value slightly reduces encoding efficiency, but the tradeoff is usually worth it to gain
|
.. note:: Increasing the value slightly reduces encoding efficiency, but the tradeoff is usually worth it to gain
|
||||||
the use of more CPU cores for encoding. The ideal value is the lowest value that can reliably encode at your
|
the use of more CPU cores for encoding. The ideal value is the lowest value that can reliably encode at your
|
||||||
desired streaming settings on your hardware.
|
desired streaming settings on your hardware.
|
||||||
|
|
||||||
|
|
@ -855,7 +859,7 @@ hevc_mode
|
||||||
**Description**
|
**Description**
|
||||||
Allows the client to request HEVC Main or HEVC Main10 video streams.
|
Allows the client to request HEVC Main or HEVC Main10 video streams.
|
||||||
|
|
||||||
.. Warning:: HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software
|
.. warning:: HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software
|
||||||
encoding.
|
encoding.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
@ -886,7 +890,7 @@ av1_mode
|
||||||
**Description**
|
**Description**
|
||||||
Allows the client to request AV1 Main 8-bit or 10-bit video streams.
|
Allows the client to request AV1 Main 8-bit or 10-bit video streams.
|
||||||
|
|
||||||
.. Warning:: AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software
|
.. warning:: AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software
|
||||||
encoding.
|
encoding.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
@ -917,7 +921,7 @@ capture
|
||||||
**Description**
|
**Description**
|
||||||
Force specific screen capture method.
|
Force specific screen capture method.
|
||||||
|
|
||||||
.. Caution:: Applies to Linux only.
|
.. caution:: Applies to Linux only.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -933,7 +937,7 @@ capture
|
||||||
or `nvlax <https://github.com/illnyang/nvlax/>`__.
|
or `nvlax <https://github.com/illnyang/nvlax/>`__.
|
||||||
wlr Capture for wlroots based Wayland compositors via DMA-BUF.
|
wlr Capture for wlroots based Wayland compositors via DMA-BUF.
|
||||||
kms DRM/KMS screen capture from the kernel. This requires that sunshine has cap_sys_admin capability.
|
kms DRM/KMS screen capture from the kernel. This requires that sunshine has cap_sys_admin capability.
|
||||||
See :ref:`Linux Setup <about/usage:linux>`.
|
See :ref:`Linux Setup <about/setup:install>`.
|
||||||
x11 Uses XCB. This is the slowest and most CPU intensive so should be avoided if possible.
|
x11 Uses XCB. This is the slowest and most CPU intensive so should be avoided if possible.
|
||||||
========= ===========
|
========= ===========
|
||||||
|
|
||||||
|
|
@ -979,9 +983,9 @@ sw_preset
|
||||||
**Description**
|
**Description**
|
||||||
The encoder preset to use.
|
The encoder preset to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using software `encoder`_.
|
.. note:: This option only applies when using software `encoder`_.
|
||||||
|
|
||||||
.. Note:: From `FFmpeg <https://trac.ffmpeg.org/wiki/Encode/H.264#preset>`__.
|
.. note:: From `FFmpeg <https://trac.ffmpeg.org/wiki/Encode/H.264#preset>`__.
|
||||||
|
|
||||||
A preset is a collection of options that will provide a certain encoding speed to compression ratio. A slower
|
A preset is a collection of options that will provide a certain encoding speed to compression ratio. A slower
|
||||||
preset will provide better compression (compression is quality per filesize). This means that, for example, if
|
preset will provide better compression (compression is quality per filesize). This means that, for example, if
|
||||||
|
|
@ -1023,9 +1027,9 @@ sw_tune
|
||||||
**Description**
|
**Description**
|
||||||
The tuning preset to use.
|
The tuning preset to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using software `encoder`_.
|
.. note:: This option only applies when using software `encoder`_.
|
||||||
|
|
||||||
.. Note:: From `FFmpeg <https://trac.ffmpeg.org/wiki/Encode/H.264#preset>`__.
|
.. note:: From `FFmpeg <https://trac.ffmpeg.org/wiki/Encode/H.264#preset>`__.
|
||||||
|
|
||||||
You can optionally use -tune to change settings based upon the specifics of your input.
|
You can optionally use -tune to change settings based upon the specifics of your input.
|
||||||
|
|
||||||
|
|
@ -1061,7 +1065,7 @@ nvenc_preset
|
||||||
Higher numbers improve compression (quality at given bitrate) at the cost of increased encoding latency.
|
Higher numbers improve compression (quality at given bitrate) at the cost of increased encoding latency.
|
||||||
Recommended to change only when limited by network or decoder, otherwise similar effect can be accomplished by increasing bitrate.
|
Recommended to change only when limited by network or decoder, otherwise similar effect can be accomplished by increasing bitrate.
|
||||||
|
|
||||||
.. Note:: This option only applies when using NVENC `encoder`_.
|
.. note:: This option only applies when using NVENC `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1096,7 +1100,7 @@ nvenc_twopass
|
||||||
This allows to detect more motion vectors, better distribute bitrate across the frame and more strictly adhere to bitrate limits.
|
This allows to detect more motion vectors, better distribute bitrate across the frame and more strictly adhere to bitrate limits.
|
||||||
Disabling it is not recommended since this can lead to occasional bitrate overshoot and subsequent packet loss.
|
Disabling it is not recommended since this can lead to occasional bitrate overshoot and subsequent packet loss.
|
||||||
|
|
||||||
.. Note:: This option only applies when using NVENC `encoder`_.
|
.. note:: This option only applies when using NVENC `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1127,9 +1131,9 @@ nvenc_realtime_hags
|
||||||
Currently NVIDIA drivers may freeze in encoder when HAGS is enabled, realtime priority is used and VRAM utilization is close to maximum.
|
Currently NVIDIA drivers may freeze in encoder when HAGS is enabled, realtime priority is used and VRAM utilization is close to maximum.
|
||||||
Disabling this option lowers the priority to high, sidestepping the freeze at the cost of reduced capture performance when the GPU is heavily loaded.
|
Disabling this option lowers the priority to high, sidestepping the freeze at the cost of reduced capture performance when the GPU is heavily loaded.
|
||||||
|
|
||||||
.. Note:: This option only applies when using NVENC `encoder`_.
|
.. note:: This option only applies when using NVENC `encoder`_.
|
||||||
|
|
||||||
.. Caution:: Applies to Windows only.
|
.. caution:: Applies to Windows only.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1158,7 +1162,7 @@ nvenc_h264_cavlc
|
||||||
Prefer CAVLC entropy coding over CABAC in H.264 when using NVENC.
|
Prefer CAVLC entropy coding over CABAC in H.264 when using NVENC.
|
||||||
CAVLC is outdated and needs around 10% more bitrate for same quality, but provides slightly faster decoding when using software decoder.
|
CAVLC is outdated and needs around 10% more bitrate for same quality, but provides slightly faster decoding when using software decoder.
|
||||||
|
|
||||||
.. Note:: This option only applies when using H.264 format with NVENC `encoder`_.
|
.. note:: This option only applies when using H.264 format with NVENC `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1186,7 +1190,7 @@ qsv_preset
|
||||||
**Description**
|
**Description**
|
||||||
The encoder preset to use.
|
The encoder preset to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using quicksync `encoder`_.
|
.. note:: This option only applies when using quicksync `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1219,7 +1223,7 @@ qsv_coder
|
||||||
**Description**
|
**Description**
|
||||||
The entropy encoding to use.
|
The entropy encoding to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using H264 with quicksync `encoder`_.
|
.. note:: This option only applies when using H264 with quicksync `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1248,7 +1252,7 @@ amd_quality
|
||||||
**Description**
|
**Description**
|
||||||
The encoder preset to use.
|
The encoder preset to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using amdvce `encoder`_.
|
.. note:: This option only applies when using amdvce `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1277,7 +1281,7 @@ amd_rc
|
||||||
**Description**
|
**Description**
|
||||||
The encoder rate control.
|
The encoder rate control.
|
||||||
|
|
||||||
.. Note:: This option only applies when using amdvce `encoder`_.
|
.. note:: This option only applies when using amdvce `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1307,7 +1311,7 @@ amd_usage
|
||||||
**Description**
|
**Description**
|
||||||
The encoder usage profile, used to balance latency with encoding quality.
|
The encoder usage profile, used to balance latency with encoding quality.
|
||||||
|
|
||||||
.. Note:: This option only applies when using amdvce `encoder`_.
|
.. note:: This option only applies when using amdvce `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1337,7 +1341,7 @@ amd_preanalysis
|
||||||
**Description**
|
**Description**
|
||||||
Preanalysis can increase encoding quality at the cost of latency.
|
Preanalysis can increase encoding quality at the cost of latency.
|
||||||
|
|
||||||
.. Note:: This option only applies when using amdvce `encoder`_.
|
.. note:: This option only applies when using amdvce `encoder`_.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``disabled``
|
``disabled``
|
||||||
|
|
@ -1353,7 +1357,7 @@ amd_vbaq
|
||||||
**Description**
|
**Description**
|
||||||
Variance Based Adaptive Quantization (VBAQ) can increase subjective visual quality.
|
Variance Based Adaptive Quantization (VBAQ) can increase subjective visual quality.
|
||||||
|
|
||||||
.. Note:: This option only applies when using amdvce `encoder`_.
|
.. note:: This option only applies when using amdvce `encoder`_.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``enabled``
|
``enabled``
|
||||||
|
|
@ -1369,7 +1373,7 @@ amd_coder
|
||||||
**Description**
|
**Description**
|
||||||
The entropy encoding to use.
|
The entropy encoding to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using H264 with amdvce `encoder`_.
|
.. note:: This option only applies when using H264 with amdvce `encoder`_.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1398,7 +1402,7 @@ vt_software
|
||||||
**Description**
|
**Description**
|
||||||
Force Video Toolbox to use software encoding.
|
Force Video Toolbox to use software encoding.
|
||||||
|
|
||||||
.. Note:: This option only applies when using macOS.
|
.. note:: This option only applies when using macOS.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
@ -1428,9 +1432,9 @@ vt_realtime
|
||||||
**Description**
|
**Description**
|
||||||
Realtime encoding.
|
Realtime encoding.
|
||||||
|
|
||||||
.. Note:: This option only applies when using macOS.
|
.. note:: This option only applies when using macOS.
|
||||||
|
|
||||||
.. Warning:: Disabling realtime encoding might result in a delayed frame encoding or frame drop.
|
.. warning:: Disabling realtime encoding might result in a delayed frame encoding or frame drop.
|
||||||
|
|
||||||
**Default**
|
**Default**
|
||||||
``enabled``
|
``enabled``
|
||||||
|
|
@ -1446,7 +1450,7 @@ vt_coder
|
||||||
**Description**
|
**Description**
|
||||||
The entropy encoding to use.
|
The entropy encoding to use.
|
||||||
|
|
||||||
.. Note:: This option only applies when using macOS.
|
.. note:: This option only applies when using macOS.
|
||||||
|
|
||||||
**Choices**
|
**Choices**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ App Examples
|
||||||
Since not all applications behave the same, we decided to create some examples to help you get started adding games
|
Since not all applications behave the same, we decided to create some examples to help you get started adding games
|
||||||
and applications to Sunshine.
|
and applications to Sunshine.
|
||||||
|
|
||||||
.. Attention:: Throughout these examples, any fields not shown are left blank. You can enhance your experience by
|
.. attention:: Throughout these examples, any fields not shown are left blank. You can enhance your experience by
|
||||||
adding an image or a log file (via the ``Output`` field).
|
adding an image or a log file (via the ``Output`` field).
|
||||||
|
|
||||||
Common Examples
|
Common Examples
|
||||||
|
|
@ -23,267 +23,330 @@ Desktop
|
||||||
Steam Big Picture
|
Steam Big Picture
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. Note:: Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
.. note:: Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
||||||
process is killed. Since the original process ends it will not work as a regular command.
|
process is killed. Since the original process ends it will not work as a regular command.
|
||||||
|
|
||||||
+----------------------+------------------------------------------+----------------------------------+-----------------------------------+
|
.. tab:: Linux
|
||||||
| **Field** | **Linux** | **macOS** | **Windows** |
|
|
||||||
+----------------------+------------------------------------------+----------------------------------+-----------------------------------+
|
+----------------------+------------------------------------------+
|
||||||
| Application Name | ``Steam Big Picture`` |
|
| Application Name | ``Steam Big Picture`` |
|
||||||
+----------------------+------------------------------------------+----------------------------------+-----------------------------------+
|
+----------------------+------------------------------------------+
|
||||||
| Detached Commands | ``setsid steam steam://open/bigpicture`` | ``open steam://open/bigpicture`` | ``steam steam://open/bigpicture`` |
|
| Detached Commands | ``setsid steam steam://open/bigpicture`` |
|
||||||
+----------------------+------------------------------------------+----------------------------------+-----------------------------------+
|
+----------------------+------------------------------------------+
|
||||||
| Image | ``steam.png`` |
|
| Image | ``steam.png`` |
|
||||||
+----------------------+------------------------------------------+----------------------------------+-----------------------------------+
|
+----------------------+------------------------------------------+
|
||||||
|
|
||||||
|
.. tab:: macOS
|
||||||
|
|
||||||
|
+----------------------+----------------------------------+
|
||||||
|
| Application Name | ``Steam Big Picture`` |
|
||||||
|
+----------------------+----------------------------------+
|
||||||
|
| Detached Commands | ``open steam://open/bigpicture`` |
|
||||||
|
+----------------------+----------------------------------+
|
||||||
|
| Image | ``steam.png`` |
|
||||||
|
+----------------------+----------------------------------+
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
| Application Name | ``Steam Big Picture`` |
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
| Detached Commands | ``steam steam://open/bigpicture`` |
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
| Image | ``steam.png`` |
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
|
||||||
Epic Game Store game
|
Epic Game Store game
|
||||||
^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. Note:: Using URI method will be the most consistent between various games, but does not allow a game to be launched
|
.. note:: Using URI method will be the most consistent between various games, but does not allow a game to be launched
|
||||||
using the "Command" and therefore the stream will not end when the game ends.
|
using the "Command" and therefore the stream will not end when the game ends.
|
||||||
|
|
||||||
URI (Epic)
|
URI (Epic)
|
||||||
""""""""""
|
""""""""""
|
||||||
|
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
.. tab:: Windows
|
||||||
| **Field** | **Windows** |
|
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
| Application Name | ``Surviving Mars`` |
|
| Application Name | ``Surviving Mars`` |
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
| Detached Commands | ``cmd /C "start com.epicgames.launcher://apps/d759128018124dcabb1fbee9bb28e178%3A20729b9176c241f0b617c5723e70ec2d%3AOvenbird?action=launch&silent=true"`` |
|
| Detached Commands | ``cmd /C "start com.epicgames.launcher://apps/d759128018124dcabb1fbee9bb28e178%3A20729b9176c241f0b617c5723e70ec2d%3AOvenbird?action=launch&silent=true"`` |
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
Binary (Epic w/ working directory)
|
Binary (Epic w/ working directory)
|
||||||
""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
+----------------------+-----------------------------------------------+
|
.. tab:: Windows
|
||||||
| **Field** | **Windows** |
|
|
||||||
+----------------------+-----------------------------------------------+
|
+----------------------+-----------------------------------------------+
|
||||||
| Application Name | ``Surviving Mars`` |
|
| Application Name | ``Surviving Mars`` |
|
||||||
+----------------------+-----------------------------------------------+
|
+----------------------+-----------------------------------------------+
|
||||||
| Command | ``cmd /c "MarsEpic.exe"`` |
|
| Command | ``cmd /c "MarsEpic.exe"`` |
|
||||||
+----------------------+-----------------------------------------------+
|
+----------------------+-----------------------------------------------+
|
||||||
| Working Directory | ``C:\Program Files\Epic Games\SurvivingMars`` |
|
| Working Directory | ``C:\Program Files\Epic Games\SurvivingMars`` |
|
||||||
+----------------------+-----------------------------------------------+
|
+----------------------+-----------------------------------------------+
|
||||||
|
|
||||||
Binary (Epic w/o working directory)
|
Binary (Epic w/o working directory)
|
||||||
"""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
+----------------------+--------------------------------------------------------------+
|
.. tab:: Windows
|
||||||
| **Field** | **Windows** |
|
|
||||||
+----------------------+--------------------------------------------------------------+
|
|
||||||
| Application Name | ``Surviving Mars`` |
|
|
||||||
+----------------------+--------------------------------------------------------------+
|
|
||||||
| Command | ``"C:\Program Files\Epic Games\SurvivingMars\MarsEpic.exe"`` |
|
|
||||||
+----------------------+--------------------------------------------------------------+
|
|
||||||
|
|
||||||
|
+----------------------+--------------------------------------------------------------+
|
||||||
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+--------------------------------------------------------------+
|
||||||
|
| Command | ``"C:\Program Files\Epic Games\SurvivingMars\MarsEpic.exe"`` |
|
||||||
|
+----------------------+--------------------------------------------------------------+
|
||||||
|
|
||||||
Steam game
|
Steam game
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
||||||
.. Note:: Using URI method will be the most consistent between various games, but does not allow a game to be launched
|
.. note:: Using URI method will be the most consistent between various games, but does not allow a game to be launched
|
||||||
using the "Command" and therefore the stream will not end when the game ends.
|
using the "Command" and therefore the stream will not end when the game ends.
|
||||||
|
|
||||||
URI (Steam)
|
URI (Steam)
|
||||||
"""""""""""
|
"""""""""""
|
||||||
|
|
||||||
+----------------------+-------------------------------------------+-----------------------------------+---------------------------------------------+
|
.. tab:: Linux
|
||||||
| **Field** | **Linux** | **macOS** | **Windows** |
|
|
||||||
+----------------------+-------------------------------------------+-----------------------------------+---------------------------------------------+
|
+----------------------+-------------------------------------------+
|
||||||
| Application Name | ``Surviving Mars`` |
|
| Application Name | ``Surviving Mars`` |
|
||||||
+----------------------+-------------------------------------------+-----------------------------------+---------------------------------------------+
|
+----------------------+-------------------------------------------+
|
||||||
| Detached Commands | ``setsid steam steam://rungameid/464920`` | ``open steam://rungameid/464920`` | ``cmd /C "start steam://rungameid/464920"`` |
|
| Detached Commands | ``setsid steam steam://rungameid/464920`` |
|
||||||
+----------------------+-------------------------------------------+-----------------------------------+---------------------------------------------+
|
+----------------------+-------------------------------------------+
|
||||||
|
|
||||||
|
.. tab:: macOS
|
||||||
|
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
| Detached Commands | ``open steam://rungameid/464920`` |
|
||||||
|
+----------------------+-----------------------------------+
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
+----------------------+---------------------------------------------+
|
||||||
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+---------------------------------------------+
|
||||||
|
| Detached Commands | ``cmd /C "start steam://rungameid/464920"`` |
|
||||||
|
+----------------------+---------------------------------------------+
|
||||||
|
|
||||||
Binary (Steam w/ working directory)
|
Binary (Steam w/ working directory)
|
||||||
"""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
+----------------------+-------------------------+-------------------------+------------------------------------------------------------------+
|
.. tab:: Linux
|
||||||
| **Field** | **Linux** | **macOS** | **Windows** |
|
|
||||||
+----------------------+-------------------------+-------------------------+------------------------------------------------------------------+
|
+----------------------+---------------------------------------------------+
|
||||||
| Application Name | ``Surviving Mars`` |
|
| Application Name | ``Surviving Mars`` |
|
||||||
+----------------------+-------------------------+-------------------------+------------------------------------------------------------------+
|
+----------------------+---------------------------------------------------+
|
||||||
| Command | ``MarsSteam`` | ``cmd /c "MarsSteam.exe"`` |
|
| Command | ``MarsSteam`` |
|
||||||
+----------------------+-------------------------+-------------------------+------------------------------------------------------------------+
|
+----------------------+---------------------------------------------------+
|
||||||
| Working Directory | ``~/.steam/steam/SteamApps/common/Survivng Mars`` | ``C:\Program Files (x86)\Steam\steamapps\common\Surviving Mars`` |
|
| Working Directory | ``~/.steam/steam/SteamApps/common/Survivng Mars`` |
|
||||||
+----------------------+-------------------------+-------------------------+------------------------------------------------------------------+
|
+----------------------+---------------------------------------------------+
|
||||||
|
|
||||||
|
.. tab:: macOS
|
||||||
|
|
||||||
|
+----------------------+---------------------------------------------------+
|
||||||
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+---------------------------------------------------+
|
||||||
|
| Command | ``MarsSteam`` |
|
||||||
|
+----------------------+---------------------------------------------------+
|
||||||
|
| Working Directory | ``~/.steam/steam/SteamApps/common/Survivng Mars`` |
|
||||||
|
+----------------------+---------------------------------------------------+
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
+----------------------+------------------------------------------------------------------+
|
||||||
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+------------------------------------------------------------------+
|
||||||
|
| Command | ``MarsSteam.exe`` |
|
||||||
|
+----------------------+------------------------------------------------------------------+
|
||||||
|
| Working Directory | ``C:\Program Files (x86)\Steam\steamapps\common\Surviving Mars`` |
|
||||||
|
+----------------------+------------------------------------------------------------------+
|
||||||
|
|
||||||
Binary (Steam w/o working directory)
|
Binary (Steam w/o working directory)
|
||||||
""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
+----------------------+------------------------------+------------------------------+----------------------------------------------------------------------------------+
|
.. tab:: Linux
|
||||||
| **Field** | **Linux** | **macOS** | **Windows** |
|
|
||||||
+----------------------+------------------------------+------------------------------+----------------------------------------------------------------------------------+
|
|
||||||
| Application Name | ``Surviving Mars`` |
|
|
||||||
+----------------------+------------------------------+------------------------------+----------------------------------------------------------------------------------+
|
|
||||||
| Command | ``~/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam`` | ``"C:\Program Files (x86)\Steam\steamapps\common\Surviving Mars\MarsSteam.exe"`` |
|
|
||||||
+----------------------+------------------------------+------------------------------+----------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Linux
|
+----------------------+-------------------------------------------------------------+
|
||||||
-----
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+-------------------------------------------------------------+
|
||||||
|
| Command | ``~/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam`` |
|
||||||
|
+----------------------+-------------------------------------------------------------+
|
||||||
|
|
||||||
Changing Resolution and Refresh Rate (Linux - X11)
|
.. tab:: macOS
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-------------------------------------------------------------+
|
||||||
| **Field** | **Value** |
|
| Application Name | ``Surviving Mars`` |
|
||||||
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-------------------------------------------------------------+
|
||||||
| Command Preparations | Do: ``sh -c "xrandr --output HDMI-1 --mode \"${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}\" --rate ${SUNSHINE_CLIENT_FPS}"`` |
|
| Command | ``~/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam`` |
|
||||||
| +---------------------------------------------------------------------------------------------------------------------------------------+
|
+----------------------+-------------------------------------------------------------+
|
||||||
| | Undo: ``xrandr --output HDMI-1 --mode 3840x2160 --rate 120`` |
|
|
||||||
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
.. hint::
|
.. tab:: Windows
|
||||||
The above only works if the xrandr mode already exists. You will need to create new modes to stream to macOS and iOS devices, since they use non standard resolutions.
|
|
||||||
|
|
||||||
You can update the ``Do`` command to this:
|
+----------------------+----------------------------------------------------------------------------------+
|
||||||
.. code-block:: bash
|
| Application Name | ``Surviving Mars`` |
|
||||||
|
+----------------------+----------------------------------------------------------------------------------+
|
||||||
|
| Command | ``"C:\Program Files (x86)\Steam\steamapps\common\Surviving Mars\MarsSteam.exe"`` |
|
||||||
|
+----------------------+----------------------------------------------------------------------------------+
|
||||||
|
|
||||||
bash -c "${HOME}/scripts/set-custom-res.sh \"${SUNSHINE_CLIENT_WIDTH}\" \"${SUNSHINE_CLIENT_HEIGHT}\" \"${SUNSHINE_CLIENT_FPS}\""
|
Prep Commands
|
||||||
|
-------------
|
||||||
|
|
||||||
The ``set-custom-res.sh`` will have this content:
|
Changing Resolution and Refresh Rate
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Get params and set any defaults
|
|
||||||
width=${1:-1920}
|
|
||||||
height=${2:-1080}
|
|
||||||
refresh_rate=${3:-60}
|
|
||||||
|
|
||||||
# You may need to adjust the scaling differently so the UI/text isn't too small / big
|
|
||||||
scale=${4:-0.55}
|
|
||||||
|
|
||||||
# Get the name of the active display
|
|
||||||
display_output=$(xrandr | grep " connected" | awk '{ print $1 }')
|
|
||||||
|
|
||||||
# Get the modeline info from the 2nd row in the cvt output
|
|
||||||
modeline=$(cvt ${width} ${height} ${refresh_rate} | awk 'FNR == 2')
|
|
||||||
xrandr_mode_str=${modeline//Modeline \"*\" /}
|
|
||||||
mode_alias="${width}x${height}"
|
|
||||||
|
|
||||||
echo "xrandr setting new mode ${mode_alias} ${xrandr_mode_str}"
|
|
||||||
xrandr --newmode ${mode_alias} ${xrandr_mode_str}
|
|
||||||
xrandr --addmode ${display_output} ${mode_alias}
|
|
||||||
|
|
||||||
# Reset scaling
|
|
||||||
xrandr --output ${display_output} --scale 1
|
|
||||||
|
|
||||||
# Apply new xrandr mode
|
|
||||||
xrandr --output ${display_output} --primary --mode ${mode_alias} --pos 0x0 --rotate normal --scale ${scale}
|
|
||||||
|
|
||||||
# Optional reset your wallpaper to fit to new resolution
|
|
||||||
# xwallpaper --zoom /path/to/wallpaper.png
|
|
||||||
|
|
||||||
Changing Resolution and Refresh Rate (Linux - Wayland)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Field** | **Value** |
|
|
||||||
+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| Command Preparations | Do: ``sh -c "wlr-xrandr --output HDMI-1 --mode \"${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}Hz\""`` |
|
|
||||||
| +-------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| | Undo: ``wlr-xrandr --output HDMI-1 --mode 3840x2160@120Hz`` |
|
|
||||||
+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Changing Resolution and Refresh Rate (Linux - KDE Plasma - Wayland and X11)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Field** | **Value** |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| Command Preparations | Do: ``sh -c "kscreen-doctor output.HDMI-A-1.mode.${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}"`` |
|
|
||||||
| +----------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| | Undo: ``kscreen-doctor output.HDMI-A-1.mode.3840x2160@120`` |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Changing Resolution (Linux - NVIDIA)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------+
|
.. tab:: Linux
|
||||||
| **Field** | **Value** |
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------+
|
|
||||||
| Command Preparations | Do: ``sh -c "${HOME}/scripts/set-custom-res.sh ${SUNSHINE_CLIENT_WIDTH} ${SUNSHINE_CLIENT_HEIGHT}"`` |
|
|
||||||
| +------------------------------------------------------------------------------------------------------+
|
|
||||||
| | Undo: ``sh -c "${HOME}/scripts/set-custom-res.sh 3840 2160"`` |
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
The ``set-custom-res.sh`` will have this content:
|
.. tab:: X11
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
#!/bin/bash
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Command Preparations | Do: ``sh -c "xrandr --output HDMI-1 --mode \"${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}\" --rate ${SUNSHINE_CLIENT_FPS}"`` |
|
||||||
|
| +------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| | Undo: ``xrandr --output HDMI-1 --mode 3840x2160 --rate 120`` |
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
# Get params and set any defaults
|
.. hint::
|
||||||
width=${1:-1920}
|
The above only works if the xrandr mode already exists. You will need to create new modes to stream to macOS and iOS devices, since they use non standard resolutions.
|
||||||
height=${2:-1080}
|
|
||||||
output=${3:-HDMI-1}
|
|
||||||
nvidia-settings -a CurrentMetaMode="${output}: nvidia-auto-select { ViewPortIn=${width}x${height}, ViewPortOut=${width}x${height}+0+0 }"
|
|
||||||
|
|
||||||
Flatpak
|
You can update the ``Do`` command to this:
|
||||||
^^^^^^^
|
.. code-block:: bash
|
||||||
|
|
||||||
.. Attention:: Because Flatpak packages run in a sandboxed environment and do not normally have access to the host,
|
bash -c "${HOME}/scripts/set-custom-res.sh \"${SUNSHINE_CLIENT_WIDTH}\" \"${SUNSHINE_CLIENT_HEIGHT}\" \"${SUNSHINE_CLIENT_FPS}\""
|
||||||
the Flatpak of Sunshine requires commands to be prefixed with ``flatpak-spawn --host``.
|
|
||||||
|
|
||||||
macOS
|
The ``set-custom-res.sh`` will have this content:
|
||||||
-----
|
.. code-block:: bash
|
||||||
|
|
||||||
Changing Resolution and Refresh Rate (macOS)
|
#!/bin/bash
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
.. Note:: This example uses the `displayplacer` tool to change the resolution.
|
# Get params and set any defaults
|
||||||
This tool can be installed following instructions in their
|
width=${1:-1920}
|
||||||
`GitHub repository <https://github.com/jakehilborn/displayplacer>`__.
|
height=${2:-1080}
|
||||||
|
refresh_rate=${3:-60}
|
||||||
|
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------+
|
# You may need to adjust the scaling differently so the UI/text isn't too small / big
|
||||||
| **Field** | **Value** |
|
scale=${4:-0.55}
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------+
|
|
||||||
| Command Preparations | Do: ``displayplacer "id:<screenId> res:1920x1080 hz:60 scaling:on origin:(0,0) degree:0"`` |
|
|
||||||
| +-----------------------------------------------------------------------------------------------+
|
|
||||||
| | Undo: ``displayplacer "id:<screenId> res:3840x2160 hz:120 scaling:on origin:(0,0) degree:0"`` |
|
|
||||||
+----------------------+-----------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Windows
|
# Get the name of the active display
|
||||||
-------
|
display_output=$(xrandr | grep " connected" | awk '{ print $1 }')
|
||||||
|
|
||||||
Changing Resolution and Refresh Rate (Windows)
|
# Get the modeline info from the 2nd row in the cvt output
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
modeline=$(cvt ${width} ${height} ${refresh_rate} | awk 'FNR == 2')
|
||||||
|
xrandr_mode_str=${modeline//Modeline \"*\" /}
|
||||||
|
mode_alias="${width}x${height}"
|
||||||
|
|
||||||
.. Note:: This example uses the `QRes` tool to change the resolution and refresh rate.
|
echo "xrandr setting new mode ${mode_alias} ${xrandr_mode_str}"
|
||||||
This tool can be downloaded from their `SourceForge repository <https://sourceforge.net/projects/qres/>`__.
|
xrandr --newmode ${mode_alias} ${xrandr_mode_str}
|
||||||
|
xrandr --addmode ${display_output} ${mode_alias}
|
||||||
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------------+
|
# Reset scaling
|
||||||
| **Field** | **Value** |
|
xrandr --output ${display_output} --scale 1
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| Command Preparations | Do: ``cmd /C FullPath\qres.exe /x:%SUNSHINE_CLIENT_WIDTH% /y:%SUNSHINE_CLIENT_HEIGHT% /r:%SUNSHINE_CLIENT_FPS%`` |
|
|
||||||
| +------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| | Undo: ``cmd /C FullPath\qres.exe /x:3840 /y:2160 /r:120`` |
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Elevating Commands (Windows)
|
# Apply new xrandr mode
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
xrandr --output ${display_output} --primary --mode ${mode_alias} --pos 0x0 --rotate normal --scale ${scale}
|
||||||
|
|
||||||
If you've installed Sunshine as a service (default), you can now specify if a command should be elevated with adminsitrative privileges.
|
# Optional reset your wallpaper to fit to new resolution
|
||||||
Simply enable the elevated option in the WEB UI, or add it to the JSON configuration.
|
# xwallpaper --zoom /path/to/wallpaper.png
|
||||||
This is an option for both prep-cmd and regular commands and will launch the process with the current user without a UAC prompt.
|
|
||||||
|
|
||||||
.. Note:: It's important to write the values "true" and "false" as string values, not as the typical true/false values in most JSON.
|
.. tab:: Wayland
|
||||||
|
|
||||||
**Example**
|
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
.. code-block:: json
|
| Command Preparations | Do: ``sh -c "wlr-xrandr --output HDMI-1 --mode \"${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}Hz\""`` |
|
||||||
|
| +-----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| | Undo: ``wlr-xrandr --output HDMI-1 --mode 3840x2160@120Hz`` |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
{
|
.. tab:: KDE Plasma (Wayland, X11)
|
||||||
"name": "Game With AntiCheat that Requires Admin",
|
|
||||||
"output": "",
|
+----------------------+----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
"cmd": "ping 127.0.0.1",
|
| Command Preparations | Do: ``sh -c "kscreen-doctor output.HDMI-A-1.mode.${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}"`` |
|
||||||
"exclude-global-prep-cmd": "false",
|
| +----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
"elevated": "true",
|
| | Undo: ``kscreen-doctor output.HDMI-A-1.mode.3840x2160@120`` |
|
||||||
"prep-cmd": [
|
+----------------------+----------------------------------------------------------------------------------------------------------------------------------+
|
||||||
{
|
|
||||||
"do": "powershell.exe -command \"Start-Streaming\"",
|
.. tab:: NVIDIA
|
||||||
"undo": "powershell.exe -command \"Stop-Streaming\"",
|
|
||||||
"elevated": "false"
|
+----------------------+------------------------------------------------------------------------------------------------------+
|
||||||
}
|
| Command Preparations | Do: ``sh -c "${HOME}/scripts/set-custom-res.sh ${SUNSHINE_CLIENT_WIDTH} ${SUNSHINE_CLIENT_HEIGHT}"`` |
|
||||||
],
|
| +------------------------------------------------------------------------------------------------------+
|
||||||
"image-path": ""
|
| | Undo: ``sh -c "${HOME}/scripts/set-custom-res.sh 3840 2160"`` |
|
||||||
}
|
+----------------------+------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
The ``set-custom-res.sh`` will have this content:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get params and set any defaults
|
||||||
|
width=${1:-1920}
|
||||||
|
height=${2:-1080}
|
||||||
|
output=${3:-HDMI-1}
|
||||||
|
nvidia-settings -a CurrentMetaMode="${output}: nvidia-auto-select { ViewPortIn=${width}x${height}, ViewPortOut=${width}x${height}+0+0 }"
|
||||||
|
|
||||||
|
.. tab:: macOS
|
||||||
|
|
||||||
|
.. tab:: displayplacer
|
||||||
|
|
||||||
|
.. note:: This example uses the `displayplacer` tool to change the resolution.
|
||||||
|
This tool can be installed following instructions in their
|
||||||
|
`GitHub repository <https://github.com/jakehilborn/displayplacer>`__.
|
||||||
|
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------------------+
|
||||||
|
| Command Preparations | Do: ``displayplacer "id:<screenId> res:1920x1080 hz:60 scaling:on origin:(0,0) degree:0"`` |
|
||||||
|
| +-----------------------------------------------------------------------------------------------+
|
||||||
|
| | Undo: ``displayplacer "id:<screenId> res:3840x2160 hz:120 scaling:on origin:(0,0) degree:0"`` |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
.. tab:: QRes
|
||||||
|
|
||||||
|
.. note:: This example uses the `QRes` tool to change the resolution and refresh rate.
|
||||||
|
This tool can be downloaded from their `SourceForge repository <https://sourceforge.net/projects/qres/>`__.
|
||||||
|
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Command Preparations | Do: ``cmd /C FullPath\qres.exe /x:%SUNSHINE_CLIENT_WIDTH% /y:%SUNSHINE_CLIENT_HEIGHT% /r:%SUNSHINE_CLIENT_FPS%`` |
|
||||||
|
| +------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| | Undo: ``cmd /C FullPath\qres.exe /x:3840 /y:2160 /r:120`` |
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
Additional Considerations
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. tab:: Linux
|
||||||
|
|
||||||
|
.. tab:: Flatpak
|
||||||
|
|
||||||
|
.. attention:: Because Flatpak packages run in a sandboxed environment and do not normally have access to the
|
||||||
|
host, the Flatpak of Sunshine requires commands to be prefixed with ``flatpak-spawn --host``.
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
**Elevating Commands (Windows)**
|
||||||
|
|
||||||
|
If you've installed Sunshine as a service (default), you can specify if a command should be elevated with
|
||||||
|
administrative privileges. Simply enable the elevated option in the WEB UI, or add it to the JSON configuration.
|
||||||
|
This is an option for both prep-cmd and regular commands and will launch the process with the current user without a
|
||||||
|
UAC prompt.
|
||||||
|
|
||||||
|
.. note:: It is important to write the values "true" and "false" as string values, not as the typical true/false
|
||||||
|
values in most JSON.
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Game With AntiCheat that Requires Admin",
|
||||||
|
"output": "",
|
||||||
|
"cmd": "ping 127.0.0.1",
|
||||||
|
"exclude-global-prep-cmd": "false",
|
||||||
|
"elevated": "true",
|
||||||
|
"prep-cmd": [
|
||||||
|
{
|
||||||
|
"do": "powershell.exe -command \"Start-Streaming\"",
|
||||||
|
"undo": "powershell.exe -command \"Stop-Streaming\"",
|
||||||
|
"elevated": "false"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image-path": ""
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,4 @@ Collection of guides written by the community!
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
app_examples
|
app_examples
|
||||||
linux/linux
|
linux
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,6 @@ Collection of Sunshine Linux host guides.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
:glob:
|
||||||
|
|
||||||
headless_ssh
|
linux/*
|
||||||
|
|
@ -42,7 +42,7 @@ Once you are done, you will need to perform these 3 steps:
|
||||||
**Step 2** can be replaced with autologin and starting sunshine as a service or putting
|
**Step 2** can be replaced with autologin and starting sunshine as a service or putting
|
||||||
``sunshine &`` in your ``.xinitrc`` file if you start your X server with ``startx``.
|
``sunshine &`` in your ``.xinitrc`` file if you start your X server with ``startx``.
|
||||||
In this case, the workaround for ``/dev/uinput`` permissions is not needed because the udev rule would be triggered
|
In this case, the workaround for ``/dev/uinput`` permissions is not needed because the udev rule would be triggered
|
||||||
for "physical" login. See :ref:`Linux Setup <about/usage:linux>`. I personally think autologin compromises the
|
for "physical" login. See :ref:`Linux Setup <about/setup:install>`. I personally think autologin compromises the
|
||||||
security of the PC, so I went with the remote SSH route. I use the PC more than for gaming, so I don't need a
|
security of the PC, so I went with the remote SSH route. I use the PC more than for gaming, so I don't need a
|
||||||
virtual display everytime I turn on the PC (E.g running updates, config changes, file/media server).
|
virtual display everytime I turn on the PC (E.g running updates, config changes, file/media server).
|
||||||
|
|
||||||
|
|
@ -264,7 +264,7 @@ we will need to update the sudo configuration to execute this without being prom
|
||||||
script to be executed with ``sudo``.
|
script to be executed with ``sudo``.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
After I setup the :ref:`udev rule <about/usage:linux>` to get access to ``/dev/uinput``,
|
After I setup the :ref:`udev rule <about/setup:install>` to get access to ``/dev/uinput``,
|
||||||
I noticed when I sshed into the host without physical login, the ACL permissions on ``/dev/uinput`` were not changed.
|
I noticed when I sshed into the host without physical login, the ACL permissions on ``/dev/uinput`` were not changed.
|
||||||
So I asked `reddit
|
So I asked `reddit
|
||||||
<https://www.reddit.com/r/linux_gaming/comments/14htuzv/does_sshing_into_host_trigger_udev_rule_on_the/>`__.
|
<https://www.reddit.com/r/linux_gaming/comments/14htuzv/does_sshing_into_host_trigger_udev_rule_on_the/>`__.
|
||||||
|
|
@ -273,7 +273,7 @@ we will need to update the sudo configuration to execute this without being prom
|
||||||
|
|
||||||
**Setup Script**
|
**Setup Script**
|
||||||
|
|
||||||
This script will take care of any precondtions prior to starting up sunshine.
|
This script will take care of any preconditions prior to starting up sunshine.
|
||||||
|
|
||||||
Run the following to create a script named something like ``sunshine-setup.sh``:
|
Run the following to create a script named something like ``sunshine-setup.sh``:
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
@ -522,5 +522,5 @@ If you have any feedback and any suggestions, feel free to make a post on Discor
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
Now that you have a virtual display, you may want to automate changing the resolution
|
Now that you have a virtual display, you may want to automate changing the resolution
|
||||||
and refresh rate prior to connecting to an app. See :ref:`Changing Resolution and
|
and refresh rate prior to connecting to an app. See :ref:`Changing Resolution and Refresh Rate
|
||||||
Refresh Rate <about/guides/app_examples:linux>` for more information.
|
<about/guides/app_examples:changing resolution and refresh rate>` for more information.
|
||||||
|
|
|
||||||
|
|
@ -1,258 +0,0 @@
|
||||||
Installation
|
|
||||||
============
|
|
||||||
The recommended method for running Sunshine is to use the `binaries`_ bundled with the `latest release`_.
|
|
||||||
|
|
||||||
.. Attention:: Additional setup is required after installation. See
|
|
||||||
:ref:`Setup <about/usage:setup>`.
|
|
||||||
|
|
||||||
Binaries
|
|
||||||
--------
|
|
||||||
Binaries of Sunshine are created for each release. They are available for Linux, macOS, and Windows.
|
|
||||||
Binaries can be found in the `latest release`_.
|
|
||||||
|
|
||||||
.. Tip:: Some third party packages also exist. See
|
|
||||||
:ref:`Third Party Packages <about/third_party_packages:third party packages>`.
|
|
||||||
|
|
||||||
Docker
|
|
||||||
------
|
|
||||||
Docker images are available on `Dockerhub.io`_ and `ghcr.io`_.
|
|
||||||
|
|
||||||
See :ref:`Docker <about/docker:docker>` for additional information.
|
|
||||||
|
|
||||||
Linux
|
|
||||||
-----
|
|
||||||
Follow the instructions for your preferred package type below.
|
|
||||||
|
|
||||||
**CUDA Compatibility**
|
|
||||||
|
|
||||||
CUDA is used for NVFBC capture.
|
|
||||||
|
|
||||||
.. Tip:: See `CUDA GPUS <https://developer.nvidia.com/cuda-gpus>`__ to cross reference Compute Capability to your GPU.
|
|
||||||
|
|
||||||
.. table::
|
|
||||||
:widths: auto
|
|
||||||
|
|
||||||
=========================================== ============== ============== ================================
|
|
||||||
Package CUDA Version Min Driver CUDA Compute Capabilities
|
|
||||||
=========================================== ============== ============== ================================
|
|
||||||
PKGBUILD User dependent User dependent User dependent
|
|
||||||
sunshine.AppImage 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine.pkg.tar.zst 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine_{arch}.flatpak 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine-debian-bookworm-{arch}.deb 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine-debian-bullseye-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine-fedora-38-{arch}.rpm unavailable unavailable none
|
|
||||||
sunshine-fedora-39-{arch}.rpm unavailable unavailable none
|
|
||||||
sunshine-ubuntu-20.04-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
|
||||||
sunshine-ubuntu-22.04-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
|
||||||
=========================================== ============== ============== ================================
|
|
||||||
|
|
||||||
AppImage
|
|
||||||
^^^^^^^^
|
|
||||||
According to AppImageLint the supported distro matrix of the AppImage is below.
|
|
||||||
|
|
||||||
- [✖] Debian oldstable (buster)
|
|
||||||
- [✔] Debian stable (bullseye)
|
|
||||||
- [✔] Debian testing (bookworm)
|
|
||||||
- [✔] Debian unstable (sid)
|
|
||||||
- [✔] Ubuntu kinetic
|
|
||||||
- [✔] Ubuntu jammy
|
|
||||||
- [✔] Ubuntu focal
|
|
||||||
- [✖] Ubuntu bionic
|
|
||||||
- [✖] Ubuntu xenial
|
|
||||||
- [✖] Ubuntu trusty
|
|
||||||
- [✖] CentOS 7
|
|
||||||
|
|
||||||
#. Download ``sunshine.AppImage`` to your home directory.
|
|
||||||
#. Open terminal and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
./sunshine.AppImage --install
|
|
||||||
|
|
||||||
Start:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
./sunshine.AppImage --install && ./sunshine.AppImage
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
./sunshine.AppImage --remove
|
|
||||||
|
|
||||||
Archlinux PKGBUILD
|
|
||||||
^^^^^^^^^^^^^^^^^^
|
|
||||||
#. Open terminal and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
wget https://github.com/LizardByte/Sunshine/releases/latest/download/PKGBUILD
|
|
||||||
makepkg -fi
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
pacman -R sunshine
|
|
||||||
|
|
||||||
Archlinux pkg
|
|
||||||
^^^^^^^^^^^^^
|
|
||||||
#. Open terminal and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.pkg.tar.zst
|
|
||||||
pacman -U --noconfirm sunshine.pkg.tar.zst
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
pacman -R sunshine
|
|
||||||
|
|
||||||
Debian Package
|
|
||||||
^^^^^^^^^^^^^^
|
|
||||||
#. Download ``sunshine-{ubuntu-version}.deb`` and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo apt install -f ./sunshine-{ubuntu-version}.deb
|
|
||||||
|
|
||||||
.. Note:: The ``{ubuntu-version}`` is the version of ubuntu we built the package on. If you are not using Ubuntu and
|
|
||||||
have an issue with one package, you can try another.
|
|
||||||
|
|
||||||
.. Tip:: You can double click the deb file to see details about the package and begin installation.
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo apt remove sunshine
|
|
||||||
|
|
||||||
Flatpak Package
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
#. Install `Flatpak <https://flatpak.org/setup/>`__ as required.
|
|
||||||
#. Download ``sunshine_{arch}.flatpak`` and run the following code.
|
|
||||||
|
|
||||||
.. Note:: Be sure to replace ``{arch}`` with the architecture for your operating system.
|
|
||||||
|
|
||||||
System level (recommended)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
flatpak install --system ./sunshine_{arch}.flatpak
|
|
||||||
|
|
||||||
User level
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
flatpak install --user ./sunshine_{arch}.flatpak
|
|
||||||
|
|
||||||
Additional installation (required)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
flatpak run --command=additional-install.sh dev.lizardbyte.sunshine
|
|
||||||
|
|
||||||
Start:
|
|
||||||
X11 and NVFBC capture (X11 Only)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
flatpak run dev.lizardbyte.sunshine
|
|
||||||
|
|
||||||
KMS capture (Wayland & X11)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') flatpak run dev.lizardbyte.sunshine
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
flatpak run --command=remove-additional-install.sh dev.lizardbyte.sunshine
|
|
||||||
flatpak uninstall --delete-data dev.lizardbyte.sunshine
|
|
||||||
|
|
||||||
RPM Package
|
|
||||||
^^^^^^^^^^^
|
|
||||||
#. Add `rpmfusion` repositories by running the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
|
|
||||||
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
|
||||||
|
|
||||||
#. Download ``sunshine.rpm`` and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo dnf install ./sunshine.rpm
|
|
||||||
|
|
||||||
.. Tip:: You can double click the rpm file to see details about the package and begin installation.
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo dnf remove sunshine
|
|
||||||
|
|
||||||
macOS
|
|
||||||
-----
|
|
||||||
Sunshine on macOS is experimental. Gamepads do not work. Other features may not work as expected.
|
|
||||||
|
|
||||||
dmg
|
|
||||||
^^^
|
|
||||||
.. Warning:: The `dmg` does not include runtime dependencies.
|
|
||||||
|
|
||||||
#. Download the ``sunshine.dmg`` file and install it.
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
cd /etc/sunshine/assets
|
|
||||||
uninstall_pkg.sh
|
|
||||||
|
|
||||||
Portfile
|
|
||||||
^^^^^^^^
|
|
||||||
#. Install `MacPorts <https://www.macports.org>`__
|
|
||||||
#. Update the Macports sources.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo nano /opt/local/etc/macports/sources.conf
|
|
||||||
|
|
||||||
Add this line, replacing your username, below the line that starts with ``rsync``.
|
|
||||||
``file:///Users/<username>/ports``
|
|
||||||
|
|
||||||
``Ctrl+x``, then ``Y`` to exit and save changes.
|
|
||||||
|
|
||||||
#. Download the ``Portfile`` to ``~/Downloads`` and run the following code.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
mkdir -p ~/ports/multimedia/sunshine
|
|
||||||
mv ~/Downloads/Portfile ~/ports/multimedia/sunshine/
|
|
||||||
cd ~/ports
|
|
||||||
portindex
|
|
||||||
sudo port install sunshine
|
|
||||||
|
|
||||||
#. The first time you start Sunshine, you will be asked to grant access to screen recording and your microphone.
|
|
||||||
|
|
||||||
Uninstall:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo port uninstall sunshine
|
|
||||||
|
|
||||||
Windows
|
|
||||||
-------
|
|
||||||
|
|
||||||
Installer
|
|
||||||
^^^^^^^^^
|
|
||||||
#. Download and install ``sunshine-windows-installer.exe``
|
|
||||||
|
|
||||||
.. Attention:: You should carefully select or unselect the options you want to install. Do not blindly install or enable
|
|
||||||
features.
|
|
||||||
|
|
||||||
To uninstall, find Sunshine in the list `here <ms-settings:installed-apps>`__ and select "Uninstall" from the overflow
|
|
||||||
menu. Different versions of Windows may provide slightly different steps for uninstall.
|
|
||||||
|
|
||||||
Standalone
|
|
||||||
^^^^^^^^^^
|
|
||||||
#. Download and extract ``sunshine-windows-portable.zip``
|
|
||||||
|
|
||||||
To uninstall, delete the extracted directory which contains the ``sunshine.exe`` file.
|
|
||||||
|
|
||||||
.. _latest release: https://github.com/LizardByte/Sunshine/releases/latest
|
|
||||||
.. _Dockerhub.io: https://hub.docker.com/repository/docker/lizardbyte/sunshine
|
|
||||||
.. _ghcr.io: https://github.com/orgs/LizardByte/packages?repo_name=sunshine
|
|
||||||
610
docs/source/about/setup.rst
Normal file
610
docs/source/about/setup.rst
Normal file
|
|
@ -0,0 +1,610 @@
|
||||||
|
Setup
|
||||||
|
=====
|
||||||
|
.. _latest release: https://github.com/LizardByte/Sunshine/releases/latest
|
||||||
|
|
||||||
|
The recommended method for running Sunshine is to use the `binaries`_ bundled with the `latest release`_.
|
||||||
|
|
||||||
|
Binaries
|
||||||
|
--------
|
||||||
|
Binaries of Sunshine are created for each release. They are available for Linux, macOS, and Windows.
|
||||||
|
Binaries can be found in the `latest release`_.
|
||||||
|
|
||||||
|
.. tip:: Some third party packages also exist. See
|
||||||
|
:ref:`Third Party Packages <about/third_party_packages:third party packages>`.
|
||||||
|
No support will be provided for third party packages!
|
||||||
|
|
||||||
|
Install
|
||||||
|
-------
|
||||||
|
.. tab:: Docker
|
||||||
|
|
||||||
|
.. warning:: The Docker images are not recommended for most users. No support will be provided!
|
||||||
|
|
||||||
|
Docker images are available on `Dockerhub.io <https://hub.docker.com/repository/docker/lizardbyte/sunshine>`__
|
||||||
|
and `ghcr.io <https://github.com/orgs/LizardByte/packages?repo_name=sunshine>`__.
|
||||||
|
|
||||||
|
See :ref:`Docker <about/docker:docker>` for additional information.
|
||||||
|
|
||||||
|
.. tab:: Linux
|
||||||
|
|
||||||
|
**CUDA Compatibility**
|
||||||
|
|
||||||
|
CUDA is used for NVFBC capture.
|
||||||
|
|
||||||
|
.. tip:: See `CUDA GPUS <https://developer.nvidia.com/cuda-gpus>`__ to cross reference Compute Capability to your GPU.
|
||||||
|
|
||||||
|
.. table::
|
||||||
|
:widths: auto
|
||||||
|
|
||||||
|
=========================================== ============== ============== ================================
|
||||||
|
Package CUDA Version Min Driver CUDA Compute Capabilities
|
||||||
|
=========================================== ============== ============== ================================
|
||||||
|
PKGBUILD User dependent User dependent User dependent
|
||||||
|
sunshine.AppImage 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine.pkg.tar.zst 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine_{arch}.flatpak 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine-debian-bookworm-{arch}.deb 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine-debian-bullseye-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine-fedora-38-{arch}.rpm unavailable unavailable none
|
||||||
|
sunshine-fedora-39-{arch}.rpm unavailable unavailable none
|
||||||
|
sunshine-ubuntu-20.04-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
||||||
|
sunshine-ubuntu-22.04-{arch}.deb 11.8.0 450.80.02 35;50;52;60;61;62;70;75;80;86;90
|
||||||
|
=========================================== ============== ============== ================================
|
||||||
|
|
||||||
|
.. tab:: AppImage
|
||||||
|
|
||||||
|
According to AppImageLint the supported distro matrix of the AppImage is below.
|
||||||
|
|
||||||
|
- ✔ Debian bullseye
|
||||||
|
- ✔ Debian bookworm
|
||||||
|
- ✔ Debian trixie
|
||||||
|
- ✖ Debian sid
|
||||||
|
- ✔ Ubuntu mantic
|
||||||
|
- ✔ Ubuntu lunar
|
||||||
|
- ✔ Ubuntu jammy
|
||||||
|
- ✔ Ubuntu focal
|
||||||
|
- ✖ Ubuntu bionic
|
||||||
|
- ✖ Ubuntu xenial
|
||||||
|
- ✖ Ubuntu trusty
|
||||||
|
- ✖ CentOS 7
|
||||||
|
|
||||||
|
#. Download ``sunshine.AppImage`` to your home directory.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd ~
|
||||||
|
wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.AppImage
|
||||||
|
|
||||||
|
#. Open terminal and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./sunshine.AppImage --install
|
||||||
|
|
||||||
|
Start:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./sunshine.AppImage --install && ./sunshine.AppImage
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./sunshine.AppImage --remove
|
||||||
|
|
||||||
|
.. tab:: Archlinux PKGBUILD
|
||||||
|
|
||||||
|
#. Open terminal and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://github.com/LizardByte/Sunshine/releases/latest/download/PKGBUILD
|
||||||
|
makepkg -fi
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pacman -R sunshine
|
||||||
|
|
||||||
|
.. tab:: Archlinux pkg
|
||||||
|
|
||||||
|
#. Open terminal and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.pkg.tar.zst
|
||||||
|
pacman -U --noconfirm sunshine.pkg.tar.zst
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pacman -R sunshine
|
||||||
|
|
||||||
|
.. tab:: Debian Package
|
||||||
|
|
||||||
|
#. Download ``sunshine-{distro}-{distro-version}-{arch}.deb`` and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install -f ./sunshine-{distro}-{distro-version}-{arch}.deb
|
||||||
|
|
||||||
|
.. note:: The ``{distro-version}`` is the version of the distro we built the package on. The ``{arch}`` is the
|
||||||
|
architecture of your operating system.
|
||||||
|
|
||||||
|
.. tip:: You can double click the deb file to see details about the package and begin installation.
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt remove sunshine
|
||||||
|
|
||||||
|
.. tab:: Flatpak Package
|
||||||
|
|
||||||
|
.. important:: The instructions provided here are for the version supplied in the `latest release`_, which does
|
||||||
|
not necessarily match the version in the Flathub repository!
|
||||||
|
|
||||||
|
#. Install `Flatpak <https://flatpak.org/setup/>`__ as required.
|
||||||
|
#. Download ``sunshine_{arch}.flatpak`` and run the following code.
|
||||||
|
|
||||||
|
.. note:: Be sure to replace ``{arch}`` with the architecture for your operating system.
|
||||||
|
|
||||||
|
System level (recommended)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak install --system ./sunshine_{arch}.flatpak
|
||||||
|
|
||||||
|
User level
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak install --user ./sunshine_{arch}.flatpak
|
||||||
|
|
||||||
|
Additional installation (required)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak run --command=additional-install.sh dev.lizardbyte.sunshine
|
||||||
|
|
||||||
|
Start:
|
||||||
|
X11 and NVFBC capture (X11 Only)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak run dev.lizardbyte.sunshine
|
||||||
|
|
||||||
|
KMS capture (Wayland & X11)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') \
|
||||||
|
flatpak run dev.lizardbyte.sunshine
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak run --command=remove-additional-install.sh dev.lizardbyte.sunshine
|
||||||
|
flatpak uninstall --delete-data dev.lizardbyte.sunshine
|
||||||
|
|
||||||
|
.. tab:: RPM Package
|
||||||
|
|
||||||
|
#. Add `rpmfusion` repositories by running the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf install \
|
||||||
|
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
|
||||||
|
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
||||||
|
|
||||||
|
#. Download ``sunshine-{distro}-{distro-version}-{arch}.rpm`` and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf install ./sunshine-{distro}-{distro-version}-{arch}.rpm
|
||||||
|
|
||||||
|
.. note:: The ``{distro-version}`` is the version of the distro we built the package on. The ``{arch}`` is the
|
||||||
|
architecture of your operating system.
|
||||||
|
|
||||||
|
.. tip:: You can double click the rpm file to see details about the package and begin installation.
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo dnf remove sunshine
|
||||||
|
|
||||||
|
The `deb`, `rpm`, `Flatpak` and `AppImage` packages should handle these steps automatically.
|
||||||
|
Third party packages may not.
|
||||||
|
|
||||||
|
Sunshine needs access to `uinput` to create mouse and gamepad events.
|
||||||
|
|
||||||
|
#. Create `udev` rules.
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
|
||||||
|
sudo tee /etc/udev/rules.d/85-sunshine.rules
|
||||||
|
|
||||||
|
#. Optionally, configure autostart service
|
||||||
|
|
||||||
|
- filename: ``~/.config/systemd/user/sunshine.service``
|
||||||
|
- contents:
|
||||||
|
.. code-block:: cfg
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Sunshine self-hosted game stream host for Moonlight.
|
||||||
|
StartLimitIntervalSec=500
|
||||||
|
StartLimitBurst=5
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=<see table>
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5s
|
||||||
|
#Flatpak Only
|
||||||
|
#ExecStop=flatpak kill dev.lizardbyte.sunshine
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical-session.target
|
||||||
|
|
||||||
|
.. table::
|
||||||
|
:widths: auto
|
||||||
|
|
||||||
|
======== ============================================== ===============
|
||||||
|
package ExecStart Auto Configured
|
||||||
|
======== ============================================== ===============
|
||||||
|
aur /usr/bin/sunshine ✔
|
||||||
|
deb /usr/bin/sunshine ✔
|
||||||
|
rpm /usr/bin/sunshine ✔
|
||||||
|
AppImage ~/sunshine.AppImage ✔
|
||||||
|
Flatpak flatpak run dev.lizardbyte.sunshine ✔
|
||||||
|
======== ============================================== ===============
|
||||||
|
|
||||||
|
**Start once**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
systemctl --user start sunshine
|
||||||
|
|
||||||
|
**Start on boot**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
systemctl --user enable sunshine
|
||||||
|
|
||||||
|
#. Additional Setup for KMS
|
||||||
|
.. note:: ``cap_sys_admin`` may as well be root, except you don't need to be root to run it. It is necessary to
|
||||||
|
allow Sunshine to use KMS.
|
||||||
|
|
||||||
|
**Enable**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))
|
||||||
|
|
||||||
|
**Disable (for Xorg/X11)**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo setcap -r $(readlink -f $(which sunshine))
|
||||||
|
|
||||||
|
#. Reboot
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo reboot now
|
||||||
|
|
||||||
|
.. tab:: macOS
|
||||||
|
|
||||||
|
.. important:: Sunshine on macOS is experimental. Gamepads do not work. Other features may not work as expected.
|
||||||
|
|
||||||
|
.. tab:: dmg
|
||||||
|
|
||||||
|
.. warning:: The `dmg` does not include runtime dependencies. This package is not recommended for most users.
|
||||||
|
No support will be provided!
|
||||||
|
|
||||||
|
#. Download the ``sunshine.dmg`` file and install it.
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /etc/sunshine/assets
|
||||||
|
uninstall_pkg.sh
|
||||||
|
|
||||||
|
.. tab:: Portfile
|
||||||
|
|
||||||
|
#. Install `MacPorts <https://www.macports.org>`__
|
||||||
|
#. Update the Macports sources.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo nano /opt/local/etc/macports/sources.conf
|
||||||
|
|
||||||
|
Add this line, replacing your username, below the line that starts with ``rsync``.
|
||||||
|
``file:///Users/<username>/ports``
|
||||||
|
|
||||||
|
``Ctrl+x``, then ``Y`` to exit and save changes.
|
||||||
|
|
||||||
|
#. Download the ``Portfile`` to ``~/Downloads`` and run the following code.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mkdir -p ~/ports/multimedia/sunshine
|
||||||
|
cd ~/ports/multimedia/sunshine
|
||||||
|
curl -O https://github.com/LizardByte/Sunshine/releases/latest/download/Portfile
|
||||||
|
cd ~/ports
|
||||||
|
portindex
|
||||||
|
sudo port install sunshine
|
||||||
|
|
||||||
|
#. The first time you start Sunshine, you will be asked to grant access to screen recording and your microphone.
|
||||||
|
|
||||||
|
#. Optionally, install service
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo port load Sunshine
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo port uninstall sunshine
|
||||||
|
|
||||||
|
Sunshine can only access microphones on macOS due to system limitations. To stream system audio use
|
||||||
|
`Soundflower <https://github.com/mattingalls/Soundflower>`__ or
|
||||||
|
`BlackHole <https://github.com/ExistentialAudio/BlackHole>`__.
|
||||||
|
|
||||||
|
.. note:: Command Keys are not forwarded by Moonlight. Right Option-Key is mapped to CMD-Key.
|
||||||
|
|
||||||
|
.. caution:: Gamepads are not currently supported.
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
.. tab:: Installer
|
||||||
|
|
||||||
|
#. Download and install ``sunshine-windows-installer.exe``
|
||||||
|
|
||||||
|
.. attention:: You should carefully select or unselect the options you want to install. Do not blindly install or
|
||||||
|
enable features.
|
||||||
|
|
||||||
|
To uninstall, find Sunshine in the list `here <ms-settings:installed-apps>`__ and select "Uninstall" from the
|
||||||
|
overflow menu. Different versions of Windows may provide slightly different steps for uninstall.
|
||||||
|
|
||||||
|
.. tab:: Standalone
|
||||||
|
|
||||||
|
.. warning:: By using this package instead of the installer, performance will be reduced. This package is not
|
||||||
|
recommended for most users. No support will be provided!
|
||||||
|
|
||||||
|
#. Download and extract ``sunshine-windows-portable.zip``
|
||||||
|
#. Open command prompt as administrator
|
||||||
|
#. Firewall rules
|
||||||
|
|
||||||
|
Install:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/add-firewall-rule.bat
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/delete-firewall-rule.bat
|
||||||
|
|
||||||
|
#. Virtual Gamepad Support
|
||||||
|
|
||||||
|
Install:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/install-gamepad.bat
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/uninstall-gamepad.bat
|
||||||
|
|
||||||
|
#. Windows service
|
||||||
|
|
||||||
|
Install:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/install-service.bat
|
||||||
|
scripts/autostart-service.bat
|
||||||
|
|
||||||
|
Uninstall:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd /d {path to extracted directory}
|
||||||
|
scripts/uninstall-service.bat
|
||||||
|
|
||||||
|
To uninstall, delete the extracted directory which contains the ``sunshine.exe`` file.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
#. If Sunshine is not installed/running as a service, then start sunshine with the following command, unless a start
|
||||||
|
command is listed in the specified package `install`_ instructions above.
|
||||||
|
|
||||||
|
.. note:: A service is a process that runs in the background. This is the default when installing Sunshine from the
|
||||||
|
Windows installer. Running multiple instances of Sunshine is not advised.
|
||||||
|
|
||||||
|
**Basic usage**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sunshine
|
||||||
|
|
||||||
|
**Specify config file**
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sunshine <directory of conf file>/sunshine.conf
|
||||||
|
|
||||||
|
.. note:: You do not need to specify a config file.
|
||||||
|
If no config file is entered the default location will be used.
|
||||||
|
|
||||||
|
.. attention:: The configuration file specified will be created if it doesn't exist.
|
||||||
|
|
||||||
|
**Start Sunshine over SSH (Linux/X11)**
|
||||||
|
Assuming you are already logged into the host, you can use this command
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
ssh <user>@<ip_address> 'export DISPLAY=:0; sunshine'
|
||||||
|
|
||||||
|
If you are logged into the host with only a tty (teletypewriter), you can use ``startx`` to start the
|
||||||
|
X server prior to executing sunshine.
|
||||||
|
You nay need to add ``sleep`` between ``startx`` and ``sunshine`` to allow more time for the display to be ready.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
ssh <user>@<ip_address> 'startx &; export DISPLAY=:0; sunshine'
|
||||||
|
|
||||||
|
.. tip:: You could also utilize the ``~/.bash_profile`` or ``~/.bashrc`` files to setup the ``DISPLAY``
|
||||||
|
variable.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
See :ref:`Remote SSH Headless Setup
|
||||||
|
<about/guides/linux/headless_ssh:Remote SSH Headless Setup>` on
|
||||||
|
how to setup a headless streaming server without autologin and dummy plugs (X11 + NVidia GPUs)
|
||||||
|
|
||||||
|
#. Configure Sunshine in the web ui
|
||||||
|
|
||||||
|
The web ui is available on `https://localhost:47990 <https://localhost:47990>`__ by default. You may replace
|
||||||
|
`localhost` with your internal ip address.
|
||||||
|
|
||||||
|
.. attention:: Ignore any warning given by your browser about "insecure website". This is due to the SSL certificate
|
||||||
|
being self signed.
|
||||||
|
|
||||||
|
.. caution:: If running for the first time, make sure to note the username and password that you created.
|
||||||
|
|
||||||
|
#. Add games and applications.
|
||||||
|
#. Adjust any configuration settings as needed.
|
||||||
|
|
||||||
|
#. In Moonlight, you may need to add the PC manually.
|
||||||
|
#. When Moonlight requests for you insert the pin:
|
||||||
|
|
||||||
|
- Login to the web ui
|
||||||
|
- Go to "PIN" in the Navbar
|
||||||
|
- Type in your PIN and press Enter, you should get a Success Message
|
||||||
|
- In Moonlight, select one of the Applications listed
|
||||||
|
|
||||||
|
Network
|
||||||
|
-------
|
||||||
|
The Sunshine user interface will be available on port 47990 by default.
|
||||||
|
|
||||||
|
.. warning:: Exposing ports to the internet can be dangerous. Do this at your own risk.
|
||||||
|
|
||||||
|
Arguments
|
||||||
|
---------
|
||||||
|
To get a list of available arguments run the following:
|
||||||
|
|
||||||
|
.. tab:: General
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sunshine --help
|
||||||
|
|
||||||
|
.. tab:: AppImage
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./sunshine.AppImage --help
|
||||||
|
|
||||||
|
.. tab:: Flatpak
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flatpak run --command=sunshine dev.lizardbyte.Sunshine --help
|
||||||
|
|
||||||
|
Shortcuts
|
||||||
|
---------
|
||||||
|
All shortcuts start with ``CTRL + ALT + SHIFT``, just like Moonlight
|
||||||
|
|
||||||
|
- ``CTRL + ALT + SHIFT + N`` - Hide/Unhide the cursor (This may be useful for Remote Desktop Mode for Moonlight)
|
||||||
|
- ``CTRL + ALT + SHIFT + F1/F12`` - Switch to different monitor for Streaming
|
||||||
|
|
||||||
|
Application List
|
||||||
|
----------------
|
||||||
|
- Applications should be configured via the web UI.
|
||||||
|
- A basic understanding of working directories and commands is required.
|
||||||
|
- You can use Environment variables in place of values
|
||||||
|
- ``$(HOME)`` will be replaced by the value of ``$HOME``
|
||||||
|
- ``$$`` will be replaced by ``$``, e.g. ``$$(HOME)`` will be become ``$(HOME)``
|
||||||
|
- ``env`` - Adds or overwrites Environment variables for the commands/applications run by Sunshine
|
||||||
|
- ``"Variable name":"Variable value"``
|
||||||
|
- ``apps`` - The list of applications
|
||||||
|
- Advanced users may want to edit the application list manually. The format is ``json``.
|
||||||
|
- Example ``json`` application:
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"cmd": "command to open app",
|
||||||
|
"detached": [
|
||||||
|
"some-command",
|
||||||
|
"another-command"
|
||||||
|
],
|
||||||
|
"image-path": "/full-path/to/png-image",
|
||||||
|
"name": "An App",
|
||||||
|
"output": "/full-path/to/command-log-file",
|
||||||
|
"prep-cmd": [
|
||||||
|
{
|
||||||
|
"do": "some-command",
|
||||||
|
"undo": "undo-that-command"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"working-dir": "/full-path/to/working-directory"
|
||||||
|
}
|
||||||
|
|
||||||
|
- ``cmd`` - The main application
|
||||||
|
- ``detached`` - A list of commands to be run and forgotten about
|
||||||
|
|
||||||
|
- If not specified, a process is started that sleeps indefinitely
|
||||||
|
|
||||||
|
- ``image-path`` - The full path to the cover art image to use.
|
||||||
|
- ``name`` - The name of the application/game
|
||||||
|
- ``output`` - The file where the output of the command is stored
|
||||||
|
- ``auto-detach`` - Specifies whether the app should be treated as detached if it exits quickly
|
||||||
|
- ``prep-cmd`` - A list of commands to be run before/after the application
|
||||||
|
|
||||||
|
- If any of the prep-commands fail, starting the application is aborted
|
||||||
|
- ``do`` - Run before the application
|
||||||
|
|
||||||
|
- If it fails, all ``undo`` commands of the previously succeeded ``do`` commands are run
|
||||||
|
|
||||||
|
- ``undo`` - Run after the application has terminated
|
||||||
|
|
||||||
|
- Failures of ``undo`` commands are ignored
|
||||||
|
|
||||||
|
- ``working-dir`` - The working directory to use. If not specified, Sunshine will use the application directory.
|
||||||
|
|
||||||
|
- For more examples see :ref:`app examples <about/guides/app_examples:app examples>`.
|
||||||
|
|
||||||
|
Considerations
|
||||||
|
--------------
|
||||||
|
- On Windows, Sunshine uses the Desktop Duplication API which only supports capturing from the GPU used for display.
|
||||||
|
If you want to capture and encode on the eGPU, connect a display or HDMI dummy display dongle to it and run the games
|
||||||
|
on that display.
|
||||||
|
- When an application is started, if there is an application already running, it will be terminated.
|
||||||
|
- When the application has been shutdown, the stream shuts down as well.
|
||||||
|
|
||||||
|
- For example, if you attempt to run ``steam`` as a ``cmd`` instead of ``detached`` the stream will immediately fail.
|
||||||
|
This is due to the method in which the steam process is executed. Other applications may behave similarly.
|
||||||
|
- This does not apply to ``detached`` applications.
|
||||||
|
|
||||||
|
- The "Desktop" app works the same as any other application except it has no commands. It does not start an application,
|
||||||
|
instead it simply starts a stream. If you removed it and would like to get it back, just add a new application with
|
||||||
|
the name "Desktop" and "desktop.png" as the image path.
|
||||||
|
- For the Linux flatpak you must prepend commands with ``flatpak-spawn --host``.
|
||||||
|
|
||||||
|
HDR Support
|
||||||
|
-----------
|
||||||
|
Streaming HDR content is supported for Windows hosts with NVIDIA, AMD, or Intel GPUs that support encoding HEVC Main 10.
|
||||||
|
You must have an HDR-capable display or EDID emulator dongle connected to your host PC to activate HDR in Windows.
|
||||||
|
|
||||||
|
- Ensure you enable the HDR option in your Moonlight client settings, otherwise the stream will be SDR.
|
||||||
|
- A good HDR experience relies on proper HDR display calibration both in Windows and in game. HDR calibration can differ significantly between client and host displays.
|
||||||
|
- We recommend calibrating the display by streaming the Windows HDR Calibration app to your client device and saving an HDR calibration profile to use while streaming.
|
||||||
|
- You may also need to tune the brightness slider or HDR calibration options in game to the different HDR brightness capabilities of your client's display.
|
||||||
|
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows 10 OS HDR support may not display in HDR.
|
||||||
|
- Some GPUs can produce lower image quality or encoding performance when streaming in HDR compared to SDR.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
`Arch wiki on HDR Support for Linux <https://wiki.archlinux.org/title/HDR_monitor_support>`__ and
|
||||||
|
`Reddit Guide for HDR Support for AMD GPUs
|
||||||
|
<https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux>`__
|
||||||
|
|
||||||
|
Tutorials and Guides
|
||||||
|
--------------------
|
||||||
|
Tutorial videos are available `here <https://www.youtube.com/playlist?list=PLMYr5_xSeuXAbhxYHz86hA1eCDugoxXY0>`_.
|
||||||
|
|
||||||
|
Guides are available :doc:`here <./guides/guides>`.
|
||||||
|
|
||||||
|
.. admonition:: Community!
|
||||||
|
|
||||||
|
Tutorials and Guides are community generated. Want to contribute? Reach out to us on our discord server.
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
Third Party Packages
|
Third Party Packages
|
||||||
====================
|
====================
|
||||||
|
|
||||||
.. Danger:: These packages are not maintained by LizardByte. Use at your own risk.
|
.. danger:: These packages are not maintained by LizardByte. Use at your own risk.
|
||||||
|
|
||||||
AUR
|
AUR
|
||||||
---
|
---
|
||||||
|
|
@ -35,18 +35,3 @@ Solus
|
||||||
.. image:: https://img.shields.io/badge/dynamic/xml.svg?color=orange&label=Solus&style=for-the-badge&prefix=v&query=%2F%2Ftr%5B%40id%3D%27solus%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Fsunshine%2Fversions&logo=solus
|
.. image:: https://img.shields.io/badge/dynamic/xml.svg?color=orange&label=Solus&style=for-the-badge&prefix=v&query=%2F%2Ftr%5B%40id%3D%27solus%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Fsunshine%2Fversions&logo=solus
|
||||||
:alt: Solus Version
|
:alt: Solus Version
|
||||||
:target: https://dev.getsol.us/source/sunshine
|
:target: https://dev.getsol.us/source/sunshine
|
||||||
|
|
||||||
Legacy GitHub Repo
|
|
||||||
------------------
|
|
||||||
|
|
||||||
.. Attention:: This repo is not maintained. Thank you to Loki for bringing this amazing project to life!
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/static/v1.svg?label=repo&message=loki-47-6F-64/sunshine&color=blue&style=for-the-badge&logo=github
|
|
||||||
:alt: GitHub Maintainer
|
|
||||||
:target: https://github.com/loki-47-6F-64/sunshine/releases
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/last-commit/loki-47-6F-64/sunshine.svg?style=for-the-badge&logo=github
|
|
||||||
:alt: GitHub last commit
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/release-date/loki-47-6F-64/sunshine.svg?style=for-the-badge&logo=github
|
|
||||||
:alt: GitHub Release Date
|
|
||||||
|
|
|
||||||
|
|
@ -1,314 +0,0 @@
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
#. See the `setup`_ section for your specific OS.
|
|
||||||
#. If you did not install the service, then start sunshine with the following command, unless a start command is listed
|
|
||||||
in the specified package :ref:`installation <about/installation:installation>` instructions.
|
|
||||||
|
|
||||||
.. Note:: A service is a process that runs in the background. Running multiple instances of Sunshine is not
|
|
||||||
advised.
|
|
||||||
|
|
||||||
**Basic usage**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sunshine
|
|
||||||
|
|
||||||
**Specify config file**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sunshine <directory of conf file>/sunshine.conf
|
|
||||||
|
|
||||||
.. Note:: You do not need to specify a config file. If no config file is entered the default location will be used.
|
|
||||||
|
|
||||||
.. Attention:: The configuration file specified will be created if it doesn't exist.
|
|
||||||
|
|
||||||
**Start Sunshine over SSH (Linux/X11)**
|
|
||||||
Assuming you are already logged into the host, you can use this command
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
ssh <user>@<ip_address> 'export DISPLAY=:0; sunshine'
|
|
||||||
|
|
||||||
If you are logged into the host with only a tty (teletypewriter), you can use ``startx`` to start the
|
|
||||||
X server prior to executing sunshine.
|
|
||||||
You nay need to add ``sleep`` between ``startx`` and ``sunshine`` to allow more time for the display to be ready.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
ssh <user>@<ip_address> 'startx &; export DISPLAY=:0; sunshine'
|
|
||||||
|
|
||||||
.. tip:: You could also utilize the ``~/.bash_profile`` or ``~/.bashrc`` files to setup the ``DISPLAY``
|
|
||||||
variable.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
|
|
||||||
See :ref:`Remote SSH Headless Setup
|
|
||||||
<about/guides/linux/headless_ssh:Remote SSH Headless Setup>` on
|
|
||||||
how to setup a headless streaming server without autologin and dummy plugs (X11 + NVidia GPUs)
|
|
||||||
|
|
||||||
#. Configure Sunshine in the web ui
|
|
||||||
|
|
||||||
The web ui is available on `https://localhost:47990 <https://localhost:47990>`__ by default. You may replace
|
|
||||||
`localhost` with your internal ip address.
|
|
||||||
|
|
||||||
.. Attention:: Ignore any warning given by your browser about "insecure website". This is due to the SSL certificate
|
|
||||||
being self signed.
|
|
||||||
|
|
||||||
.. Caution:: If running for the first time, make sure to note the username and password that you created.
|
|
||||||
|
|
||||||
**Add games and applications.**
|
|
||||||
This can be configured in the web ui.
|
|
||||||
|
|
||||||
.. Note:: Additionally, apps can be configured manually. `src_assets/<os>/config/apps.json` is an example of a
|
|
||||||
list of applications that are started just before running a stream. This is the directory within the GitHub
|
|
||||||
repo.
|
|
||||||
|
|
||||||
#. In Moonlight, you may need to add the PC manually.
|
|
||||||
#. When Moonlight request you insert the correct pin on sunshine:
|
|
||||||
|
|
||||||
- Login to the web ui
|
|
||||||
- Go to "PIN" in the Navbar
|
|
||||||
- Type in your PIN and press Enter, you should get a Success Message
|
|
||||||
- In Moonlight, select one of the Applications listed
|
|
||||||
|
|
||||||
Network
|
|
||||||
-------
|
|
||||||
The Sunshine user interface will be available on port 47990 by default.
|
|
||||||
|
|
||||||
.. Warning:: Exposing ports to the internet can be dangerous. Do this at your own risk.
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
To get a list of available arguments run the following:
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sunshine --help
|
|
||||||
|
|
||||||
Setup
|
|
||||||
-----
|
|
||||||
|
|
||||||
Linux
|
|
||||||
^^^^^
|
|
||||||
The `deb`, `rpm`, `Flatpak` and `AppImage` packages handle these steps automatically. Third party packages may not.
|
|
||||||
|
|
||||||
Sunshine needs access to `uinput` to create mouse and gamepad events.
|
|
||||||
|
|
||||||
#. Create `udev` rules.
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
|
|
||||||
sudo tee /etc/udev/rules.d/85-sunshine.rules
|
|
||||||
|
|
||||||
#. Optionally, configure autostart service
|
|
||||||
|
|
||||||
- filename: ``~/.config/systemd/user/sunshine.service``
|
|
||||||
- contents:
|
|
||||||
.. code-block:: cfg
|
|
||||||
|
|
||||||
[Unit]
|
|
||||||
Description=Sunshine self-hosted game stream host for Moonlight.
|
|
||||||
StartLimitIntervalSec=500
|
|
||||||
StartLimitBurst=5
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=<see table>
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5s
|
|
||||||
#Flatpak Only
|
|
||||||
#ExecStop=flatpak kill dev.lizardbyte.sunshine
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=graphical-session.target
|
|
||||||
|
|
||||||
.. table::
|
|
||||||
:widths: auto
|
|
||||||
|
|
||||||
======== ============================================== ===============
|
|
||||||
package ExecStart Auto Configured
|
|
||||||
======== ============================================== ===============
|
|
||||||
aur /usr/bin/sunshine ✔
|
|
||||||
deb /usr/bin/sunshine ✔
|
|
||||||
rpm /usr/bin/sunshine ✔
|
|
||||||
AppImage ~/sunshine.AppImage ✔
|
|
||||||
Flatpak flatpak run dev.lizardbyte.sunshine ✔
|
|
||||||
======== ============================================== ===============
|
|
||||||
|
|
||||||
**Start once**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
systemctl --user start sunshine
|
|
||||||
|
|
||||||
**Start on boot**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
systemctl --user enable sunshine
|
|
||||||
|
|
||||||
#. Additional Setup for KMS
|
|
||||||
.. Note:: ``cap_sys_admin`` may as well be root, except you don't need to be root to run it. It is necessary to
|
|
||||||
allow Sunshine to use KMS.
|
|
||||||
|
|
||||||
**Enable**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))
|
|
||||||
|
|
||||||
**Disable (for Xorg/X11)**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo setcap -r $(readlink -f $(which sunshine))
|
|
||||||
|
|
||||||
#. Reboot
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo reboot now
|
|
||||||
|
|
||||||
macOS
|
|
||||||
^^^^^
|
|
||||||
Sunshine can only access microphones on macOS due to system limitations. To stream system audio use
|
|
||||||
`Soundflower <https://github.com/mattingalls/Soundflower>`__ or
|
|
||||||
`BlackHole <https://github.com/ExistentialAudio/BlackHole>`__.
|
|
||||||
|
|
||||||
.. Note:: Command Keys are not forwarded by Moonlight. Right Option-Key is mapped to CMD-Key.
|
|
||||||
|
|
||||||
.. Caution:: Gamepads are not currently supported.
|
|
||||||
|
|
||||||
Configure autostart service
|
|
||||||
**MacPorts**
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo port load Sunshine
|
|
||||||
|
|
||||||
Windows
|
|
||||||
^^^^^^^
|
|
||||||
For gamepad support, install `Nefarius Virtual Gamepad <https://github.com/nefarius/ViGEmBus/releases/latest>`__
|
|
||||||
|
|
||||||
Sunshine firewall
|
|
||||||
**Add rule**
|
|
||||||
.. code-block:: batch
|
|
||||||
|
|
||||||
cd /d "C:\Program Files\Sunshine\scripts"
|
|
||||||
add-firewall-rule.bat
|
|
||||||
|
|
||||||
**Remove rule**
|
|
||||||
.. code-block:: batch
|
|
||||||
|
|
||||||
cd /d "C:\Program Files\Sunshine\scripts"
|
|
||||||
remove-firewall-rule.bat
|
|
||||||
|
|
||||||
Sunshine service
|
|
||||||
**Enable**
|
|
||||||
.. code-block:: batch
|
|
||||||
|
|
||||||
cd /d "C:\Program Files\Sunshine\scripts"
|
|
||||||
install-service.bat
|
|
||||||
|
|
||||||
**Disable**
|
|
||||||
.. code-block:: batch
|
|
||||||
|
|
||||||
cd /d "C:\Program Files\Sunshine\scripts"
|
|
||||||
uninstall-service.bat
|
|
||||||
|
|
||||||
Shortcuts
|
|
||||||
---------
|
|
||||||
All shortcuts start with ``CTRL + ALT + SHIFT``, just like Moonlight
|
|
||||||
|
|
||||||
- ``CTRL + ALT + SHIFT + N`` - Hide/Unhide the cursor (This may be useful for Remote Desktop Mode for Moonlight)
|
|
||||||
- ``CTRL + ALT + SHIFT + F1/F12`` - Switch to different monitor for Streaming
|
|
||||||
|
|
||||||
Application List
|
|
||||||
----------------
|
|
||||||
- Applications should be configured via the web UI.
|
|
||||||
- A basic understanding of working directories and commands is required.
|
|
||||||
- You can use Environment variables in place of values
|
|
||||||
- ``$(HOME)`` will be replaced by the value of ``$HOME``
|
|
||||||
- ``$$`` will be replaced by ``$``, e.g. ``$$(HOME)`` will be become ``$(HOME)``
|
|
||||||
- ``env`` - Adds or overwrites Environment variables for the commands/applications run by Sunshine
|
|
||||||
- ``"Variable name":"Variable value"``
|
|
||||||
- ``apps`` - The list of applications
|
|
||||||
- Advanced users may want to edit the application list manually. The format is ``json``.
|
|
||||||
- Example ``json`` application:
|
|
||||||
.. code-block:: json
|
|
||||||
|
|
||||||
{
|
|
||||||
"cmd": "command to open app",
|
|
||||||
"detached": [
|
|
||||||
"some-command",
|
|
||||||
"another-command"
|
|
||||||
],
|
|
||||||
"image-path": "/full-path/to/png-image",
|
|
||||||
"name": "An App",
|
|
||||||
"output": "/full-path/to/command-log-file",
|
|
||||||
"prep-cmd": [
|
|
||||||
{
|
|
||||||
"do": "some-command",
|
|
||||||
"undo": "undo-that-command"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"working-dir": "/full-path/to/working-directory"
|
|
||||||
}
|
|
||||||
|
|
||||||
- ``cmd`` - The main application
|
|
||||||
- ``detached`` - A list of commands to be run and forgotten about
|
|
||||||
|
|
||||||
- If not specified, a process is started that sleeps indefinitely
|
|
||||||
|
|
||||||
- ``image-path`` - The full path to the cover art image to use.
|
|
||||||
- ``name`` - The name of the application/game
|
|
||||||
- ``output`` - The file where the output of the command is stored
|
|
||||||
- ``auto-detach`` - Specifies whether the app should be treated as detached if it exits quickly
|
|
||||||
- ``prep-cmd`` - A list of commands to be run before/after the application
|
|
||||||
|
|
||||||
- If any of the prep-commands fail, starting the application is aborted
|
|
||||||
- ``do`` - Run before the application
|
|
||||||
|
|
||||||
- If it fails, all ``undo`` commands of the previously succeeded ``do`` commands are run
|
|
||||||
|
|
||||||
- ``undo`` - Run after the application has terminated
|
|
||||||
|
|
||||||
- Failures of ``undo`` commands are ignored
|
|
||||||
|
|
||||||
- ``working-dir`` - The working directory to use. If not specified, Sunshine will use the application directory.
|
|
||||||
|
|
||||||
- For more examples see :ref:`app examples <about/guides/app_examples:app examples>`.
|
|
||||||
|
|
||||||
Considerations
|
|
||||||
--------------
|
|
||||||
- On Windows, Sunshine uses the Desktop Duplication API which only supports capturing from the GPU used for display.
|
|
||||||
If you want to capture and encode on the eGPU, connect a display or HDMI dummy display dongle to it and run the games
|
|
||||||
on that display.
|
|
||||||
- When an application is started, if there is an application already running, it will be terminated.
|
|
||||||
- When the application has been shutdown, the stream shuts down as well.
|
|
||||||
|
|
||||||
- For example, if you attempt to run ``steam`` as a ``cmd`` instead of ``detached`` the stream will immediately fail.
|
|
||||||
This is due to the method in which the steam process is executed. Other applications may behave similarly.
|
|
||||||
|
|
||||||
- The "Desktop" app works the same as any other application except it has no commands. It does not start an application,
|
|
||||||
instead it simply starts a stream. If you removed it and would like to get it back, just add a new application with
|
|
||||||
the name "Desktop" and "desktop.png" as the image path.
|
|
||||||
- For the Linux flatpak you must prepend commands with ``flatpak-spawn --host``.
|
|
||||||
|
|
||||||
HDR Support
|
|
||||||
-----------
|
|
||||||
Streaming HDR content is supported for Windows hosts with NVIDIA, AMD, or Intel GPUs that support encoding HEVC Main 10.
|
|
||||||
You must have an HDR-capable display or EDID emulator dongle connected to your host PC to activate HDR in Windows.
|
|
||||||
|
|
||||||
- Ensure you enable the HDR option in your Moonlight client settings, otherwise the stream will be SDR.
|
|
||||||
- A good HDR experience relies on proper HDR display calibration both in Windows and in game. HDR calibration can differ significantly between client and host displays.
|
|
||||||
- We recommend calibrating the display by streaming the Windows HDR Calibration app to your client device and saving an HDR calibration profile to use while streaming.
|
|
||||||
- You may also need to tune the brightness slider or HDR calibration options in game to the different HDR brightness capabilities of your client's display.
|
|
||||||
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows 10 OS HDR support may not display in HDR.
|
|
||||||
- Some GPUs can produce lower image quality or encoding performance when streaming in HDR compared to SDR.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
`Arch wiki on HDR Support for Linux <https://wiki.archlinux.org/title/HDR_monitor_support>`__ and
|
|
||||||
`Reddit Guide for HDR Support for AMD GPUs
|
|
||||||
<https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux>`__
|
|
||||||
|
|
||||||
Tutorials and Guides
|
|
||||||
--------------------
|
|
||||||
Tutorial videos are available `here <https://www.youtube.com/playlist?list=PLMYr5_xSeuXAbhxYHz86hA1eCDugoxXY0>`_.
|
|
||||||
|
|
||||||
Guides are available :doc:`here <./guides/guides>`.
|
|
||||||
|
|
||||||
.. admonition:: Community!
|
|
||||||
|
|
||||||
Tutorials and Guides are community generated. Want to contribute? Reach out to us on our discord server.
|
|
||||||
|
|
@ -183,7 +183,7 @@ CUDA
|
||||||
----
|
----
|
||||||
If the version of CUDA available from your distro is not adequate, manually install CUDA.
|
If the version of CUDA available from your distro is not adequate, manually install CUDA.
|
||||||
|
|
||||||
.. Tip:: The version of CUDA you use will determine compatibility with various GPU generations.
|
.. tip:: The version of CUDA you use will determine compatibility with various GPU generations.
|
||||||
See `CUDA compatibility <https://docs.nvidia.com/deploy/cuda-compatibility/index.html>`__ for more info.
|
See `CUDA compatibility <https://docs.nvidia.com/deploy/cuda-compatibility/index.html>`__ for more info.
|
||||||
|
|
||||||
Select the appropriate run file based on your desired CUDA version and architecture according to
|
Select the appropriate run file based on your desired CUDA version and architecture according to
|
||||||
|
|
@ -199,7 +199,7 @@ If the version of CUDA available from your distro is not adequate, manually inst
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
.. Attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
.. attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ Install Requirements
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
.. Attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
.. attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ Install dependencies:
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
.. Attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
.. attention:: Ensure you are in the build directory created during the clone step earlier before continuing.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,10 +41,10 @@ situations. For example if a system tray icon is added it should be localized as
|
||||||
|
|
||||||
std::string msg = boost::locale::translate("Hello world!");
|
std::string msg = boost::locale::translate("Hello world!");
|
||||||
|
|
||||||
.. Tip:: More examples can be found in the documentation for
|
.. tip:: More examples can be found in the documentation for
|
||||||
`boost locale <https://www.boost.org/doc/libs/1_70_0/libs/locale/doc/html/messages_formatting.html>`__.
|
`boost locale <https://www.boost.org/doc/libs/1_70_0/libs/locale/doc/html/messages_formatting.html>`__.
|
||||||
|
|
||||||
.. Warning:: This is for information only. Contributors should never include manually updated template files, or
|
.. warning:: This is for information only. Contributors should never include manually updated template files, or
|
||||||
manually compiled language files in Pull Requests.
|
manually compiled language files in Pull Requests.
|
||||||
|
|
||||||
Strings are automatically extracted from the code to the `locale/sunshine.po` template file. The generated file is
|
Strings are automatically extracted from the code to the `locale/sunshine.po` template file. The generated file is
|
||||||
|
|
|
||||||
|
|
@ -59,5 +59,5 @@ Format inplace with rstfmt
|
||||||
|
|
||||||
Unit Testing
|
Unit Testing
|
||||||
------------
|
------------
|
||||||
.. Todo:: Sunshine does not currently have any unit tests. If you would like to help us improve please get in contact
|
.. todo:: Sunshine does not currently have any unit tests. If you would like to help us improve please get in contact
|
||||||
with us, or make a PR with suggested changes.
|
with us, or make a PR with suggested changes.
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Migration
|
||||||
---------
|
---------
|
||||||
We have developed a simple migration tool to help you migrate your GameStream games and apps to Sunshine automatically.
|
We have developed a simple migration tool to help you migrate your GameStream games and apps to Sunshine automatically.
|
||||||
Please check out our `GSMS <https://github.com/LizardByte/GSMS>`__ project if you're interested in an automated
|
Please check out our `GSMS <https://github.com/LizardByte/GSMS>`__ project if you're interested in an automated
|
||||||
migration option. At the time of writing this GSMS offers the ability to migrate your custom games and apps. The
|
migration option. GSMS offers the ability to migrate your custom and auto-detected games and apps. The
|
||||||
working directory, command, and image are all set in Sunshine's ``apps.json`` file. The box-art image is also copied
|
working directory, command, and image are all set in Sunshine's ``apps.json`` file. The box-art image is also copied
|
||||||
to a specified directory.
|
to a specified directory.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
Legal
|
Legal
|
||||||
=====
|
=====
|
||||||
.. Attention:: This documentation is for informational purposes only and is not intended as legal advice. If you have
|
.. attention:: This documentation is for informational purposes only and is not intended as legal advice. If you have
|
||||||
any legal questions or concerns about using Sunshine, we recommend consulting with a lawyer.
|
any legal questions or concerns about using Sunshine, we recommend consulting with a lawyer.
|
||||||
|
|
||||||
Sunshine is licensed under the GPL-3.0 license, which allows for free use and modification of the software.
|
Sunshine is licensed under the GPL-3.0 license, which allows for free use and modification of the software.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
common
|
common
|
||||||
======
|
======
|
||||||
|
|
||||||
.. Todo:: Add common.h
|
.. todo:: Add common.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
graphics
|
graphics
|
||||||
========
|
========
|
||||||
|
|
||||||
.. Todo:: Add graphics.h
|
.. todo:: Add graphics.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
misc
|
misc
|
||||||
====
|
====
|
||||||
|
|
||||||
.. Todo:: Add misc.h
|
.. todo:: Add misc.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
x11grab
|
x11grab
|
||||||
=======
|
=======
|
||||||
|
|
||||||
.. Todo:: Add x11grab.h
|
.. todo:: Add x11grab.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
av_audio
|
av_audio
|
||||||
========
|
========
|
||||||
|
|
||||||
.. Todo:: Add av_audio.h
|
.. todo:: Add av_audio.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
av_img_t
|
av_img_t
|
||||||
========
|
========
|
||||||
|
|
||||||
.. Todo:: Add av_img_t.h
|
.. todo:: Add av_img_t.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
av_video
|
av_video
|
||||||
========
|
========
|
||||||
|
|
||||||
.. Todo:: Add av_video.h
|
.. todo:: Add av_video.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
nv12_zero_device
|
nv12_zero_device
|
||||||
================
|
================
|
||||||
|
|
||||||
.. Todo:: Add nv12_zero_device.h
|
.. todo:: Add nv12_zero_device.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
PolicyConfig
|
PolicyConfig
|
||||||
============
|
============
|
||||||
|
|
||||||
.. Todo:: Add PolicyConfig.h
|
.. todo:: Add PolicyConfig.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
display
|
display
|
||||||
=======
|
=======
|
||||||
|
|
||||||
.. Todo:: Add display.h
|
.. todo:: Add display.h
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
utility
|
utility
|
||||||
=======
|
=======
|
||||||
|
|
||||||
.. Todo:: Add utility.h
|
.. todo:: Add utility.h
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,11 @@
|
||||||
:caption: About
|
:caption: About
|
||||||
|
|
||||||
about/overview
|
about/overview
|
||||||
about/installation
|
about/setup
|
||||||
about/docker
|
about/docker
|
||||||
about/third_party_packages
|
about/third_party_packages
|
||||||
about/usage
|
|
||||||
about/guides/guides
|
about/guides/guides
|
||||||
about/advanced_usage
|
about/advanced_usage
|
||||||
about/changelog
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
@ -54,3 +52,9 @@
|
||||||
:caption: source
|
:caption: source
|
||||||
|
|
||||||
source_code/source_code
|
source_code/source_code
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: History
|
||||||
|
|
||||||
|
history/changelog
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,14 @@ If you see the above error in the Sunshine logs, compiling `Mesa`
|
||||||
manually, may be required. See the official Mesa3D `Compiling and Installing <https://docs.mesa3d.org/install.html>`__
|
manually, may be required. See the official Mesa3D `Compiling and Installing <https://docs.mesa3d.org/install.html>`__
|
||||||
documentation for instructions.
|
documentation for instructions.
|
||||||
|
|
||||||
.. Important:: You must re-enable the disabled encoders. You can do so, by passing the following argument to the build
|
.. important:: You must re-enable the disabled encoders. You can do so, by passing the following argument to the build
|
||||||
system. You may also want to enable decoders, however that is not required for Sunshine and is not covered here.
|
system. You may also want to enable decoders, however that is not required for Sunshine and is not covered here.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
-Dvideo-codecs=h264enc,h265enc
|
-Dvideo-codecs=h264enc,h265enc
|
||||||
|
|
||||||
.. Note:: Other build options are listed in the
|
.. note:: Other build options are listed in the
|
||||||
`meson options <https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt>`__ file.
|
`meson options <https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt>`__ file.
|
||||||
|
|
||||||
KMS Streaming fails
|
KMS Streaming fails
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue