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",