diff --git a/Services/UI/SystemTrayService.qml b/Services/UI/SystemTrayService.qml new file mode 100644 index 000000000..4f2e74ce0 --- /dev/null +++ b/Services/UI/SystemTrayService.qml @@ -0,0 +1,40 @@ +pragma Singleton + +import QtQuick +import Quickshell +import Quickshell.Services.SystemTray +import qs.Commons + + +/** + * SystemTrayService + * This service ensures that Quickshell's SystemTray service is initialized + * early in the shell startup to avoid programs that should stay in tray, not having access to one (let's hope this works). + */ +Singleton { + id: root + + property bool initialized: false + + Component.onCompleted: { + if (SystemTray && SystemTray.items) { + Logger.i("SystemTrayService", "SystemTray service initialized") + initialized = true + + // Monitor for tray items to confirm it's working + if (SystemTray.items.valuesChanged) { + Logger.d("SystemTrayService", "SystemTray is ready and monitoring for items") + } + } else { + Logger.w("SystemTrayService", "SystemTray service not available") + } + } + + function init() { + // Explicit initialization function + if (!initialized && SystemTray && SystemTray.items) { + Logger.i("SystemTrayService", "SystemTray service initialized via init()") + initialized = true + } + } +} diff --git a/shell.qml b/shell.qml index 33d6c8fdf..35152cd70 100644 --- a/shell.qml +++ b/shell.qml @@ -9,6 +9,7 @@ // Qt & Quickshell Core import QtQuick import Quickshell +import Quickshell.Services.SystemTray // Commons & Services import qs.Commons @@ -68,6 +69,7 @@ ShellRoot { sourceComponent: Item { Component.onCompleted: { Logger.i("Shell", "---------------------------") + SystemTrayService.init() WallpaperService.init() AppThemeService.init() ColorSchemeService.init()