diff --git a/docs/configuration.md b/docs/configuration.md
index 70e2a97bec4..2264aa8d461 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -261,6 +261,29 @@ editing the `conf` file in a text editor. Use the examples as reference.
+### system_tray
+
+
+
+ | Description |
+
+ Show icon in system tray and display desktop notifications
+ |
+
+
+ | Default |
+ @code{}
+ enabled
+ @endcode |
+
+
+ | Example |
+ @code{}
+ system_tray = enabled
+ @endcode |
+
+
+
## Input
### controller
diff --git a/src/config.cpp b/src/config.cpp
index e3de5735b69..a7b7b5cb8e1 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -578,6 +578,7 @@ namespace config {
"ipv4", // Address family
platf::appdata().string() + "/sunshine.log", // log file
false, // notify_pre_releases
+ true, // system_tray
{}, // prep commands
};
@@ -1229,6 +1230,7 @@ namespace config {
bool_f(vars, "native_pen_touch", input.native_pen_touch);
bool_f(vars, "notify_pre_releases", sunshine.notify_pre_releases);
+ bool_f(vars, "system_tray", sunshine.system_tray);
int port = sunshine.port;
int_between_f(vars, "port"s, port, {1024 + nvhttp::PORT_HTTPS, 65535 - rtsp_stream::RTSP_SETUP_PORT});
diff --git a/src/config.h b/src/config.h
index cda1f7c69e4..7ba1bd23452 100644
--- a/src/config.h
+++ b/src/config.h
@@ -256,6 +256,7 @@ namespace config {
std::string log_file;
bool notify_pre_releases;
+ bool system_tray;
std::vector prep_cmds;
};
diff --git a/src/main.cpp b/src/main.cpp
index 050b299042c..07cac147dbc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -112,7 +112,7 @@ void mainThreadLoop(const std::shared_ptr> &shutdown_event)
while (true) {
if (shutdown_event->peek()) {
BOOST_LOG(info) << "Shutdown event detected, breaking main loop"sv;
- if (tray_is_enabled) {
+ if (tray_is_enabled && config::sunshine.system_tray) {
system_tray::end_tray();
}
break;
@@ -384,7 +384,7 @@ int main(int argc, char *argv[]) {
}
#endif
- if (tray_is_enabled) {
+ if (tray_is_enabled && config::sunshine.system_tray) {
BOOST_LOG(info) << "Starting system tray"sv;
#ifdef _WIN32
// TODO: Windows has a weird bug where when running as a service and on the first Windows boot,
@@ -418,7 +418,7 @@ int main(int argc, char *argv[]) {
}
// Stop the threaded tray if it was started
- if (tray_is_enabled) {
+ if (tray_is_enabled && config::sunshine.system_tray) {
system_tray::end_tray_threaded();
}
#endif
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 0f7c2ea5e9d..62a37906ed6 100644
--- a/src_assets/common/assets/web/config.html
+++ b/src_assets/common/assets/web/config.html
@@ -136,6 +136,7 @@ {{ $t('config.configuration') }}
"min_log_level": 2,
"global_prep_cmd": [],
"notify_pre_releases": "disabled",
+ "system_tray": "enabled",
},
},
{
diff --git a/src_assets/common/assets/web/configs/tabs/General.vue b/src_assets/common/assets/web/configs/tabs/General.vue
index 2e4ae10940e..21774d04196 100644
--- a/src_assets/common/assets/web/configs/tabs/General.vue
+++ b/src_assets/common/assets/web/configs/tabs/General.vue
@@ -133,6 +133,14 @@ function removeCmd(index) {
v-model="config.notify_pre_releases"
default="false"
>
+
+
+
diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json
index 494b57348e1..1a9e8fa7986 100644
--- a/src_assets/common/assets/web/public/assets/locale/en.json
+++ b/src_assets/common/assets/web/public/assets/locale/en.json
@@ -355,6 +355,8 @@
"sw_tune_grain": "grain -- preserves the grain structure in old, grainy film material",
"sw_tune_stillimage": "stillimage -- good for slideshow-like content",
"sw_tune_zerolatency": "zerolatency -- good for fast encoding and low-latency streaming (default)",
+ "system_tray": "Enable system tray",
+ "system_tray_desc": "Show icon in system tray and display desktop notifications",
"touchpad_as_ds4": "Emulate a DS4 gamepad if the client gamepad reports a touchpad is present",
"touchpad_as_ds4_desc": "If disabled, touchpad presence will not be taken into account during gamepad type selection.",
"upnp": "UPnP",