App Examples#
Since not all applications behave the same, we decided to create some examples to help you get started adding games and applications to Sunshine.
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).
Note
When a working directory is not specified, it defaults to the folder where the target application resides.
Common Examples#
Desktop#
Field |
Value |
Application Name |
|
Image |
|
Steam Big Picture#
Note
Steam is launched as a detached command because Steam starts with a process that self updates itself and the original process is killed.
Application Name |
|
Detached Commands |
|
Image |
|
Application Name |
|
Detached Commands |
|
Image |
|
Application Name |
|
Command |
|
Image |
|
Epic Game Store game#
Note
Using URI method will be the most consistent between various games.
URI (Epic)#
Application Name |
|
Command |
|
Binary (Epic w/ working directory)#
Application Name |
|
Command |
|
Working Directory |
|
Binary (Epic w/o working directory)#
Application Name |
|
Command |
|
Steam game#
Note
Using URI method will be the most consistent between various games.
URI (Steam)#
Application Name |
|
Detached Commands |
|
Application Name |
|
Detached Commands |
|
Application Name |
|
Command |
|
Binary (Steam w/ working directory)#
Application Name |
|
Command |
|
Working Directory |
|
Application Name |
|
Command |
|
Working Directory |
|
Application Name |
|
Command |
|
Working Directory |
|
Binary (Steam w/o working directory)#
Application Name |
|
Command |
|
Application Name |
|
Command |
|
Application Name |
|
Command |
|
Prep Commands#
Changing Resolution and Refresh Rate#
Command Preparations |
Do: |
Undo: |
Hint
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: bash -c "${HOME}/scripts/set-custom-res.sh \"${SUNSHINE_CLIENT_WIDTH}\" \"${SUNSHINE_CLIENT_HEIGHT}\" \"${SUNSHINE_CLIENT_FPS}\""
- The
set-custom-res.sh
will have this content: #!/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
Command Preparations |
Do: |
Undo: |
Command Preparations |
Do: |
Undo: |
Command Preparations |
Do: |
Undo: |
- The
set-custom-res.sh
will have this content: #!/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 }"
Note
This example uses the displayplacer tool to change the resolution. This tool can be installed following instructions in their GitHub repository.
Command Preparations |
Do: |
Undo: |
Note
This example uses the QRes tool to change the resolution and refresh rate. This tool can be downloaded from their SourceForge repository.
Command Preparations |
Do: |
Undo: |
Additional Considerations#
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
.
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
{ "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": "" }