change docs theme to furo

This commit is contained in:
ReenigneArcher
2022-10-29 22:14:16 -04:00
parent 42a990a12b
commit 3cab7e1067
20 changed files with 277 additions and 377 deletions

View File

@ -10,7 +10,7 @@ version: 2
build: build:
os: ubuntu-20.04 os: ubuntu-20.04
tools: tools:
python: "3.9" python: "3.10"
## apt packages required packages to run cmake on sunshine, note that additional packages are required ## apt packages required packages to run cmake on sunshine, note that additional packages are required
# apt_packages: # apt_packages:
@ -41,5 +41,5 @@ formats: all
python: python:
install: install:
- requirements: ./scripts/requirements.txt - requirements: ./docs/requirements.txt
system_packages: true system_packages: true

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/README.rst
Overview Overview
======== ========
LizardByte has the full documentation hosted on `Read the Docs <https://sunshinestream.readthedocs.io/>`_. LizardByte has the full documentation hosted on `Read the Docs <https://sunshinestream.readthedocs.io/>`_.
@ -13,18 +11,18 @@ Connect to Sunshine from any Moonlight client, available for nearly any device i
These are the advantages of Sunshine over GeForce Experience. These are the advantages of Sunshine over GeForce Experience.
- FOSS (Free and Open Source Software) - FOSS (Free and Open Source Software)
- Multi-platform - Multi-platform
- Linux - Linux
- macOS - macOS
- Windows - Windows
- Pair over web ui - Pair over web ui
- Supports AMD, Intel, and Nvidia GPUs for encoding - Supports AMD, Intel, and Nvidia GPUs for encoding
- Supports software encoding - Supports software encoding
- Supports streaming to multiple clients - Supports streaming to multiple clients
- Web UI for configuration - Web UI for configuration
Integrations Integrations
------------ ------------

4
docs/requirements.txt Normal file
View File

