diff --git a/dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml index 0233b2405..56d33e0d4 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml @@ -1,10 +1,11 @@ -import qs.modules.common -import qs.modules.common.widgets import QtQuick import QtQuick.Layouts import Quickshell import Quickshell.Hyprland import Quickshell.Services.SystemTray +import qs.services +import qs.modules.common +import qs.modules.common.widgets Item { id: root @@ -17,13 +18,8 @@ Item { property bool showOverflowMenu: true property var activeMenu: null - property bool smartTray: Config.options.bar.tray.filterPassive - property list itemsInUserList: SystemTray.items.values.filter(i => (Config.options.bar.tray.pinnedItems.includes(i.id) && (!smartTray || i.status !== Status.Passive))) - property list itemsNotInUserList: SystemTray.items.values.filter(i => (!Config.options.bar.tray.pinnedItems.includes(i.id) && (!smartTray || i.status !== Status.Passive))) - - property bool invertPins: Config.options.bar.tray.invertPinnedItems - property list pinnedItems: invertPins ? itemsNotInUserList : itemsInUserList - property list unpinnedItems: invertPins ? itemsInUserList : itemsNotInUserList + property list pinnedItems: TrayService.pinnedItems + property list unpinnedItems: TrayService.unpinnedItems onUnpinnedItemsChanged: { if (unpinnedItems.length == 0) root.closeOverflowMenu(); } diff --git a/dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml index 1fe5df5f3..40549e6fe 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml @@ -1,11 +1,12 @@ -import qs.modules.common -import qs.modules.common.widgets -import qs.modules.common.functions import QtQuick import Quickshell import Quickshell.Services.SystemTray import Quickshell.Widgets import Qt5Compat.GraphicalEffects +import qs.services +import qs.modules.common +import qs.modules.common.widgets +import qs.modules.common.functions MouseArea { id: root @@ -31,10 +32,7 @@ MouseArea { event.accepted = true; } onEntered: { - tooltip.text = item.tooltipTitle.length > 0 ? item.tooltipTitle - : (item.title.length > 0 ? item.title : item.id); - if (item.tooltipDescription.length > 0) tooltip.text += " • " + item.tooltipDescription; - if (Config.options.bar.tray.showItemId) tooltip.text += "\n[" + item.id + "]"; + tooltip.text = TrayService.getTooltipForItem(root.item); } Loader { diff --git a/dots/.config/quickshell/ii/services/TrayService.qml b/dots/.config/quickshell/ii/services/TrayService.qml new file mode 100644 index 000000000..f957c46a6 --- /dev/null +++ b/dots/.config/quickshell/ii/services/TrayService.qml @@ -0,0 +1,26 @@ +pragma Singleton + +import qs.modules.common +import QtQuick +import Quickshell +import Quickshell.Services.SystemTray + +Singleton { + id: root + + property bool smartTray: Config.options.bar.tray.filterPassive + property list itemsInUserList: SystemTray.items.values.filter(i => (Config.options.bar.tray.pinnedItems.includes(i.id) && (!smartTray || i.status !== Status.Passive))) + property list itemsNotInUserList: SystemTray.items.values.filter(i => (!Config.options.bar.tray.pinnedItems.includes(i.id) && (!smartTray || i.status !== Status.Passive))) + + property bool invertPins: Config.options.bar.tray.invertPinnedItems + property list pinnedItems: invertPins ? itemsNotInUserList : itemsInUserList + property list unpinnedItems: invertPins ? itemsInUserList : itemsNotInUserList + + function getTooltipForItem(item) { + var result = item.tooltipTitle.length > 0 ? item.tooltipTitle + : (item.title.length > 0 ? item.title : item.id); + if (item.tooltipDescription.length > 0) result += " • " + item.tooltipDescription; + if (Config.options.bar.tray.showItemId) result += "\n[" + item.id + "]"; + return result; + } +}