mirror of
https://github.com/LizardByte/Sunshine.git
synced 2026-10-23 03:28:06 +09:00
docs: migrate documentation to Dockle (#5749)
This commit is contained in:
1 parent
7e4a740104
commit
3a8dcea0df
29 files changed
+234
-495
No files matched your search
+2
-1
@@ -40,7 +40,8 @@
|
|||||||
# build directories
|
# build directories
|
||||||
build/
|
build/
|
||||||
cmake-*/
|
cmake-*/
|
||||||
docs/doxyconfig*
|
/.dockle/
|
||||||
|
/_site/
|
||||||
|
|
||||||
# npm
|
# npm
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|||||||
+3
-3
@@ -6,9 +6,9 @@
|
|||||||
path = third-party/build-deps
|
path = third-party/build-deps
|
||||||
url = https://github.com/LizardByte/build-deps.git
|
url = https://github.com/LizardByte/build-deps.git
|
||||||
branch = master
|
branch = master
|
||||||
[submodule "third-party/doxyconfig"]
|
[submodule "third-party/dockle"]
|
||||||
path = third-party/doxyconfig
|
path = third-party/dockle
|
||||||
url = https://github.com/LizardByte/doxyconfig.git
|
url = https://github.com/LizardByte/dockle.git
|
||||||
branch = master
|
branch = master
|
||||||
[submodule "third-party/glad"]
|
[submodule "third-party/glad"]
|
||||||
path = third-party/glad
|
path = third-party/glad
|
||||||
|
|||||||
+10
-9
@@ -8,22 +8,23 @@ version: 2
|
|||||||
build:
|
build:
|
||||||
os: ubuntu-24.04
|
os: ubuntu-24.04
|
||||||
tools:
|
tools:
|
||||||
|
nodejs: "24"
|
||||||
python: "miniconda-latest"
|
python: "miniconda-latest"
|
||||||
commands:
|
jobs:
|
||||||
|
build:
|
||||||
|
html:
|
||||||
- |
|
- |
|
||||||
if [ -f readthedocs_build.sh ]; then
|
if [ -f readthedocs_build.sh ]; then
|
||||||
doxyconfig_dir="."
|
dockle_dir="."
|
||||||
else
|
else
|
||||||
doxyconfig_dir="./third-party/doxyconfig"
|
dockle_dir="./third-party/dockle"
|
||||||
fi
|
fi
|
||||||
chmod +x "${doxyconfig_dir}/readthedocs_build.sh"
|
chmod +x "${dockle_dir}/readthedocs_build.sh"
|
||||||
export DOXYCONFIG_DIR="${doxyconfig_dir}"
|
export DOCKLE_DIR="${dockle_dir}"
|
||||||
"${doxyconfig_dir}/readthedocs_build.sh"
|
"${dockle_dir}/readthedocs_build.sh"
|
||||||
|
|
||||||
# using conda, we can get newer doxygen and graphviz than ubuntu provide
|
|
||||||
# https://github.com/readthedocs/readthedocs.org/issues/8151#issuecomment-890359661
|
|
||||||
conda:
|
conda:
|
||||||
environment: third-party/doxyconfig/environment.yml
|
environment: third-party/dockle/environment.yml
|
||||||
|
|
||||||
submodules:
|
submodules:
|
||||||
include: all
|
include: all
|
||||||
|
|||||||
@@ -155,16 +155,3 @@ The architectures supported by these images are shown in the table below.
|
|||||||
| debian-bookworm | ✅ | ✅ |
|
| debian-bookworm | ✅ | ✅ |
|
||||||
| ubuntu-22.04 | ✅ | ✅ |
|
| ubuntu-22.04 | ✅ | ✅ |
|
||||||
| ubuntu-24.04 | ✅ | ✅ |
|
| ubuntu-24.04 | ✅ | ✅ |
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:-------------------------------|-----------------------------------------------------:|
|
|
||||||
| [Changelog](docs/changelog.md) | [Third-Party Packages](docs/third_party_packages.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -521,16 +521,3 @@ Thank you to all the contributors who have helped make Sunshine better!
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src='https://cdn.jsdelivr.net/gh/LizardByte/contributors@dist/crowdin.606145.svg' alt="CrowdIn contributors"/>
|
<img src='https://cdn.jsdelivr.net/gh/LizardByte/contributors@dist/crowdin.606145.svg' alt="CrowdIn contributors"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:---------|-------------------------------------------:|
|
|
||||||
| | [Getting Started](docs/getting_started.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -97,7 +97,8 @@ add_custom_target(web-ui ALL
|
|||||||
|
|
||||||
# docs
|
# docs
|
||||||
if(BUILD_DOCS)
|
if(BUILD_DOCS)
|
||||||
add_subdirectory(third-party/doxyconfig docs)
|
include(third-party/dockle/cmake/Dockle.cmake)
|
||||||
|
dockle_add_docs(docs TARGETS docs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# tests
|
# tests
|
||||||
|
|||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
[project]
|
||||||
|
name = "Sunshine"
|
||||||
|
version = "0.0.0"
|
||||||
|
description = "Self-hosted game stream host for Moonlight."
|
||||||
|
repository = "https://github.com/LizardByte/Sunshine"
|
||||||
|
logo = "sunshine.svg"
|
||||||
|
favicon = "sunshine.ico"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
output = "_site"
|
||||||
|
work = ".dockle"
|
||||||
|
strict = true
|
||||||
|
clean = true
|
||||||
|
|
||||||
|
[[targets]]
|
||||||
|
name = "docs"
|
||||||
|
title = "Sunshine documentation"
|
||||||
|
framework = "doxygen"
|
||||||
|
source = "."
|
||||||
|
home = true
|
||||||
|
|
||||||
|
[targets.doxygen]
|
||||||
|
inputs = [
|
||||||
|
"README.md",
|
||||||
|
"docs/getting_started.md",
|
||||||
|
"docs/changelog.md",
|
||||||
|
"DOCKER_README.md",
|
||||||
|
"docs/third_party_packages.md",
|
||||||
|
"docs/gamestream_migration.md",
|
||||||
|
"docs/legal.md",
|
||||||
|
"docs/configuration.md",
|
||||||
|
"docs/app_examples.md",
|
||||||
|
"docs/awesome_sunshine.md",
|
||||||
|
"docs/guides.md",
|
||||||
|
"docs/performance_tuning.md",
|
||||||
|
"docs/api.md",
|
||||||
|
"docs/troubleshooting.md",
|
||||||
|
"docs/building.md",
|
||||||
|
"docs/contributing.md",
|
||||||
|
"src",
|
||||||
|
]
|
||||||
|
image_paths = ["docs/images"]
|
||||||
|
predefined = [
|
||||||
|
"__APPLE__",
|
||||||
|
"linux",
|
||||||
|
"__linux",
|
||||||
|
"__linux__",
|
||||||
|
"__MACH__",
|
||||||
|
"_WIN32",
|
||||||
|
"SUNSHINE_BUILD_WAYLAND",
|
||||||
|
"SUNSHINE_TRAY=1",
|
||||||
|
]
|
||||||
|
extra_stylesheets = [
|
||||||
|
"docs/doc-styles.css",
|
||||||
|
"https://cdn.jsdelivr.net/npm/@lizardbyte/shared-web@2026.920.12131/dist/crowdin-dockle-css.css",
|
||||||
|
]
|
||||||
|
extra_javascript = [
|
||||||
|
"https://cdn.jsdelivr.net/npm/@lizardbyte/shared-web@2026.920.12131/dist/crowdin.js",
|
||||||
|
"docs/crowdin.js",
|
||||||
|
]
|
||||||
|
extra_files = ["docs/api.js", "docs/configuration.js"]
|
||||||
|
aliases = ["api_examples{3|:|}=@htmlonly<script>(function() { let examples = generateExamples('\\1', '\\2', \\3); document.write(createTabs(examples)); })();</script>@endhtmlonly"]
|
||||||
|
main_page = "README.md"
|
||||||
|
dot_graph_max_nodes = 60
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
# This file describes the settings to be used by the documentation system
|
|
||||||
# doxygen (www.doxygen.org) for a project.
|
|
||||||
#
|
|
||||||
# All text after a double hash (##) is considered a comment and is placed in
|
|
||||||
# front of the TAG it is preceding.
|
|
||||||
#
|
|
||||||
# All text after a single hash (#) is considered a comment and will be ignored.
|
|
||||||
# The format is:
|
|
||||||
# TAG = value [value, ...]
|
|
||||||
# For lists, items can also be appended using:
|
|
||||||
# TAG += value [value, ...]
|
|
||||||
# Values that contain spaces should be placed between quotes (\" \").
|
|
||||||
#
|
|
||||||
# Note:
|
|
||||||
#
|
|
||||||
# Use doxygen to compare the used configuration file with the template
|
|
||||||
# configuration file:
|
|
||||||
# doxygen -x [configFile]
|
|
||||||
# Use doxygen to compare the used configuration file with the template
|
|
||||||
# configuration file without replacing the environment variables or CMake type
|
|
||||||
# replacement variables:
|
|
||||||
# doxygen -x_noenv [configFile]
|
|
||||||
|
|
||||||
# project metadata
|
|
||||||
DOCSET_BUNDLE_ID = dev.lizardbyte.Sunshine
|
|
||||||
DOCSET_PUBLISHER_ID = dev.lizardbyte.Sunshine.documentation
|
|
||||||
PROJECT_BRIEF = "Self-hosted game stream host for Moonlight."
|
|
||||||
PROJECT_ICON = ../sunshine.ico
|
|
||||||
PROJECT_LOGO = ../sunshine.svg
|
|
||||||
PROJECT_NAME = Sunshine
|
|
||||||
|
|
||||||
# project specific settings
|
|
||||||
DOT_GRAPH_MAX_NODES = 60
|
|
||||||
IMAGE_PATH = ../docs/images
|
|
||||||
PREDEFINED += SUNSHINE_BUILD_WAYLAND
|
|
||||||
PREDEFINED += SUNSHINE_TRAY=1
|
|
||||||
|
|
||||||
# files and directories to process
|
|
||||||
USE_MDFILE_AS_MAINPAGE = ../README.md
|
|
||||||
INPUT = ../README.md \
|
|
||||||
getting_started.md \
|
|
||||||
changelog.md \
|
|
||||||
../DOCKER_README.md \
|
|
||||||
third_party_packages.md \
|
|
||||||
gamestream_migration.md \
|
|
||||||
legal.md \
|
|
||||||
configuration.md \
|
|
||||||
app_examples.md \
|
|
||||||
awesome_sunshine.md \
|
|
||||||
guides.md \
|
|
||||||
performance_tuning.md \
|
|
||||||
api.md \
|
|
||||||
troubleshooting.md \
|
|
||||||
building.md \
|
|
||||||
contributing.md \
|
|
||||||
../third-party/doxyconfig/docs/source_code.md \
|
|
||||||
../src
|
|
||||||
|
|
||||||
# extra css
|
|
||||||
HTML_EXTRA_STYLESHEET += doc-styles.css
|
|
||||||
|
|
||||||
# extra js
|
|
||||||
HTML_EXTRA_FILES += api.js
|
|
||||||
HTML_EXTRA_FILES += configuration.js
|
|
||||||
|
|
||||||
# custom aliases
|
|
||||||
ALIASES += api_examples{3|}="@htmlonly<script>(function() { let examples = generateExamples('\1', '\2', \3); document.write(createTabs(examples)); })();</script>@endhtmlonly"
|
|
||||||
+19
-94
@@ -43,102 +43,27 @@ requests.${method.trim().toLowerCase()}(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function escapeHtml(value) {
|
||||||
* @brief Create a stable signed 32-bit hash for a string.
|
return value
|
||||||
*
|
.replaceAll('&', '&')
|
||||||
* @param {string} str String to hash.
|
.replaceAll('<', '<')
|
||||||
* @return {number} Signed 32-bit hash value.
|
.replaceAll('>', '>')
|
||||||
*/
|
.replaceAll('"', '"')
|
||||||
function hashString(str) {
|
.replaceAll("'", ''');
|
||||||
let hash = 0;
|
|
||||||
const signedHash = new Int32Array(1);
|
|
||||||
for (const character of str) {
|
|
||||||
const codePoint = character.codePointAt(0);
|
|
||||||
hash = hash * 31 + codePoint;
|
|
||||||
signedHash[0] = hash;
|
|
||||||
hash = signedHash[0];
|
|
||||||
}
|
|
||||||
return hash;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function createTabs(examples) {
|
function createTabs(examples) {
|
||||||
const languages = Object.keys(examples);
|
const languages = {
|
||||||
let tabs = '<div class="tabs-overview-container"><div class="tabs-overview">';
|
cURL: 'bash',
|
||||||
let content = '<div class="tab-content">';
|
Python: 'python',
|
||||||
|
JavaScript: 'javascript',
|
||||||
|
PowerShell: 'powershell'
|
||||||
|
};
|
||||||
|
const tabs = Object.entries(examples).map(([label, example]) => `
|
||||||
|
<li>
|
||||||
|
<strong class="dockle-tab-title">${escapeHtml(label)}</strong>
|
||||||
|
<pre data-dockle-language="${languages[label]}"><code>${escapeHtml(example)}</code></pre>
|
||||||
|
</li>`).join('');
|
||||||
|
|
||||||
languages.forEach((lang, index) => {
|
return `<div class="dockle-tabs dockle-tabs-alias" data-dockle-tab-group="api-language"><ul>${tabs}</ul></div>`;
|
||||||
const hash = hashString(examples[lang]);
|
|
||||||
tabs += `<button class="tab-button ${index === 0 ? 'active' : ''}" onclick="openTab(event, '${lang}')"><b class="tab-title" title=" ${lang} "> ${lang} </b></button>`;
|
|
||||||
content += `<div id="${lang}" class="tabcontent" style="display: ${index === 0 ? 'block' : 'none'};">
|
|
||||||
<div class="doxygen-awesome-fragment-wrapper">
|
|
||||||
<div class="fragment">
|
|
||||||
${examples[lang].split('\n').map(line => `<div class="line">${line}</div>`).join('')}
|
|
||||||
</div>
|
|
||||||
<doxygen-awesome-fragment-copy-button id="copy-button-${lang}-${hash}" title="Copy to clipboard">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
|
|
||||||
<path d="M0 0h24v24H0V0z" fill="none"></path>
|
|
||||||
<path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path>
|
|
||||||
</svg>
|
|
||||||
</doxygen-awesome-fragment-copy-button>
|
|
||||||
</div>
|
|
||||||
</div>`;
|
|
||||||
});
|
|
||||||
|
|
||||||
tabs += '</div></div>';
|
|
||||||
content += '</div>';
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
languages.forEach((lang, index) => {
|
|
||||||
const hash = hashString(examples[lang]);
|
|
||||||
const copyButton = document.getElementById(`copy-button-${lang}-${hash}`);
|
|
||||||
copyButton.addEventListener('click', copyContent);
|
|
||||||
});
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
return tabs + content;
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyContent() {
|
|
||||||
const content = this.previousElementSibling.cloneNode(true);
|
|
||||||
if (content instanceof Element) {
|
|
||||||
// filter out line number from file listings
|
|
||||||
content.querySelectorAll(".lineno, .ttc").forEach((node) => {
|
|
||||||
node.remove();
|
|
||||||
});
|
|
||||||
let textContent = Array.from(content.querySelectorAll('.line'))
|
|
||||||
.map(line => line.innerText)
|
|
||||||
.join('\n')
|
|
||||||
.trim(); // Join lines with newline characters and trim leading/trailing whitespace
|
|
||||||
navigator.clipboard.writeText(textContent);
|
|
||||||
this.classList.add("success");
|
|
||||||
this.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`;
|
|
||||||
window.setTimeout(() => {
|
|
||||||
this.classList.remove("success");
|
|
||||||
this.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`;
|
|
||||||
}, 980);
|
|
||||||
} else {
|
|
||||||
console.error('Failed to copy: content is not a DOM element');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function openTab(evt, lang) {
|
|
||||||
const tabcontent = document.getElementsByClassName("tabcontent");
|
|
||||||
for (const content of tabcontent) {
|
|
||||||
content.style.display = "none";
|
|
||||||
}
|
|
||||||
|
|
||||||
const tablinks = document.getElementsByClassName("tab-button");
|
|
||||||
for (const link of tablinks) {
|
|
||||||
link.className = link.className.replace(" active", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
const selectedTabs = document.querySelectorAll(`#${lang}`);
|
|
||||||
for (const tab of selectedTabs) {
|
|
||||||
tab.style.display = "block";
|
|
||||||
}
|
|
||||||
|
|
||||||
const selectedButtons = document.querySelectorAll(`.tab-button[onclick*="${lang}"]`);
|
|
||||||
for (const button of selectedButtons) {
|
|
||||||
button.className += " active";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
-13
@@ -99,16 +99,3 @@ curl -u user:pass -H "X-CSRF-Token: your_token_here" \
|
|||||||
|
|
||||||
## GET /api/virtual-input/status
|
## GET /api/virtual-input/status
|
||||||
@copydoc confighttp::getVirtualInputStatus()
|
@copydoc confighttp::getVirtualInputStatus()
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------------------------------------|--------------------------------------:|
|
|
||||||
| [Performance Tuning](performance_tuning.md) | [Troubleshooting](troubleshooting.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+30
-43
@@ -25,36 +25,36 @@ and applications to Sunshine.
|
|||||||
> Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
> Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
||||||
> process is killed.
|
> process is killed.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{FreeBSD | <!-- -->
|
@tab{FreeBSD |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|------------------------------\|------------------------------------------------------\|
|
\|------------------------------\|------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
||||||
\| Command Preporations -> Undo \| @code{}setsid steam steam://close/bigpicture@endcode \|
|
\| Command Preparations -> Undo \| @code{}setsid steam steam://close/bigpicture@endcode \|
|
||||||
\| Detached Commands \| @code{}setsid steam steam://open/bigpicture@endcode \|
|
\| Detached Commands \| @code{}setsid steam steam://open/bigpicture@endcode \|
|
||||||
\| Image \| @code{}steam.png@endcode \|
|
\| Image \| @code{}steam.png@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Linux | <!-- -->
|
@tab{Linux |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|------------------------------\|------------------------------------------------------\|
|
\|------------------------------\|------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
||||||
\| Command Preporations -> Undo \| @code{}setsid steam steam://close/bigpicture@endcode \|
|
\| Command Preparations -> Undo \| @code{}setsid steam steam://close/bigpicture@endcode \|
|
||||||
\| Detached Commands \| @code{}setsid steam steam://open/bigpicture@endcode \|
|
\| Detached Commands \| @code{}setsid steam steam://open/bigpicture@endcode \|
|
||||||
\| Image \| @code{}steam.png@endcode \|
|
\| Image \| @code{}steam.png@endcode \|
|
||||||
}
|
}
|
||||||
@tab{macOS | <!-- -->
|
@tab{macOS |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|------------------------------\|------------------------------------------------\|
|
\|------------------------------\|------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
||||||
\| Command Preporations -> Undo \| @code{}open steam://close/bigpicture@endcode \|
|
\| Command Preparations -> Undo \| @code{}open steam://close/bigpicture@endcode \|
|
||||||
\| Detached Commands \| @code{}open steam://open/bigpicture@endcode \|
|
\| Detached Commands \| @code{}open steam://open/bigpicture@endcode \|
|
||||||
\| Image \| @code{}steam.png@endcode \|
|
\| Image \| @code{}steam.png@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|------------------------------\|-------------------------------------------\|
|
\|------------------------------\|-------------------------------------------\|
|
||||||
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
\| Application Name \| @code{}Steam Big Picture@endcode \|
|
||||||
\| Command Preporations -> Undo \| @code{}steam://close/bigpicture@endcode \|
|
\| Command Preparations -> Undo \| @code{}steam://close/bigpicture@endcode \|
|
||||||
\| Detached Commands \| @code{}steam://open/bigpicture@endcode \|
|
\| Detached Commands \| @code{}steam://open/bigpicture@endcode \|
|
||||||
\| Image \| @code{}steam.png@endcode \|
|
\| Image \| @code{}steam.png@endcode \|
|
||||||
}
|
}
|
||||||
@@ -67,8 +67,8 @@ and applications to Sunshine.
|
|||||||
|
|
||||||
#### URI
|
#### URI
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|------------------\|-------------------------------------------------------------------------------------------------------------------------------------------------------\|
|
\|------------------\|-------------------------------------------------------------------------------------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -77,8 +77,8 @@ and applications to Sunshine.
|
|||||||
}
|
}
|
||||||
|
|
||||||
#### Binary (w/ working directory
|
#### Binary (w/ working directory
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -88,8 +88,8 @@ and applications to Sunshine.
|
|||||||
}
|
}
|
||||||
|
|
||||||
#### Binary (w/o working directory)
|
#### Binary (w/o working directory)
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|-------------------------------------------------------------------------\|
|
\|-------------------\|-------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -104,26 +104,26 @@ and applications to Sunshine.
|
|||||||
|
|
||||||
#### URI
|
#### URI
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{FreeBSD | <!-- -->
|
@tab{FreeBSD |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Detached Commands \| @code{}setsid steam steam://rungameid/464920@endcode \|
|
\| Detached Commands \| @code{}setsid steam steam://rungameid/464920@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Linux | <!-- -->
|
@tab{Linux |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Detached Commands \| @code{}setsid steam steam://rungameid/464920@endcode \|
|
\| Detached Commands \| @code{}setsid steam steam://rungameid/464920@endcode \|
|
||||||
}
|
}
|
||||||
@tab{macOS | <!-- -->
|
@tab{macOS |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|----------------------------------------------\|
|
\|-------------------\|----------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Detached Commands \| @code{}open steam://rungameid/464920@endcode \|
|
\| Detached Commands \| @code{}open steam://rungameid/464920@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|-----------------------------------------\|
|
\|-------------------\|-----------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -132,29 +132,29 @@ and applications to Sunshine.
|
|||||||
}
|
}
|
||||||
|
|
||||||
#### Binary (w/ working directory
|
#### Binary (w/ working directory
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{FreeBSD | <!-- -->
|
@tab{FreeBSD |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|--------------------------------------------------------------\|
|
\|-------------------\|--------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}MarsSteam@endcode \|
|
\| Command \| @code{}MarsSteam@endcode \|
|
||||||
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Linux | <!-- -->
|
@tab{Linux |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|--------------------------------------------------------------\|
|
\|-------------------\|--------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}MarsSteam@endcode \|
|
\| Command \| @code{}MarsSteam@endcode \|
|
||||||
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
||||||
}
|
}
|
||||||
@tab{macOS | <!-- -->
|
@tab{macOS |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|--------------------------------------------------------------\|
|
\|-------------------\|--------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}MarsSteam@endcode \|
|
\| Command \| @code{}MarsSteam@endcode \|
|
||||||
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
\| Working Directory \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|-------------------------------------------------------------------------------\|
|
\|-------------------\|-------------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -164,26 +164,26 @@ and applications to Sunshine.
|
|||||||
}
|
}
|
||||||
|
|
||||||
#### Binary (w/o working directory)
|
#### Binary (w/o working directory)
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{FreeBSD | <!-- -->
|
@tab{FreeBSD |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Linux | <!-- -->
|
@tab{Linux |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
||||||
}
|
}
|
||||||
@tab{macOS | <!-- -->
|
@tab{macOS |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|------------------------------------------------------------------------\|
|
\|-------------------\|------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
\| Command \| @code{}$(HOME)/.steam/steam/SteamApps/common/Survivng Mars/MarsSteam@endcode \|
|
||||||
}
|
}
|
||||||
@tab{Windows | <!-- -->
|
@tab{Windows |:| <!-- -->
|
||||||
\| Field \| Value \|
|
\| Field \| Value \|
|
||||||
\|-------------------\|---------------------------------------------------------------------------------------------\|
|
\|-------------------\|---------------------------------------------------------------------------------------------\|
|
||||||
\| Application Name \| @code{}Surviving Mars@endcode \|
|
\| Application Name \| @code{}Surviving Mars@endcode \|
|
||||||
@@ -371,16 +371,3 @@ UAC prompt.
|
|||||||
"image-path": ""
|
"image-path": ""
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:----------------------------------|----------------------------------------:|
|
|
||||||
| [Configuration](configuration.md) | [Awesome-Sunshine](awesome_sunshine.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -8,16 +8,3 @@
|
|||||||
src="https://raw.githubusercontent.com/LizardByte/awesome-sunshine/master/README.md">
|
src="https://raw.githubusercontent.com/LizardByte/awesome-sunshine/master/README.md">
|
||||||
</md-block>
|
</md-block>
|
||||||
@endhtmlonly
|
@endhtmlonly
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------------------------|--------------------:|
|
|
||||||
| [App Examples](app_examples.md) | [Guides](guides.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+15
-28
@@ -135,11 +135,11 @@ brew install "${dependencies[@]}"
|
|||||||
|
|
||||||
If there are issues with an SSL header that is not found:
|
If there are issues with an SSL header that is not found:
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{mac-architecture|:|
|
||||||
@tab{ Intel | ```bash
|
@tab{ Intel |:| ```bash
|
||||||
ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl
|
ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl
|
||||||
```}
|
```}
|
||||||
@tab{ Apple Silicon | ```bash
|
@tab{ Apple Silicon |:| ```bash
|
||||||
ln -s /opt/homebrew/opt/openssl/include/openssl /opt/homebrew/include/openssl
|
ln -s /opt/homebrew/opt/openssl/include/openssl /opt/homebrew/include/openssl
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@@ -249,33 +249,33 @@ ninja -C build
|
|||||||
|
|
||||||
### Package
|
### Package
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{FreeBSD | @tabs{
|
@tab{FreeBSD |:| @tabs{
|
||||||
@tab{pkg | ```bash
|
@tab{pkg |:| ```bash
|
||||||
cpack -G FREEBSD --config ./build/CPackConfig.cmake
|
cpack -G FREEBSD --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
}}
|
}}
|
||||||
@tab{Linux | @tabs{
|
@tab{Linux |:| @tabs{
|
||||||
@tab{deb | ```bash
|
@tab{deb |:| ```bash
|
||||||
cpack -G DEB --config ./build/CPackConfig.cmake
|
cpack -G DEB --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
@tab{rpm | ```bash
|
@tab{rpm |:| ```bash
|
||||||
cpack -G RPM --config ./build/CPackConfig.cmake
|
cpack -G RPM --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
}}
|
}}
|
||||||
@tab{macOS | @tabs{
|
@tab{macOS |:| @tabs{
|
||||||
@tab{DragNDrop | ```bash
|
@tab{DragNDrop |:| ```bash
|
||||||
cpack -G DragNDrop --config ./build/CPackConfig.cmake
|
cpack -G DragNDrop --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
}}
|
}}
|
||||||
@tab{Windows | @tabs{
|
@tab{Windows |:| @tabs{
|
||||||
@tab{NSIS Installer | ```bash
|
@tab{NSIS Installer |:| ```bash
|
||||||
cpack -G NSIS --config ./build/CPackConfig.cmake
|
cpack -G NSIS --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
@tab{WiX Installer | ```bash
|
@tab{WiX Installer |:| ```bash
|
||||||
cpack -G WIX --config ./build/CPackConfig.cmake
|
cpack -G WIX --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
@tab{Portable | ```bash
|
@tab{Portable |:| ```bash
|
||||||
cpack -G ZIP --config ./build/CPackConfig.cmake
|
cpack -G ZIP --config ./build/CPackConfig.cmake
|
||||||
```}
|
```}
|
||||||
}}
|
}}
|
||||||
@@ -288,16 +288,3 @@ It may be beneficial to build remotely in some cases. This will enable easier bu
|
|||||||
2. Activate workflows
|
2. Activate workflows
|
||||||
3. Trigger the *CI* workflow manually
|
3. Trigger the *CI* workflow manually
|
||||||
4. Download the artifacts/binaries from the workflow run summary
|
4. Download the artifacts/binaries from the workflow run summary
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------------------------------|--------------------------------:|
|
|
||||||
| [Troubleshooting](troubleshooting.md) | [Contributing](contributing.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -7,16 +7,3 @@
|
|||||||
src="https://raw.githubusercontent.com/LizardByte/Sunshine/changelog/CHANGELOG.md">
|
src="https://raw.githubusercontent.com/LizardByte/Sunshine/changelog/CHANGELOG.md">
|
||||||
</md-block>
|
</md-block>
|
||||||
@endhtmlonly
|
@endhtmlonly
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------------------------------|------------------------------:|
|
|
||||||
| [Getting Started](getting_started.md) | [Docker](../DOCKER_README.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -19,12 +19,16 @@ document.addEventListener("DOMContentLoaded", function() {
|
|||||||
const newCell = document.createElement("td");
|
const newCell = document.createElement("td");
|
||||||
newCell.setAttribute("colspan", "3");
|
newCell.setAttribute("colspan", "3");
|
||||||
|
|
||||||
const newCode = document.createElement("code");
|
const openButton = document.createElement("button");
|
||||||
newCode.className = "open-button";
|
openButton.className = "open-button";
|
||||||
newCode.setAttribute("onclick", `window.open('https://${document.getElementById('host-authority').value}/config/#${sectionId}', '_blank')`);
|
openButton.type = "button";
|
||||||
newCode.textContent = "Open";
|
openButton.textContent = "Open configuration";
|
||||||
|
openButton.addEventListener("click", () => {
|
||||||
|
const authority = document.getElementById("host-authority").value;
|
||||||
|
window.open(`https://${authority}/config/#${sectionId}`, "_blank", "noopener");
|
||||||
|
});
|
||||||
|
|
||||||
newCell.appendChild(newCode);
|
newCell.appendChild(openButton);
|
||||||
newRow.appendChild(newCell);
|
newRow.appendChild(newCell);
|
||||||
|
|
||||||
// get the table body
|
// get the table body
|
||||||
|
|||||||
+1
-14
@@ -1,6 +1,6 @@
|
|||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
@admonition{ Host authority | @htmlonly
|
@admonition{ Host authority |:| @htmlonly
|
||||||
By providing the host authority (URI + port), you can easily open each configuration option in the config UI.
|
By providing the host authority (URI + port), you can easily open each configuration option in the config UI.
|
||||||
<br>
|
<br>
|
||||||
<script src="configuration.js"></script>
|
<script src="configuration.js"></script>
|
||||||
@@ -3455,16 +3455,3 @@ supported on the current platform.
|
|||||||
<td>good for fast encoding and low-latency streaming</td>
|
<td>good for fast encoding and low-latency streaming</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:------------------|--------------------------------:|
|
|
||||||
| [Legal](legal.md) | [App Examples](app_examples.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+3
-16
@@ -23,11 +23,11 @@ Read our contribution guide in our organization level
|
|||||||
#### Building
|
#### Building
|
||||||
|
|
||||||
@tabs{
|
@tabs{
|
||||||
@tab{CMake | ```bash
|
@tab{CMake |:| ```bash
|
||||||
cmake -B build -G Ninja -S . --target web-ui
|
cmake -B build -G Ninja -S . --target web-ui
|
||||||
ninja -C build web-ui
|
ninja -C build web-ui
|
||||||
```}
|
```}
|
||||||
@tab{Manual | ```bash
|
@tab{Manual |:| ```bash
|
||||||
npm run dev
|
npm run dev
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ The default language is `en` (English).
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
@admonition{Community | We are looking for language coordinators to help approve translations.
|
@admonition{Community |:| We are looking for language coordinators to help approve translations.
|
||||||
The goal is to have the bars above filled with green!
|
The goal is to have the bars above filled with green!
|
||||||
If you are interested, please reach out to us on our Discord server.}
|
If you are interested, please reach out to us on our Discord server.}
|
||||||
|
|
||||||
@@ -210,16 +210,3 @@ Even if your changes cannot be covered in the CI, we still encourage you to writ
|
|||||||
maintainers to run the tests locally.
|
maintainers to run the tests locally.
|
||||||
|
|
||||||
[crowdin-url]: https://translate.lizardbyte.dev
|
[crowdin-url]: https://translate.lizardbyte.dev
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:------------------------|-------------------------------------------------------------:|
|
|
||||||
| [Building](building.md) | [Source Code](../third-party/doxyconfig/docs/source_code.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
globalThis.initCrowdIn('LizardByte-docs', 'dockle')
|
||||||
+17
-2
@@ -1,6 +1,21 @@
|
|||||||
/* A fake button as doxygen doesn't allow button elements */
|
/* Link generated configuration actions to Sunshine's web UI. */
|
||||||
.open-button {
|
.open-button {
|
||||||
background: var(--primary-color);
|
background: var(--dockle-primary);
|
||||||
|
border: 1px solid color-mix(in srgb, var(--dockle-primary) 75%, black);
|
||||||
|
border-radius: var(--dockle-radius);
|
||||||
color: white;
|
color: white;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
font: inherit;
|
||||||
|
font-weight: 650;
|
||||||
|
padding: 0.5rem 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.open-button:hover,
|
||||||
|
.open-button:focus-visible {
|
||||||
|
filter: brightness(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.open-button:focus-visible {
|
||||||
|
outline: 2px solid color-mix(in srgb, var(--dockle-primary) 40%, transparent);
|
||||||
|
outline-offset: 2px;
|
||||||
}
|
}
|
||||||
@@ -22,16 +22,3 @@ Sunshine does have some limitations, as compared to Nvidia GameStream.
|
|||||||
|
|
||||||
* Automatic game/application list.
|
* Automatic game/application list.
|
||||||
* Changing game settings automatically to optimize streaming.
|
* Changing game settings automatically to optimize streaming.
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:------------------------------------------------|------------------:|
|
|
||||||
| [Third-party Packages](third_party_packages.md) | [Legal](legal.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+24
-35
@@ -195,11 +195,11 @@ pacman -R sunshine
|
|||||||
Configure the `stable` repository for releases or the `beta` repository for prereleases. The setup script
|
Configure the `stable` repository for releases or the `beta` repository for prereleases. The setup script
|
||||||
automatically selects the appropriate Debian or Ubuntu release.
|
automatically selects the appropriate Debian or Ubuntu release.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{release-channel|:|
|
||||||
@tab_with_pipe{ Stable |:| ```bash
|
@tab{ Stable |:| ```bash
|
||||||
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/stable/cfg/setup/bash.deb.sh' | sudo -E bash
|
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/stable/cfg/setup/bash.deb.sh' | sudo -E bash
|
||||||
```}
|
```}
|
||||||
@tab_with_pipe{ Beta |:| ```bash
|
@tab{ Beta |:| ```bash
|
||||||
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/beta/cfg/setup/bash.deb.sh' | sudo -E bash
|
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/beta/cfg/setup/bash.deb.sh' | sudo -E bash
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -240,22 +240,22 @@ sudo apt remove sunshine
|
|||||||
Configure the `stable` repository for releases or the `beta` repository for prereleases. Cloudsmith's setup script
|
Configure the `stable` repository for releases or the `beta` repository for prereleases. Cloudsmith's setup script
|
||||||
automatically selects Fedora or openSUSE and the appropriate release.
|
automatically selects Fedora or openSUSE and the appropriate release.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{release-channel|:|
|
||||||
@tab_with_pipe{ Stable |:| ```bash
|
@tab{ Stable |:| ```bash
|
||||||
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/stable/cfg/setup/bash.rpm.sh' | sudo -E bash
|
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/stable/cfg/setup/bash.rpm.sh' | sudo -E bash
|
||||||
```}
|
```}
|
||||||
@tab_with_pipe{ Beta |:| ```bash
|
@tab{ Beta |:| ```bash
|
||||||
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/beta/cfg/setup/bash.rpm.sh' | sudo -E bash
|
curl -1sLf 'https://dl.cloudsmith.io/public/lizardbyte/beta/cfg/setup/bash.rpm.sh' | sudo -E bash
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
|
|
||||||
Install Sunshine with your distribution's package manager.
|
Install Sunshine with your distribution's package manager.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{distribution|:|
|
||||||
@tab{ Fedora | ```bash
|
@tab{ Fedora |:| ```bash
|
||||||
sudo dnf install Sunshine
|
sudo dnf install Sunshine
|
||||||
```}
|
```}
|
||||||
@tab{ openSUSE | ```bash
|
@tab{ openSUSE |:| ```bash
|
||||||
sudo zypper install Sunshine
|
sudo zypper install Sunshine
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -264,11 +264,11 @@ Install Sunshine with your distribution's package manager.
|
|||||||
|
|
||||||
Download `Sunshine-{version}-1.{distro+version}.{arch}.rpm` and run the following command.
|
Download `Sunshine-{version}-1.{distro+version}.{arch}.rpm` and run the following command.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{distribution|:|
|
||||||
@tab{ Fedora | ```bash
|
@tab{ Fedora |:| ```bash
|
||||||
sudo dnf install ./Sunshine-{version}-1.{distro+version}.{arch}.rpm
|
sudo dnf install ./Sunshine-{version}-1.{distro+version}.{arch}.rpm
|
||||||
```}
|
```}
|
||||||
@tab{ openSUSE | ```bash
|
@tab{ openSUSE |:| ```bash
|
||||||
sudo zypper install ./Sunshine-{version}-1.{distro+version}.{arch}.rpm
|
sudo zypper install ./Sunshine-{version}-1.{distro+version}.{arch}.rpm
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -282,11 +282,11 @@ Download `Sunshine-{version}-1.{distro+version}.{arch}.rpm` and run the followin
|
|||||||
|
|
||||||
##### Uninstall
|
##### Uninstall
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{distribution|:|
|
||||||
@tab{ Fedora | ```bash
|
@tab{ Fedora |:| ```bash
|
||||||
sudo dnf remove Sunshine
|
sudo dnf remove Sunshine
|
||||||
```}
|
```}
|
||||||
@tab{ openSUSE | ```bash
|
@tab{ openSUSE |:| ```bash
|
||||||
sudo zypper remove Sunshine
|
sudo zypper remove Sunshine
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -678,19 +678,20 @@ by default. You may replace *localhost* with your internal ip address.
|
|||||||
|
|
||||||
7. If you run into issues, logs are available in the `Troubleshooting` tab.
|
7. If you run into issues, logs are available in the `Troubleshooting` tab.
|
||||||
You can navigate through each warning/error message for clues to the issue.
|
You can navigate through each warning/error message for clues to the issue.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
To get a list of available arguments, run the following command.
|
To get a list of available arguments, run the following command.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{linux-package|:|
|
||||||
@tab{ General | ```bash
|
@tab{ General |:| ```bash
|
||||||
sunshine --help
|
sunshine --help
|
||||||
```}
|
```}
|
||||||
@tab{ AppImage | ```bash
|
@tab{ AppImage |:| ```bash
|
||||||
./Sunshine_{version}_{arch}.AppImage --help
|
./Sunshine_{version}_{arch}.AppImage --help
|
||||||
```}
|
```}
|
||||||
@tab{ Flatpak | ```bash
|
@tab{ Flatpak |:| ```bash
|
||||||
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --help
|
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --help
|
||||||
```}
|
```}
|
||||||
}
|
}
|
||||||
@@ -755,14 +756,14 @@ Streaming HDR content is officially supported on Windows hosts and experimentall
|
|||||||
|
|
||||||
Additional information:
|
Additional information:
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{platform|:|
|
||||||
@tab{ Windows |
|
@tab{ Windows |:|
|
||||||
- HDR streaming is supported for Intel, AMD, and NVIDIA GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles.
|
- HDR streaming is supported for Intel, AMD, and NVIDIA GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles.
|
||||||
- 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.
|
- 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.
|
||||||
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows HDR support may not display properly in HDR.
|
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows HDR support may not display properly in HDR.
|
||||||
}
|
}
|
||||||
|
|
||||||
@tab{ Linux |
|
@tab{ Linux |:|
|
||||||
- HDR streaming is supported for Intel and AMD GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles using VAAPI.
|
- HDR streaming is supported for Intel and AMD GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles using VAAPI.
|
||||||
- The KMS capture backend is required for HDR capture. Other capture methods, like NvFBC or X11, do not support HDR.
|
- The KMS capture backend is required for HDR capture. Other capture methods, like NvFBC or X11, do not support HDR.
|
||||||
- You will need a desktop environment with a compositor that supports HDR rendering, such as Gamescope or KDE Plasma 6.
|
- You will need a desktop environment with a compositor that supports HDR rendering, such as Gamescope or KDE Plasma 6.
|
||||||
@@ -777,20 +778,8 @@ Tutorial videos are available [here](https://www.youtube.com/playlist?list=PLMYr
|
|||||||
|
|
||||||
Guides are available [here](guides.md).
|
Guides are available [here](guides.md).
|
||||||
|
|
||||||
@admonition{Community! |
|
@admonition{Community! |:|
|
||||||
Tutorials and Guides are community generated. Want to contribute? Reach out to us on our discord server.}
|
Tutorials and Guides are community generated. Want to contribute? Reach out to us on our discord server.}
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:-------------------------|--------------------------:|
|
|
||||||
| [Overview](../README.md) | [Changelog](changelog.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
|
|
||||||
[latest-release]: https://github.com/LizardByte/Sunshine/releases/latest
|
[latest-release]: https://github.com/LizardByte/Sunshine/releases/latest
|
||||||
+1
-14
@@ -1,19 +1,6 @@
|
|||||||
# Guides
|
# Guides
|
||||||
|
|
||||||
@admonition{Community | A collection of guides written by the community is available on our
|
@admonition{Community |:| A collection of guides written by the community is available on our
|
||||||
[blog](https://app.lizardbyte.dev/blog).
|
[blog](https://app.lizardbyte.dev/blog).
|
||||||
Feel free to contribute your own tips and trips by making a PR to
|
Feel free to contribute your own tips and trips by making a PR to
|
||||||
[LizardByte.github.io](https://github.com/LizardByte/LizardByte.github.io).}
|
[LizardByte.github.io](https://github.com/LizardByte/LizardByte.github.io).}
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:----------------------------------------|--------------------------------------------:|
|
|
||||||
| [Awesome-Sunshine](awesome_sunshine.md) | [Performance Tuning](performance_tuning.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -19,16 +19,3 @@ Motion Picture Experts Group (MPEG-LA) and/or any other necessary licensing requ
|
|||||||
In summary, while Sunshine is free to use, it is the user's responsibility to ensure compliance with all applicable
|
In summary, while Sunshine is free to use, it is the user's responsibility to ensure compliance with all applicable
|
||||||
licensing requirements when redistributing the software as part of a commercial offering. If you have any questions or
|
licensing requirements when redistributing the software as part of a commercial offering. If you have any questions or
|
||||||
concerns about using Sunshine in a commercial setting, we recommend consulting with a lawyer.
|
concerns about using Sunshine in a commercial setting, we recommend consulting with a lawyer.
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:------------------------------------------------|----------------------------------:|
|
|
||||||
| [Gamestream Migration](gamestream_migration.md) | [Configuration](configuration.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -10,16 +10,3 @@ applies to `amfenc` and `libx264`.
|
|||||||
## NVIDIA
|
## NVIDIA
|
||||||
|
|
||||||
Enabling *Fast Sync* in Nvidia settings may help reduce latency.
|
Enabling *Fast Sync* in Nvidia settings may help reduce latency.
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------------|--------------:|
|
|
||||||
| [Guides](guides.md) | [API](api.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
@@ -14,16 +14,3 @@
|
|||||||
|
|
||||||
## Solus
|
## Solus
|
||||||
[](https://dev.getsol.us/source/sunshine)
|
[](https://dev.getsol.us/source/sunshine)
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:------------------------------|------------------------------------------------:|
|
|
||||||
| [Docker](../DOCKER_README.md) | [Gamestream Migration](gamestream_migration.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+6
-19
@@ -5,16 +5,16 @@
|
|||||||
### Forgotten Credentials
|
### Forgotten Credentials
|
||||||
If you forgot your credentials to the web UI, try this.
|
If you forgot your credentials to the web UI, try this.
|
||||||
|
|
||||||
@tabs{
|
@tabs_grouped{linux-package|:|
|
||||||
@tab{General | ```bash
|
@tab{General |:| ```bash
|
||||||
sunshine --creds {new-username} {new-password}
|
sunshine --creds {new-username} {new-password}
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@tab{AppImage | ```bash
|
@tab{AppImage |:| ```bash
|
||||||
./sunshine.AppImage --creds {new-username} {new-password}
|
./sunshine.AppImage --creds {new-username} {new-password}
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@tab{Flatpak | ```bash
|
@tab{Flatpak |:| ```bash
|
||||||
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --creds {new-username} {new-password}
|
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --creds {new-username} {new-password}
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@@ -193,11 +193,11 @@ restarts. Approve the Remote Desktop prompt and select the display to capture wh
|
|||||||
If the Web UI is inaccessible, stop Sunshine and delete the token manually:
|
If the Web UI is inaccessible, stop Sunshine and delete the token manually:
|
||||||
|
|
||||||
@tabs{
|
@tabs{
|
||||||
@tab{Linux / FreeBSD | ```bash
|
@tab{Linux / FreeBSD |:| ```bash
|
||||||
rm "${XDG_CONFIG_HOME:-$HOME/.config}/sunshine/portal_token"
|
rm "${XDG_CONFIG_HOME:-$HOME/.config}/sunshine/portal_token"
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@tab{Flatpak | ```bash
|
@tab{Flatpak |:| ```bash
|
||||||
rm "$HOME/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/portal_token"
|
rm "$HOME/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/portal_token"
|
||||||
```
|
```
|
||||||
}
|
}
|
||||||
@@ -385,16 +385,3 @@ permissions on the disk.
|
|||||||
|
|
||||||
### Stuttering
|
### Stuttering
|
||||||
If you experience stuttering using NVIDIA, try disabling `vsync:fast` in the NVIDIA Control Panel.
|
If you experience stuttering using NVIDIA, try disabling `vsync:fast` in the NVIDIA Control Panel.
|
||||||
|
|
||||||
<div class="section_buttons">
|
|
||||||
|
|
||||||
| Previous | Next |
|
|
||||||
|:--------------|------------------------:|
|
|
||||||
| [API](api.md) | [Building](building.md) |
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details style="display: none;">
|
|
||||||
<summary></summary>
|
|
||||||
[TOC]
|
|
||||||
</details>
|
|
||||||
+26
-26
@@ -1004,7 +1004,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/csrf-token| GET| null}
|
* @api_examples{/api/csrf-token|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getCSRFToken(const resp_https_t &response, const req_https_t &request) {
|
void getCSRFToken(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1026,7 +1026,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/apps| GET| null}
|
* @api_examples{/api/apps|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getApps(const resp_https_t &response, const req_https_t &request) {
|
void getApps(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1111,7 +1111,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/apps| POST| {"name":"Hello, World!","index":-1}}
|
* @api_examples{/api/apps|:| POST|:| {"name":"Hello, World!","index":-1}}
|
||||||
*/
|
*/
|
||||||
void saveApp(const resp_https_t &response, const req_https_t &request) {
|
void saveApp(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1186,7 +1186,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/apps/close| POST| null}
|
* @api_examples{/api/apps/close|:| POST|:| null}
|
||||||
*/
|
*/
|
||||||
void closeApp(const resp_https_t &response, const req_https_t &request) {
|
void closeApp(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1212,7 +1212,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/apps/9999| DELETE| null}
|
* @api_examples{/api/apps/9999|:| DELETE|:| null}
|
||||||
*/
|
*/
|
||||||
void deleteApp(const resp_https_t &response, const req_https_t &request) {
|
void deleteApp(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1263,7 +1263,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/clients/list| GET| null}
|
* @api_examples{/api/clients/list|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getClients(const resp_https_t &response, const req_https_t &request) {
|
void getClients(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1292,7 +1292,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/clients/update| POST| {"uuid":"<uuid>","enabled":true}}
|
* @api_examples{/api/clients/update|:| POST|:| {"uuid":"<uuid>","enabled":true}}
|
||||||
*/
|
*/
|
||||||
void updateClient(resp_https_t response, req_https_t request) {
|
void updateClient(resp_https_t response, req_https_t request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1346,7 +1346,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/unpair| POST| {"uuid":"1234"}}
|
* @api_examples{/api/unpair|:| POST|:| {"uuid":"1234"}}
|
||||||
*/
|
*/
|
||||||
void unpair(const resp_https_t &response, const req_https_t &request) {
|
void unpair(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1390,7 +1390,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/clients/unpair-all| POST| null}
|
* @api_examples{/api/clients/unpair-all|:| POST|:| null}
|
||||||
*/
|
*/
|
||||||
void unpairAll(const resp_https_t &response, const req_https_t &request) {
|
void unpairAll(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1417,7 +1417,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/config| GET| null}
|
* @api_examples{/api/config|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getConfig(const resp_https_t &response, const req_https_t &request) {
|
void getConfig(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1445,7 +1445,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/configLocale| GET| null}
|
* @api_examples{/api/configLocale|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getLocale(const resp_https_t &response, const req_https_t &request) {
|
void getLocale(const resp_https_t &response, const req_https_t &request) {
|
||||||
// we need to return the locale whether authenticated or not
|
// we need to return the locale whether authenticated or not
|
||||||
@@ -1471,7 +1471,7 @@ namespace confighttp {
|
|||||||
*
|
*
|
||||||
* @attention{It is recommended to ONLY save the config settings that differ from the default behavior.}
|
* @attention{It is recommended to ONLY save the config settings that differ from the default behavior.}
|
||||||
*
|
*
|
||||||
* @api_examples{/api/config| POST| {"key":"value"}}
|
* @api_examples{/api/config|:| POST|:| {"key":"value"}}
|
||||||
*/
|
*/
|
||||||
void saveConfig(const resp_https_t &response, const req_https_t &request) {
|
void saveConfig(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1520,7 +1520,7 @@ namespace confighttp {
|
|||||||
*
|
*
|
||||||
* @note{The index in the url path is the application index.}
|
* @note{The index in the url path is the application index.}
|
||||||
*
|
*
|
||||||
* @api_examples{/api/covers/9999 | GET| null}
|
* @api_examples{/api/covers/9999 |:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getCover(const resp_https_t &response, const req_https_t &request) {
|
void getCover(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1590,7 +1590,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/covers/upload| POST| {"key":"igdb_1234","url":"https://images.igdb.com/igdb/image/upload/t_cover_big_2x/abc123.png"}}
|
* @api_examples{/api/covers/upload|:| POST|:| {"key":"igdb_1234","url":"https://images.igdb.com/igdb/image/upload/t_cover_big_2x/abc123.png"}}
|
||||||
*/
|
*/
|
||||||
void uploadCover(const resp_https_t &response, const req_https_t &request) {
|
void uploadCover(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1646,7 +1646,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/logs| GET| null}
|
* @api_examples{/api/logs|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getLogs(const resp_https_t &response, const req_https_t &request) {
|
void getLogs(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1678,7 +1678,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/password| POST| {"currentUsername":"admin","currentPassword":"admin","newUsername":"admin","newPassword":"admin","confirmNewPassword":"admin"}}
|
* @api_examples{/api/password|:| POST|:| {"currentUsername":"admin","currentPassword":"admin","newUsername":"admin","newPassword":"admin","confirmNewPassword":"admin"}}
|
||||||
*/
|
*/
|
||||||
void savePassword(const resp_https_t &response, const req_https_t &request) {
|
void savePassword(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1747,7 +1747,7 @@ namespace confighttp {
|
|||||||
/**
|
/**
|
||||||
* @brief List client pairing requests that are waiting for PIN approval.
|
* @brief List client pairing requests that are waiting for PIN approval.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/pin| GET| null}
|
* @api_examples{/api/pin|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getPendingPairings(const resp_https_t &response, const req_https_t &request) {
|
void getPendingPairings(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1777,7 +1777,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/pin| DELETE| {"pairing_id":"0123456789abcdef0123456789abcdef"}}
|
* @api_examples{/api/pin|:| DELETE|:| {"pairing_id":"0123456789abcdef0123456789abcdef"}}
|
||||||
*/
|
*/
|
||||||
void cancelPairing(const resp_https_t &response, const req_https_t &request) {
|
void cancelPairing(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1828,7 +1828,7 @@ namespace confighttp {
|
|||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @api_examples{/api/pin| POST| {"pairing_id":"0123456789abcdef0123456789abcdef","pin":"1234","name":"My PC"}}
|
* @api_examples{/api/pin|:| POST|:| {"pairing_id":"0123456789abcdef0123456789abcdef","pin":"1234","name":"My PC"}}
|
||||||
*/
|
*/
|
||||||
void savePin(const resp_https_t &response, const req_https_t &request) {
|
void savePin(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!check_content_type(response, request, "application/json")) {
|
if (!check_content_type(response, request, "application/json")) {
|
||||||
@@ -1879,7 +1879,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/reset-display-device-persistence| POST| null}
|
* @api_examples{/api/reset-display-device-persistence|:| POST|:| null}
|
||||||
*/
|
*/
|
||||||
void resetDisplayDevicePersistence(const resp_https_t &response, const req_https_t &request) {
|
void resetDisplayDevicePersistence(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1905,7 +1905,7 @@ namespace confighttp {
|
|||||||
* @param response HTTP response used for authentication, CSRF, and status output.
|
* @param response HTTP response used for authentication, CSRF, and status output.
|
||||||
* @param request HTTP request carrying the client identity and CSRF token.
|
* @param request HTTP request carrying the client identity and CSRF token.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/reset-portal-token| POST| null}
|
* @api_examples{/api/reset-portal-token|:| POST|:| null}
|
||||||
*/
|
*/
|
||||||
void resetPortalToken(const resp_https_t &response, const req_https_t &request) {
|
void resetPortalToken(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -1940,7 +1940,7 @@ namespace confighttp {
|
|||||||
* @param response HTTP response used for authentication or CSRF failures.
|
* @param response HTTP response used for authentication or CSRF failures.
|
||||||
* @param request HTTP request carrying the client identity and CSRF token.
|
* @param request HTTP request carrying the client identity and CSRF token.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/restart| POST| null}
|
* @api_examples{/api/restart|:| POST|:| null}
|
||||||
*/
|
*/
|
||||||
void restart(const resp_https_t &response, const req_https_t &request) {
|
void restart(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -2033,7 +2033,7 @@ namespace confighttp {
|
|||||||
* @param response The HTTP response object.
|
* @param response The HTTP response object.
|
||||||
* @param request The HTTP request object.
|
* @param request The HTTP request object.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/virtual-input/status| GET| null}
|
* @api_examples{/api/virtual-input/status|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getVirtualInputStatus(const resp_https_t &response, const req_https_t &request) {
|
void getVirtualInputStatus(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -2054,7 +2054,7 @@ namespace confighttp {
|
|||||||
* @param response HTTP response object.
|
* @param response HTTP response object.
|
||||||
* @param request Authenticated HTTP request.
|
* @param request Authenticated HTTP request.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/virtual-input/license| GET| null}
|
* @api_examples{/api/virtual-input/license|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void getVirtualInputLicense(const resp_https_t &response, const req_https_t &request) {
|
void getVirtualInputLicense(const resp_https_t &response, const req_https_t &request) {
|
||||||
get_virtual_input_license(response, request);
|
get_virtual_input_license(response, request);
|
||||||
@@ -2070,7 +2070,7 @@ namespace confighttp {
|
|||||||
* @param response HTTP response object.
|
* @param response HTTP response object.
|
||||||
* @param request Authenticated HTTP request with a JSON action.
|
* @param request Authenticated HTTP request with a JSON action.
|
||||||
*
|
*
|
||||||
* @api_examples{/api/virtual-input/license| POST| {"action":"validate"}}
|
* @api_examples{/api/virtual-input/license|:| POST|:| {"action":"validate"}}
|
||||||
*/
|
*/
|
||||||
void updateVirtualInputLicense(const resp_https_t &response, const req_https_t &request) {
|
void updateVirtualInputLicense(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
@@ -2235,7 +2235,7 @@ namespace confighttp {
|
|||||||
* @note On Windows, an empty or root path returns the list of available drive letters.
|
* @note On Windows, an empty or root path returns the list of available drive letters.
|
||||||
* @note On non-Windows, an empty path defaults to the filesystem root ("/").
|
* @note On non-Windows, an empty path defaults to the filesystem root ("/").
|
||||||
*
|
*
|
||||||
* @api_examples{/api/browse?path=/home/user&type=directory| GET| null}
|
* @api_examples{/api/browse?path=/home/user&type=directory|:| GET|:| null}
|
||||||
*/
|
*/
|
||||||
void browseDirectory(const resp_https_t &response, const req_https_t &request) {
|
void browseDirectory(const resp_https_t &response, const req_https_t &request) {
|
||||||
if (!authenticate(response, request)) {
|
if (!authenticate(response, request)) {
|
||||||
|
|||||||
+1
Submodule third-party/dockle added at c1bca827d9.
Vendored
-1
Submodule third-party/doxyconfig deleted from 419127bad8.
Reference in new issue
Block a user