@ -0,0 +1,4 @@
furo==2022.9.29
m2r2==0.3.3
Sphinx==5.3.0
sphinx-copybutton==0.5.0

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/about/advanced_usage.rst
Advanced Usage Advanced Usage
============== ==============
Sunshine will work with the default settings for most users. In some cases you may want to configure Sunshine further. Sunshine will work with the default settings for most users. In some cases you may want to configure Sunshine further.
@ -26,7 +24,7 @@ location by modifying the configuration file.
Windows ./config/ Windows ./config/
========= =========== ========= ===========
Example **Example**
.. code-block:: bash .. code-block:: bash
sunshine ~/sunshine_config.conf sunshine ~/sunshine_config.conf
@ -41,13 +39,13 @@ General
sunshine_name sunshine_name
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
Description **Description**
The name displayed by Moonlight The name displayed by Moonlight
Default **Default**
PC hostname PC hostname
Example **Example**
.. code-block:: text .. code-block:: text
sunshine_name = Sunshine sunshine_name = Sunshine
@ -55,7 +53,7 @@ Example
min_log_level min_log_level
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
Description **Description**
The minimum log level printed to standard out. The minimum log level printed to standard out.
**Choices** **Choices**
@ -75,10 +73,10 @@ Description
none no logging none no logging
======= =========== ======= ===========
Default **Default**
``info`` ``info``
Example **Example**
.. code-block:: text .. code-block:: text
min_log_level = info min_log_level = info
@ -89,7 +87,7 @@ Controls
gamepad 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.
@ -106,10 +104,10 @@ Description
ds4 dualshock controller (PS4) ds4 dualshock controller (PS4)
===== =========== ===== ===========
Default **Default**
``x360`` ``x360``
Example **Example**
.. code-block:: text .. code-block:: text
gamepad = x360 gamepad = x360
@ -117,17 +115,17 @@ Example
back_button_timeout back_button_timeout
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
Description **Description**
If, after the timeout, the back/select button is still pressed down, Home/Guide button press is emulated. If, after the timeout, the back/select button is still pressed down, Home/Guide button press is emulated.
On Nvidia Shield, the home and power button are not passed to Moonlight. On Nvidia Shield, the home and power button are not passed to Moonlight.
.. 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**
``2000`` ``2000``
Example **Example**
.. code-block:: text .. code-block:: text
back_button_timeout = 2000 back_button_timeout = 2000
@ -135,13 +133,13 @@ Example
key_repeat_delay key_repeat_delay
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
Description **Description**
The initial delay in milliseconds before repeating keys. Controls how fast keys will repeat themselves. The initial delay in milliseconds before repeating keys. Controls how fast keys will repeat themselves.
Default **Default**
``500`` ``500``
Example **Example**
.. code-block:: text .. code-block:: text
key_repeat_delay = 500 key_repeat_delay = 500
@ -149,15 +147,15 @@ Example
key_repeat_frequency 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**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
key_repeat_frequency = 24.9 key_repeat_frequency = 24.9
@ -165,17 +163,17 @@ Example
keybindings 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**
None None
Example **Example**
.. code-block:: text .. code-block:: text
keybindings = [ keybindings = [
@ -188,14 +186,14 @@ Example
key_rightalt_to_key_win key_rightalt_to_key_win
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
Description **Description**
It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to
make Sunshine think the Right Alt key is the Windows key. make Sunshine think the Right Alt key is the Windows key.
Default **Default**
None None
Example **Example**
.. code-block:: text .. code-block:: text
key_rightalt_to_key_win = enabled key_rightalt_to_key_win = enabled
@ -206,12 +204,12 @@ Display
adapter_name 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.
.. code-block:: bash .. code-block:: bash
@ -227,23 +225,23 @@ Description
.. Todo:: macOS .. Todo:: macOS
Windows **Windows**
.. code-block:: batch .. code-block:: batch
tools\dxgi-info.exe tools\dxgi-info.exe
Default **Default**
Sunshine will select the default video card. Sunshine will select the default video card.
Examples **Examples**
Linux **Linux**
.. code-block:: text .. code-block:: text
adapter_name = /dev/dri/renderD128 adapter_name = /dev/dri/renderD128
.. Todo:: macOS .. Todo:: macOS
Windows **Windows**
.. code-block:: text .. code-block:: text
adapter_name = Radeon RX 580 Series adapter_name = Radeon RX 580 Series
@ -251,12 +249,12 @@ Examples
output_name 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**
.. code-block:: bash .. code-block:: bash
xrandr --listmonitors xrandr --listmonitors
@ -267,23 +265,23 @@ Description
.. Todo:: macOS .. Todo:: macOS
Windows **Windows**
.. code-block:: batch .. code-block:: batch
tools\dxgi-info.exe tools\dxgi-info.exe
Default **Default**
Sunshine will select the default display. Sunshine will select the default display.
Examples **Examples**
Linux **Linux**
.. code-block:: text .. code-block:: text
output_name = 0 output_name = 0
.. Todo:: macOS .. Todo:: macOS
Windows **Windows**
.. code-block:: text .. code-block:: text
output_name = \\.\DISPLAY1 output_name = \\.\DISPLAY1
@ -291,16 +289,16 @@ Examples
fps 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**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
fps = [10, 30, 60, 90, 120] fps = [10, 30, 60, 90, 120]
@ -308,16 +306,16 @@ Example
resolutions 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**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
resolutions = [ resolutions = [
@ -336,22 +334,20 @@ Example
dwmflush dwmflush
^^^^^^^^ ^^^^^^^^
Description **Description**
Invoke DwmFlush() to sync screen capture to the Windows presentation interval. Invoke DwmFlush() to sync screen capture to the Windows presentation interval.
.. Caution:: Applies to Windows only. Alleviates visual stuttering during mouse movement. .. Caution:: Applies to Windows only. Alleviates visual stuttering during mouse movement.
If enabled, this feature will automatically deactivate if the client framerate exceeds If enabled, this feature will automatically deactivate if the client framerate exceeds
the host monitor's current refresh rate. the host monitor's current refresh rate.
Default **Default**
``enabled`` ``enabled``
Examples **Example**
.. code-block:: text
Windows dwmflush = enabled
.. code-block:: text
dwmflush = enabled
Audio Audio
----- -----
@ -359,48 +355,48 @@ Audio
audio_sink 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
pacmd list-sinks | grep "name:" pacmd list-sinks | grep "name:"
Linux + pipewire **Linux + pipewire**
.. code-block:: bash .. code-block:: bash
pactl info | grep Source pactl info | grep Source
# in some causes you'd need to use the `Sink` device, if `Source` doesn't work, so try: # in some causes you'd need to use the `Sink` device, if `Source` doesn't work, so try:
pactl info | grep Sink pactl info | grep Sink
macOS **macOS**
Sunshine can only access microphones on macOS due to system limitations. To stream system audio use Sunshine can only access microphones on macOS due to system limitations. To stream system audio use
`Soundflower <https://github.com/mattingalls/Soundflower>`_ or `Soundflower <https://github.com/mattingalls/Soundflower>`_ or
`BlackHole <https://github.com/ExistentialAudio/BlackHole>`_. `BlackHole <https://github.com/ExistentialAudio/BlackHole>`_.
Windows **Windows**
.. code-block:: batch .. code-block:: batch
tools\audio-info.exe tools\audio-info.exe
Default **Default**
Sunshine will select the default audio device. Sunshine will select the default audio device.
Examples **Examples**
Linux **Linux**
.. code-block:: text .. code-block:: text
audio_sink = alsa_output.pci-0000_09_00.3.analog-stereo audio_sink = alsa_output.pci-0000_09_00.3.analog-stereo
macOS **macOS**
.. code-block:: text .. code-block:: text
audio_sink = BlackHole 2ch audio_sink = BlackHole 2ch
Windows **Windows**
.. code-block:: text .. code-block:: text
audio_sink = {0.0.0.00000000}.{FD47D9CC-4218-4135-9CE2-0C195C87405B} audio_sink = {0.0.0.00000000}.{FD47D9CC-4218-4135-9CE2-0C195C87405B}
@ -408,16 +404,16 @@ Examples
virtual_sink virtual_sink
^^^^^^^^^^^^ ^^^^^^^^^^^^
Description **Description**
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`_!
Default **Default**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
virtual_sink = {0.0.0.00000000}.{8edba70c-1125-467c-b89c-15da389bc1d4} virtual_sink = {0.0.0.00000000}.{8edba70c-1125-467c-b89c-15da389bc1d4}
@ -428,13 +424,13 @@ Network
external_ip external_ip
^^^^^^^^^^^ ^^^^^^^^^^^
Description **Description**
If no external IP address is given, Sunshine will attempt to automatically detect external ip-address. If no external IP address is given, Sunshine will attempt to automatically detect external ip-address.
Default **Default**
Automatic Automatic
Example **Example**
.. code-block:: text .. code-block:: text
external_ip = 123.456.789.12 external_ip = 123.456.789.12
@ -442,7 +438,7 @@ Example
port port
^^^^ ^^^^
Description **Description**
Set the family of ports used by Sunshine. Changing this value will offset other ports per the table below. Set the family of ports used by Sunshine. Changing this value will offset other ports per the table below.
.. table:: .. table::
@ -458,18 +454,15 @@ Description
Video 47998 UDP +9 Video 47998 UDP +9
Control 47999 UDP +10 Control 47999 UDP +10
Audio 48000 UDP +11 Audio 48000 UDP +11
tbd 48002 UDP +13 Mic (unused) 48002 UDP +13
================ ============ =========================== ================ ============ ===========================
.. Attention:: Custom ports are only allowed on select Moonlight clients. .. Attention:: Custom ports are only allowed on select Moonlight clients.
.. Todo:: Determine the function of port 48002 UDP. See **Default**
`here <https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide#manual-port-forwarding-advanced>`_.
Default
``47989`` ``47989``
Example **Example**
.. code-block:: text .. code-block:: text
port = 47989 port = 47989
@ -477,13 +470,13 @@ Example
pkey pkey
^^^^ ^^^^
Description **Description**
The private key. This must be 2048 bits. The private key. This must be 2048 bits.
Default **Default**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
pkey = /dir/pkey.pem pkey = /dir/pkey.pem
@ -491,13 +484,13 @@ Example
cert cert
^^^^ ^^^^
Description **Description**
The certificate. Must be signed with a 2048 bit key. The certificate. Must be signed with a 2048 bit key.
Default **Default**
.. Todo:: Unknown .. Todo:: Unknown
Example **Example**
.. code-block:: text .. code-block:: text
cert = /dir/cert.pem cert = /dir/cert.pem
@ -505,7 +498,7 @@ Example
origin_pin_allowed origin_pin_allowed
^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
Description **Description**
The origin of the remote endpoint address that is not denied for HTTP method /pin. The origin of the remote endpoint address that is not denied for HTTP method /pin.
**Choices** **Choices**
@ -521,10 +514,10 @@ Description
wan Anyone may access /pin wan Anyone may access /pin
===== =========== ===== ===========
Default **Default**
``pc`` ``pc``
Example **Example**
.. code-block:: text .. code-block:: text
origin_pin_allowed = pc origin_pin_allowed = pc
@ -532,7 +525,7 @@ Example
origin_web_ui_allowed origin_web_ui_allowed
^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
Description **Description**
The origin of the remote endpoint address that is not denied for HTTPS Web UI. The origin of the remote endpoint address that is not denied for HTTPS Web UI.
**Choices** **Choices**
@ -548,10 +541,10 @@ Description
wan Anyone may access the web ui wan Anyone may access the web ui
===== =========== ===== ===========
Default **Default**
``lan`` ``lan``
Example **Example**
.. code-block:: text .. code-block:: text
origin_web_ui_allowed = lan origin_web_ui_allowed = lan
@ -559,7 +552,7 @@ Example
upnp upnp
^^^^ ^^^^
Description **Description**
Sunshine will attempt to open ports for streaming over the internet. Sunshine will attempt to open ports for streaming over the internet.
**Choices** **Choices**
@ -574,10 +567,10 @@ Description
off disable UPnP off disable UPnP
===== =========== ===== ===========
Default **Default**
``off`` ``off``
Example **Example**
.. code-block:: text .. code-block:: text
upnp = on upnp = on
@ -585,13 +578,13 @@ Example
ping_timeout ping_timeout
^^^^^^^^^^^^ ^^^^^^^^^^^^
Description **Description**
How long to wait in milliseconds for data from Moonlight before shutting down the stream. How long to wait in milliseconds for data from Moonlight before shutting down the stream.
Default **Default**
``10000`` ``10000``
Example **Example**
.. code-block:: text .. code-block:: text
ping_timeout = 10000 ping_timeout = 10000
@ -602,22 +595,22 @@ Encoding
channels channels
^^^^^^^^ ^^^^^^^^
Description **Description**
This will generate distinct video streams, unlike simply broadcasting to multiple Clients. This will generate distinct video streams, unlike simply broadcasting to multiple Clients.
When multicasting, it could be useful to have different configurations for each connected Client. When multicasting, it could be useful to have different configurations for each connected Client.
For instance: For instance:
- 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``
Example **Example**
.. code-block:: text .. code-block:: text
channels = 1 channels = 1
@ -625,18 +618,18 @@ Example
fec_percentage 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``
Range **Range**
``1-255`` ``1-255``
Example **Example**
.. code-block:: text .. code-block:: text
fec_percentage = 20 fec_percentage = 20
@ -644,15 +637,15 @@ Example
qp qp
^^ ^^
Description **Description**
Quantitization Parameter. Some devices don't support Constant Bit Rate. For those devices, QP is used instead. Quantitization 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``
Example **Example**
.. code-block:: text .. code-block:: text
qp = 28 qp = 28
@ -660,17 +653,17 @@ Example
min_threads min_threads
^^^^^^^^^^^ ^^^^^^^^^^^
Description **Description**
Minimum number of threads used by ffmpeg to encode the video. Minimum number of threads used by ffmpeg to encode the video.
.. 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.
Default **Default**
``1`` ``1``
Example **Example**
.. code-block:: text .. code-block:: text
min_threads = 1 min_threads = 1
@ -678,7 +671,7 @@ Example
hevc_mode 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
@ -698,10 +691,10 @@ Description
3 advertise support for HEVC Main and Main10 (HDR) profiles 3 advertise support for HEVC Main and Main10 (HDR) profiles
===== =========== ===== ===========
Default **Default**
``0`` ``0``
Example **Example**
.. code-block:: text .. code-block:: text
hevc_mode = 2 hevc_mode = 2
@ -709,7 +702,7 @@ Example
encoder encoder
^^^^^^^ ^^^^^^^
Description **Description**
Force a specific encoder. Force a specific encoder.
**Choices** **Choices**
@ -725,10 +718,10 @@ Description
software Encoding occurs on the CPU software Encoding occurs on the CPU
======== =========== ======== ===========
Default **Default**
Sunshine will use the first encoder that is available. Sunshine will use the first encoder that is available.
Example **Example**
.. code-block:: text .. code-block:: text
encoder = nvenc encoder = nvenc
@ -736,7 +729,7 @@ Example
sw_preset 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`_.
@ -771,10 +764,10 @@ Description
veryslow slowest veryslow slowest
========= =========== ========= ===========
Default **Default**
``superfast`` ``superfast``
Example **Example**
.. code-block:: text .. code-block:: text
sw_preset = superfast sw_preset = superfast
@ -782,7 +775,7 @@ Example
sw_tune 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`_.
@ -807,10 +800,10 @@ Description
zerolatency good for fast encoding and low-latency streaming zerolatency good for fast encoding and low-latency streaming
=========== =========== =========== ===========
Default **Default**
``zerolatency`` ``zerolatency``
Example **Example**
.. code-block:: text .. code-block:: text
sw_tune = zerolatency sw_tune = zerolatency
@ -818,7 +811,7 @@ Example
nv_preset nv_preset
^^^^^^^^^ ^^^^^^^^^
Description **Description**
The encoder preset to use. The encoder preset to use.
.. Note:: This option only applies when using nvenc `encoder`_. .. Note:: This option only applies when using nvenc `encoder`_.
@ -845,10 +838,10 @@ Description
losslesshp lossless, high performance losslesshp lossless, high performance
========== =========== ========== ===========
Default **Default**
``llhq`` ``llhq``
Example **Example**
.. code-block:: text .. code-block:: text
nv_preset = llhq nv_preset = llhq
@ -856,7 +849,7 @@ Example
nv_rc nv_rc
^^^^^ ^^^^^
Description **Description**
The encoder rate control. The encoder rate control.
.. Note:: This option only applies when using nvenc `encoder`_. .. Note:: This option only applies when using nvenc `encoder`_.
@ -880,10 +873,10 @@ Description
vbr_hq variable bitrate, high quality vbr_hq variable bitrate, high quality
========== =========== ========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
nv_rc = auto nv_rc = auto
@ -891,7 +884,7 @@ Example
nv_coder nv_coder
^^^^^^^^ ^^^^^^^^
Description **Description**
The entropy encoding to use. The entropy encoding to use.
.. Note:: This option only applies when using nvenc `encoder`_. .. Note:: This option only applies when using nvenc `encoder`_.
@ -909,10 +902,10 @@ Description
cavlc cavlc
========== =========== ========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
nv_coder = auto nv_coder = auto
@ -920,7 +913,7 @@ Example
amd_quality 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`_.
@ -938,10 +931,10 @@ Description
balanced balance performance and speed balanced balance performance and speed
========== =========== ========== ===========
Default **Default**
``balanced`` ``balanced``
Example **Example**
.. code-block:: text .. code-block:: text
amd_quality = balanced amd_quality = balanced
@ -949,7 +942,7 @@ Example
amd_rc 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`_.
@ -971,10 +964,10 @@ Description
vbr_peak variable bitrate, peak constrained vbr_peak variable bitrate, peak constrained
=========== =========== =========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
amd_rc = auto amd_rc = auto
@ -982,7 +975,7 @@ Example
amd_coder amd_coder
^^^^^^^^^ ^^^^^^^^^
Description **Description**
The entropy encoding to use. The entropy encoding to use.
.. Note:: This option only applies when using nvenc `encoder`_. .. Note:: This option only applies when using nvenc `encoder`_.
@ -1000,10 +993,10 @@ Description
cavlc cavlc
========== =========== ========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
amd_coder = auto amd_coder = auto
@ -1011,7 +1004,7 @@ Example
vt_software 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.
@ -1030,10 +1023,10 @@ Description
forced force software encoding forced force software encoding
========== =========== ========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
vt_software = auto vt_software = auto
@ -1041,17 +1034,17 @@ Example
vt_realtime 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``
Example **Example**
.. code-block:: text .. code-block:: text
vt_realtime = enabled vt_realtime = enabled
@ -1059,7 +1052,7 @@ Example
vt_coder 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.
@ -1077,10 +1070,10 @@ Description
cavlc cavlc
========== =========== ========== ===========
Default **Default**
``auto`` ``auto``
Example **Example**
.. code-block:: text .. code-block:: text
vt_coder = auto vt_coder = auto
@ -1091,14 +1084,14 @@ Advanced
file_apps file_apps
^^^^^^^^^ ^^^^^^^^^
Description **Description**
The application configuration file path. The file contains a json formatted list of applications that can be started The application configuration file path. The file contains a json formatted list of applications that can be started
by Moonlight. by Moonlight.
Default **Default**
OS and package dependent OS and package dependent
Example **Example**
.. code-block:: text .. code-block:: text
file_apps = apps.json file_apps = apps.json
@ -1106,13 +1099,13 @@ Example
file_state file_state
^^^^^^^^^^ ^^^^^^^^^^
Description **Description**
The file where current state of Sunshine is stored. The file where current state of Sunshine is stored.
Default **Default**
``sunshine_state.json`` ``sunshine_state.json``
Example **Example**
.. code-block:: text .. code-block:: text
file_state = sunshine_state.json file_state = sunshine_state.json
@ -1120,13 +1113,13 @@ Example
credentials_file credentials_file
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
Description **Description**
The file where user credentials for the UI are stored. The file where user credentials for the UI are stored.
Default **Default**
``sunshine_state.json`` ``sunshine_state.json``
Example **Example**
.. code-block:: text .. code-block:: text
credentials_file = sunshine_state.json credentials_file = sunshine_state.json

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/about/installation.rst
Installation Installation
============ ============
The recommended method for running Sunshine is to use the `binaries`_ bundled with the `latest release`_. The recommended method for running Sunshine is to use the `binaries`_ bundled with the `latest release`_.
@ -36,19 +34,19 @@ AppImage
.. image:: https://img.shields.io/github/issues/lizardbyte/sunshine/pkg:appimage?logo=github&style=for-the-badge .. image:: https://img.shields.io/github/issues/lizardbyte/sunshine/pkg:appimage?logo=github&style=for-the-badge
:alt: GitHub issues by-label :alt: GitHub issues by-label
According to AppImageLint the AppImage can run on the following distros. According to AppImageLint the supported distro matrix of the AppImage is below.
- [✖] Debian oldstable (buster) - [✖] Debian oldstable (buster)
- [✔] Debian stable (bullseye) - [✔] Debian stable (bullseye)
- [✔] Debian testing (bookworm) - [✔] Debian testing (bookworm)
- [✔] Debian unstable (sid) - [✔] Debian unstable (sid)
- [✔] Ubuntu jammy - [✔] Ubuntu jammy
- [✔] Ubuntu impish - [✔] Ubuntu impish
- [✔] Ubuntu focal - [✔] Ubuntu focal
- [✖] Ubuntu bionic - [✖] Ubuntu bionic
- [✖] Ubuntu xenial - [✖] Ubuntu xenial
- [✖] Ubuntu trusty - [✖] Ubuntu trusty
- [✖] CentOS 7 - [✖] CentOS 7
#. Download ``sunshine-appimage.zip`` and extract the contents to your home directory. #. Download ``sunshine-appimage.zip`` and extract the contents to your home directory.
#. Open terminal and run the following code. #. Open terminal and run the following code.
@ -58,13 +56,11 @@ According to AppImageLint the AppImage can run on the following distros.
./sunshine.AppImage --install ./sunshine.AppImage --install
Start: Start:
.. code-block:: bash .. code-block:: bash
./sunshine.AppImage --install && ./sunshine.AppImage ./sunshine.AppImage --install && ./sunshine.AppImage
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
./sunshine.AppImage --remove ./sunshine.AppImage --remove
@ -80,7 +76,6 @@ AUR Package
makepkg -fi makepkg -fi
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
pacman -R sunshine pacman -R sunshine
@ -99,7 +94,6 @@ Debian Package
.. Tip:: You can double click the deb file to see details about the package and begin installation. .. Tip:: You can double click the deb file to see details about the package and begin installation.
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
sudo apt remove sunshine sudo apt remove sunshine
@ -123,7 +117,6 @@ Flatpak Package
flatpak install --user sunshine.flatpak flatpak install --user sunshine.flatpak
Start: Start:
X11 and NVFBC capture (X11 Only) X11 and NVFBC capture (X11 Only)
.. code-block:: bash .. code-block:: bash
@ -135,7 +128,6 @@ Start:
sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') flatpak run dev.lizardbyte.sunshine sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') flatpak run dev.lizardbyte.sunshine
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
flatpak uninstall --delete-data sunshine.flatpak flatpak uninstall --delete-data sunshine.flatpak
@ -161,7 +153,6 @@ RPM Package
.. Tip:: You can double click the rpm file to see details about the package and begin installation. .. Tip:: You can double click the rpm file to see details about the package and begin installation.
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
sudo dnf remove sunshine sudo dnf remove sunshine
@ -178,7 +169,6 @@ pkg
#. Download the ``sunshine.pkg`` file and install it as normal. #. Download the ``sunshine.pkg`` file and install it as normal.
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
cd /etc/sunshine/assets cd /etc/sunshine/assets
@ -194,7 +184,6 @@ Portfile
sudo nano /opt/local/etc/macports/sources.conf sudo nano /opt/local/etc/macports/sources.conf
Add this line, replacing your username, below the line that starts with ``rsync``. Add this line, replacing your username, below the line that starts with ``rsync``.
``file:///Users/<username>/ports`` ``file:///Users/<username>/ports``
``Ctrl+x``, then ``Y`` to exit and save changes. ``Ctrl+x``, then ``Y`` to exit and save changes.
@ -212,7 +201,6 @@ Portfile
#. The first time you start Sunshine, you will be asked to grant access to screen recording and your microphone. #. The first time you start Sunshine, you will be asked to grant access to screen recording and your microphone.
Uninstall: Uninstall:
.. code-block:: bash .. code-block:: bash
sudo port uninstall sunshine sudo port uninstall sunshine

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/about/third_party_packages.rst
Third Party Packages Third Party Packages
==================== ====================
@ -15,6 +13,12 @@ Chocolatey
.. image:: https://img.shields.io/chocolatey/dt/sunshine?style=for-the-badge&logo=chocolatey .. image:: https://img.shields.io/chocolatey/dt/sunshine?style=for-the-badge&logo=chocolatey
:alt: Chocolatey :alt: Chocolatey
nixpkgs
-------
.. image:: https://img.shields.io/badge/dynamic/xml?color=orange&label=nixpkgs&style=for-the-badge&prefix=v&query=%2F%2Ftr%5B%40id%3D%27nix_unstable%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Fsunshine%2Fversions&logo=nixos
:alt: nixpgs Version
:target: https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/sunshine/default.nix
Scoop Scoop
----- -----
@ -22,6 +26,12 @@ Scoop
:alt: Scoop Version (extras bucket) :alt: Scoop Version (extras bucket)
:target: https://scoop.sh/#/apps?s=0&d=1&o=true&q=sunshine :target: https://scoop.sh/#/apps?s=0&d=1&o=true&q=sunshine
Solus
-----
.. image:: https://img.shields.io/badge/dynamic/xml?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
:target: https://dev.getsol.us/source/sunshine
Winget Winget
------ ------
.. image:: https://img.shields.io/badge/dynamic/xml?color=orange&label=Winget&style=for-the-badge&prefix=v&query=%2F%2Ftr%5B%40id%3D%27winget%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Fsunshine%2Fversions&logo=microsoft .. image:: https://img.shields.io/badge/dynamic/xml?color=orange&label=Winget&style=for-the-badge&prefix=v&query=%2F%2Ftr%5B%40id%3D%27winget%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Fsunshine%2Fversions&logo=microsoft

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/about/usage.rst
Usage Usage
===== =====
#. See the `setup`_ section for your specific OS. #. See the `setup`_ section for your specific OS.
@ -12,6 +10,7 @@ Usage
.. Tip:: If using the Linux AppImage, replace ``sunshine`` with ``./sunshine.AppImage`` .. Tip:: If using the Linux AppImage, replace ``sunshine`` with ``./sunshine.AppImage``
#. Configure Sunshine in the web ui #. Configure Sunshine in the web ui
The web ui is available on `https://localhost:47990 <https://localhost:47990>`_ by default. You may replace The web ui is available on `https://localhost:47990 <https://localhost:47990>`_ by default. You may replace
`localhost` with your internal ip address. `localhost` with your internal ip address.
@ -20,14 +19,14 @@ Usage
.. Caution:: If running for the first time, make sure to note the username and password Sunshine showed to you, .. Caution:: If running for the first time, make sure to note the username and password Sunshine showed to you,
since you cannot get back later! since you cannot get back later!
Add games and applications. **Add games and applications.**
This can be configured in the web ui. 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 .. 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 list of applications that are started just before running a stream. This is the directory within the GitHub
repo. repo.
.. Attention:: Application list is not fully supported on macOS .. Attention:: Application list is not fully supported on macOS
#. In Moonlight, you may need to add the PC manually. #. In Moonlight, you may need to add the PC manually.
#. When Moonlight request you insert the correct pin on sunshine: #. When Moonlight request you insert the correct pin on sunshine:
@ -46,7 +45,6 @@ The Sunshine user interface will be available on port 47990 by default.
Arguments Arguments
--------- ---------
To get a list of available arguments run the following: To get a list of available arguments run the following:
.. code-block:: bash .. code-block:: bash
sunshine --help sunshine --help
@ -56,7 +54,7 @@ Setup
Linux Linux
^^^^^ ^^^^^
The deb, rpm, and AppImage packages handle these steps automatically. The flatpak does not, third party packages The `deb`, `rpm`, and `AppImage` packages handle these steps automatically. The flatpak does not, third party packages
also may not. also may not.
Sunshine needs access to `uinput` to create mouse and gamepad events. Sunshine needs access to `uinput` to create mouse and gamepad events.
@ -73,9 +71,9 @@ Sunshine needs access to `uinput` to create mouse and gamepad events.
sudo tee /etc/udev/rules.d/85-sunshine-input.rules sudo tee /etc/udev/rules.d/85-sunshine-input.rules
#. Optionally, configure autostart service #. Optionally, configure autostart service
- filename: ``~/.config/systemd/user/sunshine.service``
- contents:
- filename: ``~/.config/systemd/user/sunshine.service``
- contents:
.. code-block:: .. code-block::
[Unit] [Unit]
@ -100,12 +98,12 @@ Sunshine needs access to `uinput` to create mouse and gamepad events.
Flatpak flatpak run dev.lizardbyte.sunshine ✖ Flatpak flatpak run dev.lizardbyte.sunshine ✖
======== ============================================== =============== ======== ============================================== ===============
Start once **Start once**
.. code-block:: bash .. code-block:: bash
systemctl --user start sunshine systemctl --user start sunshine
Start on boot **Start on boot**
.. code-block:: bash .. code-block:: bash
systemctl --user enable sunshine systemctl --user enable sunshine
@ -114,12 +112,12 @@ Sunshine needs access to `uinput` to create mouse and gamepad events.
.. Note:: ``cap_sys_admin`` may as well be root, except you don't need to be root to run it. It is necessary to .. 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. allow Sunshine to use KMS.
Enable **Enable**
.. code-block:: bash .. code-block:: bash
sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine)) sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))
Disable **Disable**
.. code-block:: bash .. code-block:: bash
sudo setcap -r $(readlink -f $(which sunshine)) sudo setcap -r $(readlink -f $(which sunshine))
@ -141,8 +139,7 @@ select their sink as audio device in `sunshine.conf`.
.. Caution:: Gamepads are not currently supported. .. Caution:: Gamepads are not currently supported.
Configure autostart service Configure autostart service
**MacPorts**
MacPorts
.. code-block:: bash .. code-block:: bash
sudo port load Sunshine sudo port load Sunshine
@ -153,10 +150,10 @@ For gamepad support, install `ViGEmBus <https://github.com/ViGEm/ViGEmBus/releas
Shortcuts Shortcuts
--------- ---------
All shortcuts start with CTRL + ALT + SHIFT, just like Moonlight 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 + N`` - Hide/Unhide the cursor (This may be useful for Remote Desktop Mode for Moonlight)
- ``CTRL + ALT + SHIFT + F1/F13`` - Switch to different monitor for Streaming - ``CTRL + ALT + SHIFT + F1/F13`` - Switch to different monitor for Streaming
Application List Application List
---------------- ----------------
@ -169,22 +166,21 @@ Application List
- ``"Variable name":"Variable value"`` - ``"Variable name":"Variable value"``
- ``apps`` - The list of applications - ``apps`` - The list of applications
- Example application: - Example application:
.. code-block:: json .. code-block:: json
{ {
"name":"An App", "name":"An App",
"cmd":"command to open app", "cmd":"command to open app",
"prep-cmd":[ "prep-cmd":[
{ {
"do":"some-command", "do":"some-command",
"undo":"undo-that-command" "undo":"undo-that-command"
} }
], ],
"detached":[ "detached":[
"some-command", "some-command",
"another-command" "another-command"
] ]
} }
- ``name`` - The name of the application/game - ``name`` - The name of the application/game
@ -192,24 +188,28 @@ Application List
- ``detached`` - A list of commands to be run and forgotten about - ``detached`` - A list of commands to be run and forgotten about
- ``prep-cmd`` - A list of commands to be run before/after the application - ``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 - If any of the prep-commands fail, starting the application is aborted
- ``do`` - Run before the application - ``do`` - Run before the application
- If it fails, all ``undo`` commands of the previously succeeded ``do`` commands are run - If it fails, all ``undo`` commands of the previously succeeded ``do`` commands are run
- ``undo`` - Run after the application has terminated - ``undo`` - Run after the application has terminated
- This should not fail considering it is supposed to undo the ``do`` commands - This should not fail considering it is supposed to undo the ``do`` commands
- If it fails, Sunshine is terminated - If it fails, Sunshine is terminated
- ``cmd`` - The main application - ``cmd`` - The main application
- If not specified, a process is started that sleeps indefinitely - If not specified, a process is started that sleeps indefinitely
Considerations Considerations
-------------- --------------
- When an application is started, if there is an application already running, it will be terminated. - 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. - 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.
- In addition to the apps listed, one app "Desktop" is hardcoded into Sunshine. It does not start an application, - In addition to the apps listed, one app "Desktop" is hardcoded into Sunshine. It does not start an application,
instead it simply starts a stream. instead it simply starts a stream.
- For the Linux flatpak you must prepend commands with ``flatpak-spawn --host``. - For the Linux flatpak you must prepend commands with ``flatpak-spawn --host``.

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/building/build.rst
Build Build
===== =====
Sunshine binaries are built using `CMake <https://cmake.org/>`_. Cross compilation is not Sunshine binaries are built using `CMake <https://cmake.org/>`_. Cross compilation is not
@ -11,7 +9,6 @@ Building Locally
Clone Clone
^^^^^ ^^^^^
Ensure `git <https://git-scm.com/>`_ is installed and run the following: Ensure `git <https://git-scm.com/>`_ is installed and run the following:
.. code-block:: bash .. code-block:: bash
git clone https://github.com/lizardbyte/sunshine.git --recurse-submodules git clone https://github.com/lizardbyte/sunshine.git --recurse-submodules

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/building/linux.rst
Linux Linux
===== =====

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/building/macos.rst
macOS macOS
===== =====
@ -30,14 +28,13 @@ 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
cmake .. cmake ..
make -j ${nproc} make -j ${nproc}
cpack -G DragNDrop # optionally, create a macOS dmg package cpack -G DragNDrop # optionally, create a macOS dmg package
If cmake fails complaining to find Boost, try to set the path explicitly. If cmake fails complaining to find Boost, try to set the path explicitly.
``cmake -DBOOST_ROOT=[boost path] ..``, e.g., ``cmake -DBOOST_ROOT=/opt/local/libexec/boost/1.76 ..`` ``cmake -DBOOST_ROOT=[boost path] ..``, e.g., ``cmake -DBOOST_ROOT=/opt/local/libexec/boost/1.76 ..``

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/building/windows.rst
Windows Windows
======= =======
@ -10,18 +8,20 @@ following packages using:
.. code-block:: bash .. code-block:: bash
pacman -S mingw-w64-x86_64-binutils mingw-w64-x86_64-openssl mingw-w64-x86_64-cmake mingw-w64-x86_64-toolchain mingw-w64-x86_64-opus mingw-w64-x86_64-x265 mingw-w64-x86_64-boost git mingw-w64-x86_64-make cmake make gcc pacman -S mingw-w64-x86_64-binutils mingw-w64-x86_64-openssl mingw-w64-x86_64-cmake \
mingw-w64-x86_64-toolchain mingw-w64-x86_64-opus mingw-w64-x86_64-x265 mingw-w64-x86_64-boost \
git mingw-w64-x86_64-make cmake make gcc
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
cmake -G"Unix Makefiles" .. cmake -G"Unix Makefiles" ..
cmake -G"MinGW Makefiles" .. # alternatively cmake -G"MinGW Makefiles" .. # alternatively
mingw32-make mingw32-make
cpack -G NSIS # optionally, create a windows installer cpack -G NSIS # optionally, create a windows installer
cpack -G ZIP # optionally, create a windows standalone package cpack -G ZIP # optionally, create a windows standalone package

