pragma Singleton import QtQuick import Quickshell import qs.Commons import qs.Modules.Bar.Widgets Singleton { id: root // Widget registry object mapping widget names to components property var widgets: ({ "ActiveWindow": activeWindowComponent, "Battery": batteryComponent, "Bluetooth": bluetoothComponent, "Brightness": brightnessComponent, "Clock": clockComponent, "CustomButton": customButtonComponent, "DarkModeToggle": darkModeToggle, "KeepAwake": keepAwakeComponent, "KeyboardLayout": keyboardLayoutComponent, "MediaMini": mediaMiniComponent, "Microphone": microphoneComponent, "NightLight": nightLightComponent, "NotificationHistory": notificationHistoryComponent, "PowerProfile": powerProfileComponent, "PowerToggle": powerToggleComponent, "ScreenRecorderIndicator": screenRecorderIndicatorComponent, "SidePanelToggle": sidePanelToggleComponent, "Spacer": spacerComponent, "SystemMonitor": systemMonitorComponent, "Taskbar": taskbarComponent, "Tray": trayComponent, "Volume": volumeComponent, "WiFi": wiFiComponent, "Workspace": workspaceComponent }) property var widgetMetadata: ({ "ActiveWindow": { "allowUserSettings": true, "showIcon": true }, "Battery": { "allowUserSettings": true, "displayMode": "onhover", "warningThreshold": 30 }, "Brightness": { "allowUserSettings": true, "displayMode": "onhover" }, "Clock": { "allowUserSettings": true, "displayFormat": "time-date-short", "use12HourClock": false, "reverseDayMonth": true }, "CustomButton": { "allowUserSettings": true, "icon": "heart", "leftClickExec": "", "rightClickExec": "", "middleClickExec": "", "textCommand": "", "textIntervalMs": 3000 }, "Microphone": { "allowUserSettings": true, "displayMode": "onhover" }, "NotificationHistory": { "allowUserSettings": true, "showUnreadBadge": true, "hideWhenZero": true }, "Spacer": { "allowUserSettings": true, "width": 20 }, "SystemMonitor": { "allowUserSettings": true, "showCpuUsage": true, "showCpuTemp": true, "showMemoryUsage": true, "showMemoryAsPercent": false, "showNetworkStats": false, "showDiskUsage": false }, "Workspace": { "allowUserSettings": true, "labelMode": "index", "hideUnoccupied": false }, "MediaMini": { "allowUserSettings": true, "showAlbumArt": false, "showVisualizer": false, "visualizerType": "linear" }, "SidePanelToggle": { "allowUserSettings": true, "useDistroLogo": false }, "Volume": { "allowUserSettings": true, "displayMode": "onhover" }, "KeyboardLayout": { "allowUserSettings": true, "displayMode": "onhover" } }) // Component definitions - these are loaded once at startup property Component activeWindowComponent: Component { ActiveWindow {} } property Component batteryComponent: Component { Battery {} } property Component bluetoothComponent: Component { Bluetooth {} } property Component brightnessComponent: Component { Brightness {} } property Component clockComponent: Component { Clock {} } property Component customButtonComponent: Component { CustomButton {} } property Component darkModeToggle: Component { DarkModeToggle {} } property Component keyboardLayoutComponent: Component { KeyboardLayout {} } property Component keepAwakeComponent: Component { KeepAwake {} } property Component mediaMiniComponent: Component { MediaMini {} } property Component microphoneComponent: Component { Microphone {} } property Component nightLightComponent: Component { NightLight {} } property Component notificationHistoryComponent: Component { NotificationHistory {} } property Component powerProfileComponent: Component { PowerProfile {} } property Component powerToggleComponent: Component { PowerToggle {} } property Component screenRecorderIndicatorComponent: Component { ScreenRecorderIndicator {} } property Component sidePanelToggleComponent: Component { SidePanelToggle {} } property Component spacerComponent: Component { Spacer {} } property Component systemMonitorComponent: Component { SystemMonitor {} } property Component trayComponent: Component { Tray {} } property Component volumeComponent: Component { Volume {} } property Component wiFiComponent: Component { WiFi {} } property Component workspaceComponent: Component { Workspace {} } property Component taskbarComponent: Component { Taskbar {} } // ------------------------------ // Helper function to get widget component by name function getWidget(id) { return widgets[id] || null } // Helper function to check if widget exists function hasWidget(id) { return id in widgets } // Get list of available widget id function getAvailableWidgets() { return Object.keys(widgets) } // Helper function to check if widget has user settings function widgetHasUserSettings(id) { return (widgetMetadata[id] !== undefined) && (widgetMetadata[id].allowUserSettings === true) } function getPillDirection(widget) { try { if (widget.section === "left") { return true } else if (widget.section === "right") { return false } else { // middle section if (widget.sectionWidgetIndex < widget.sectionWidgetsCount / 2) { return false } else { return true } } } catch (e) { Logger.error(e) } return false } }