mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-29 16:02:51 -05:00
meta: Vertical Bar, Notification Popup Position Options, ++
- CC Color picker widget - Tooltips in more places - Attempt to improve niri screen transitiosn
This commit is contained in:
88
Modules/DankBar/WidgetHost.qml
Normal file
88
Modules/DankBar/WidgetHost.qml
Normal file
@@ -0,0 +1,88 @@
|
||||
import QtQuick
|
||||
import Quickshell.Services.Mpris
|
||||
import qs.Services
|
||||
|
||||
Loader {
|
||||
id: root
|
||||
|
||||
property string widgetId: ""
|
||||
property var widgetData: null
|
||||
property int spacerSize: 20
|
||||
property var components: null
|
||||
property bool isInColumn: false
|
||||
property var axis: null
|
||||
|
||||
asynchronous: false
|
||||
|
||||
active: getWidgetVisible(widgetId, DgopService.dgopAvailable) &&
|
||||
(widgetId !== "music" || MprisController.activePlayer !== null)
|
||||
sourceComponent: getWidgetComponent(widgetId, components)
|
||||
opacity: getWidgetEnabled(widgetData?.enabled) ? 1 : 0
|
||||
|
||||
signal contentItemReady(var item)
|
||||
|
||||
onLoaded: {
|
||||
if (item) {
|
||||
contentItemReady(item)
|
||||
if (widgetId === "spacer") {
|
||||
item.spacerSize = Qt.binding(() => spacerSize)
|
||||
}
|
||||
if (axis && "axis" in item) {
|
||||
item.axis = axis
|
||||
}
|
||||
if (axis && "isVertical" in item) {
|
||||
item.isVertical = axis.isVertical
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getWidgetComponent(widgetId, components) {
|
||||
const componentMap = {
|
||||
"launcherButton": components.launcherButtonComponent,
|
||||
"workspaceSwitcher": components.workspaceSwitcherComponent,
|
||||
"focusedWindow": components.focusedWindowComponent,
|
||||
"runningApps": components.runningAppsComponent,
|
||||
"clock": components.clockComponent,
|
||||
"music": components.mediaComponent,
|
||||
"weather": components.weatherComponent,
|
||||
"systemTray": components.systemTrayComponent,
|
||||
"privacyIndicator": components.privacyIndicatorComponent,
|
||||
"clipboard": components.clipboardComponent,
|
||||
"cpuUsage": components.cpuUsageComponent,
|
||||
"memUsage": components.memUsageComponent,
|
||||
"diskUsage": components.diskUsageComponent,
|
||||
"cpuTemp": components.cpuTempComponent,
|
||||
"gpuTemp": components.gpuTempComponent,
|
||||
"notificationButton": components.notificationButtonComponent,
|
||||
"battery": components.batteryComponent,
|
||||
"controlCenterButton": components.controlCenterButtonComponent,
|
||||
"idleInhibitor": components.idleInhibitorComponent,
|
||||
"spacer": components.spacerComponent,
|
||||
"separator": components.separatorComponent,
|
||||
"network_speed_monitor": components.networkComponent,
|
||||
"keyboard_layout_name": components.keyboardLayoutNameComponent,
|
||||
"vpn": components.vpnComponent,
|
||||
"notepadButton": components.notepadButtonComponent,
|
||||
"colorPicker": components.colorPickerComponent,
|
||||
"systemUpdate": components.systemUpdateComponent
|
||||
}
|
||||
|
||||
return componentMap[widgetId] || null
|
||||
}
|
||||
|
||||
function getWidgetVisible(widgetId, dgopAvailable) {
|
||||
const widgetVisibility = {
|
||||
"cpuUsage": dgopAvailable,
|
||||
"memUsage": dgopAvailable,
|
||||
"cpuTemp": dgopAvailable,
|
||||
"gpuTemp": dgopAvailable,
|
||||
"network_speed_monitor": dgopAvailable
|
||||
}
|
||||
|
||||
return widgetVisibility[widgetId] ?? true
|
||||
}
|
||||
|
||||
function getWidgetEnabled(enabled) {
|
||||
return enabled !== false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user