View File

@ -73,23 +73,11 @@ html_logo = os.path.join(root_dir, 'sunshine.png')
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes. # a list of builtin themes.
html_theme = 'sphinx_rtd_theme' html_theme = 'furo'
html_theme_options = { html_theme_options = {
# 'analytics_id': 'G-XXXXXXXXXX', # Provided by Google in your dashboard "top_of_page_button": "edit",
# 'analytics_anonymize_ip': False, "source_edit_link": "https://github.com/lizardbyte/sunshine/tree/nightly/docs/source/{filename}",
'logo_only': False,
'display_version': False,
'prev_next_buttons_location': 'bottom',
'style_external_links': True,
'vcs_pageview_mode': 'blob',
'style_nav_header_background': '#151515',
# Toc options
'collapse_navigation': True,
'sticky_navigation': True,
'navigation_depth': 4,
'includehidden': True,
'titles_only': False,
} }
# extension config options # extension config options

View File

@ -1,39 +1,5 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/contributing/contributing.rst
Contributing Contributing
============ ============
.. Tip:: If this is your first time contributing to an open source project, it is a good idea to read Read our contribution guide in our organization level
MDN's `Basic etiquette for open source projects`_ first. There are a few best practices to adopt that will help `docs <https://lizardbyte.readthedocs.io/en/latest/developers/contributing.html>`_.
ensure that you and the other project contributors feel valued and safe, and stay productive.
#. Fork the repo on GitHub
#. Create a new branch for the feature you are adding or the issue you are fixing
.. Tip:: Base the new branch off the `nightly` branch. It will make your life easier when you submit the PR!
#. Make changes, push commits, etc.
#. Files should contain an empty line at the end.
#. Document your code!
#. Test your code!
#. When ready create a PR to this repo on the `nightly` branch.
.. Hint:: If you accidentally make your PR against a different branch, a bot will comment letting you know it's on
the wrong branch. Don't worry. You can edit the PR to change the target branch. There is no reason to close the
PR!
.. Note:: Draft PRs are also welcome as you work through issues. The benefit of creating a draft PR is that an
automated build can run in a github runner.
.. Attention:: Do not expect partially complete PRs to be merged. These topics will be considered before merging.
- Does the code follows the style guidelines of this project?
.. Tip:: Look at examples of existing code in the project!
- Is the code well commented?
- Were documentation blocks updated for new or modified components?
.. Note:: Developers and maintainers will attempt to assist with challenging issues.
.. _Basic etiquette for open source projects: https://developer.mozilla.org/en-US/docs/MDN/Contribute/Open_source_etiquette

View File

@ -1,5 +1,3 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/contributing/localization.rst
Localization Localization
============ ============
Sunshine is being localized into various languages. The default language is `en` (English) and is highlighted green. Sunshine is being localized into various languages. The default language is `en` (English) and is highlighted green.
@ -24,15 +22,15 @@ Only elements of the API are planned to be translated.
.. Attention:: The rest API has not yet been implemented. .. Attention:: The rest API has not yet been implemented.
Translations Basics **Translations Basics**
- The brand names `LizardByte` and `Sunshine` should never be translated. - The brand names `LizardByte` and `Sunshine` should never be translated.
- Other brand names should never be translated. - Other brand names should never be translated.
Examples: Examples:
- AMD - AMD
- Nvidia - Nvidia
CrowdIn Integration **CrowdIn Integration**
How does it work? How does it work?
When a change is made to sunshine source code, a workflow generates new translation templates When a change is made to sunshine source code, a workflow generates new translation templates
@ -47,15 +45,14 @@ Extraction
There should be minimal cases where strings need to be extracted from source code; however it may be necessary in some There should be minimal cases where strings need to be extracted from source code; however it may be necessary in some
situations. For example if a system tray icon is added it should be localized as it is user interfacing. situations. For example if a system tray icon is added it should be localized as it is user interfacing.
- Wrap the string to be extracted in a function as shown. - Wrap the string to be extracted in a function as shown.
.. code-block:: cpp
.. code-block:: cpp #include <boost/locale.hpp>
boost::locale::translate("Hello world!")
#include <boost/locale.hpp> .. Tip:: More examples can be found in the documentation for
boost::locale::translate("Hello world!") `boost locale <https://www.boost.org/doc/libs/1_70_0/libs/locale/doc/html/messages_formatting.html>`_.
.. 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>`_.
.. 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.
@ -65,20 +62,20 @@ used by CrowdIn to generate language specific template files. The file is genera
`.github/workflows/localize.yml` workflow and is run on any push event into the `nightly` branch. Jobs are only run if `.github/workflows/localize.yml` workflow and is run on any push event into the `nightly` branch. Jobs are only run if
any of the following paths are modified. any of the following paths are modified.
.. code-block:: yaml .. code-block:: yaml
- 'src/**' - 'src/**'
When testing locally it may be desirable to manually extract, initialize, update, and compile strings. Python is When testing locally it may be desirable to manually extract, initialize, update, and compile strings. Python is
required for this, along with the python dependencies in the `./scripts/requirements.txt` file. Additionally, required for this, along with the python dependencies in the `./scripts/requirements.txt` file. Additionally,
`xgettext <https://www.gnu.org/software/gettext/>`_ must be installed. `xgettext <https://www.gnu.org/software/gettext/>`_ must be installed.
Extract, initialize, and update **Extract, initialize, and update**
.. code-block:: bash .. code-block:: bash
python ./scripts/_locale.py --extract --init --update python ./scripts/_locale.py --extract --init --update
Compile **Compile**
.. code-block:: bash .. code-block:: bash
python ./scripts/_locale.py --compile python ./scripts/_locale.py --compile

View File

@ -1,12 +1,10 @@
:github_url: https://github.com/RetroArcher/RetroArcher/tree/nightly/docs/source/contributing/testing.rst
Testing Testing
======= =======
Clang Format Clang Format
------------ ------------
Source code is tested against the `.clang-format` file for linting errors. The workflow file responsible for clang Source code is tested against the `.clang-format` file for linting errors. The workflow file responsible for clang
format testing is `.github/workflows/clang.yml`. format testing is `.github/workflows/cpp-clang-format-lint.yml`.
Test clang-format locally. Test clang-format locally.
.. Todo:: This documentation needs to be improved. .. Todo:: This documentation needs to be improved.
@ -17,9 +15,9 @@ Test clang-format locally.
Sphinx Sphinx
------ ------
Sunshine uses `Sphinx <https://www.sphinx-doc.org/en/master/>`_ for documentation building. Sphinx is included Sunshine uses `Sphinx <https://www.sphinx-doc.org/en/master/>`_ for documentation building. Sphinx, along with other
in the `./scripts/requirements.txt` file. Python is required to build sphinx docs. Installation and setup of python required documentation depencies are included in the `./docs/requirements.txt` file. Python is required to build
will not be covered here. sphinx docs. Installation and setup of python will not be covered here.
The config file for Sphinx is `docs/source/conf.py`. This is already included in the repo and should not be modified. The config file for Sphinx is `docs/source/conf.py`. This is already included in the repo and should not be modified.

View File

@ -1,22 +1,17 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/troubleshooting/general.rst
General General
======= =======
If you forgot your credentials to the web UI, try this. If you forgot your credentials to the web UI, try this.
.. code-block:: bash .. code-block:: bash
sunshine -creds <new username> <new password> sunshine -creds <new username> <new password>
Can't access the web UI? Can't access the web UI?
#. Check firefall rules. #. Check firefall rules.
NvFBC, NvENC, or general issues with Nvidia graphics card. NvFBC, NvENC, or general issues with Nvidia graphics card.
- Consumer grade Nvidia cards are software limited to a specific number of encodes. See
- Consume grade Nvidia cards are software limited to a specific number of encodes. See `Video Encode and Decode GPU Support Matrix <https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new>`_
`Video Encode and Decode GPU Support Matrix <https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new>`_ for more info.
for more info. - You can usually bypass the restriction with a driver patch. See Keylase's
- You can usually bypass the restriction with a driver patch. See Keylase's `Linux <https://github.com/keylase/nvidia-patch>`_
`Linux <https://github.com/keylase/nvidia-patch>`_ or `Windows <https://github.com/keylase/nvidia-patch/blob/master/win>`_ patches for more guidance.
or `Windows <https://github.com/keylase/nvidia-patch/blob/master/win>`_ patches for more guidance.

View File

@ -1,9 +1,6 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/troubleshooting/linux.rst
Linux Linux
===== =====
If screencasting fails with KMS, you may need to run the following to force unprivileged screencasting. If screencasting fails with KMS, you may need to run the following to force unprivileged screencasting.
.. code-block:: bash .. code-block:: bash
sudo setcap -r $(readlink -f $(which sunshine)) sudo setcap -r $(readlink -f $(which sunshine))

View File

@ -1,29 +1,10 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/troubleshooting/macos.rst
macOS macOS
===== =====
If you get this error: If you get this error:
`Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that
``Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!`
org.freedesktop.dbus-session.plist is loaded!``
Try this. Try this.
.. code-block:: bash .. code-block:: bash
launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist
Uninstall:
- pkg
.. code-block:: bash
sudo chmod +x /opt/local/etc/sunshine/assets/uninstall_pkg.sh
sudo /opt/local/etc/sunshine/assets/uninstall_pkg.sh
- Portfile
.. code-block:: bash
sudo port uninstall Sunshine

View File

@ -1,7 +1,4 @@
:github_url: https://github.com/LizardByte/Sunshine/tree/nightly/docs/source/troubleshooting/windows.rst
Windows Windows
======= =======
No gamepad is detected. No gamepad is detected.
#. Verify that you've installed `ViGEmBus <https://github.com/ViGEm/ViGEmBus/releases/latest>`_. #. Verify that you've installed `ViGEmBus <https://github.com/ViGEm/ViGEmBus/releases/latest>`_.

View File

@ -1,5 +1 @@
Babel==2.10.3 Babel==2.10.3
m2r2==0.3.2
Sphinx==5.3.0
sphinx-copybutton==0.5.0
sphinx-rtd-theme==1.0.0