From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../Modules/DankBar/Widgets/DWLLayout.qml | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/DWLLayout.qml (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/DWLLayout.qml') diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/DWLLayout.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/DWLLayout.qml new file mode 100644 index 0000000..f810cb6 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/DWLLayout.qml @@ -0,0 +1,110 @@ +import QtQuick +import Quickshell +import qs.Common +import qs.Modules.Plugins +import qs.Services +import qs.Widgets + +BasePill { + id: layout + + property bool layoutPopupVisible: false + property var popoutTarget: null + + signal toggleLayoutPopup() + + visible: CompositorService.isDwl && DwlService.dwlAvailable + + property var outputState: parentScreen ? DwlService.getOutputState(parentScreen.name) : null + property string currentLayoutSymbol: outputState?.layoutSymbol || "" + property int currentLayoutIndex: outputState?.layout || 0 + + readonly property var layoutIcons: ({ + "CT": "view_compact", + "G": "grid_view", + "K": "layers", + "M": "fullscreen", + "RT": "view_sidebar", + "S": "view_carousel", + "T": "view_quilt", + "VG": "grid_on", + "VK": "view_day", + "VS": "scrollable_header", + "VT": "clarify" + }) + + function getLayoutIcon(symbol) { + return layoutIcons[symbol] || "view_quilt" + } + + Connections { + target: DwlService + function onStateChanged() { + outputState = parentScreen ? DwlService.getOutputState(parentScreen.name) : null + } + } + + content: Component { + Item { + implicitWidth: layout.isVerticalOrientation ? (layout.widgetThickness - layout.horizontalPadding * 2) : layoutContent.implicitWidth + implicitHeight: layout.isVerticalOrientation ? layoutColumn.implicitHeight : (layout.widgetThickness - layout.horizontalPadding * 2) + + Column { + id: layoutColumn + visible: layout.isVerticalOrientation + anchors.centerIn: parent + spacing: 1 + + DankIcon { + name: layout.getLayoutIcon(layout.currentLayoutSymbol) + size: Theme.barIconSize(layout.barThickness, undefined, layout.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) + color: Theme.widgetTextColor + anchors.horizontalCenter: parent.horizontalCenter + } + + StyledText { + text: layout.currentLayoutSymbol + font.pixelSize: Theme.barTextSize(layout.barThickness, layout.barConfig?.fontScale, layout.barConfig?.maximizeWidgetText) + color: Theme.widgetTextColor + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Row { + id: layoutContent + visible: !layout.isVerticalOrientation + anchors.centerIn: parent + spacing: (barConfig?.noBackground ?? false) ? 1 : 2 + + DankIcon { + name: layout.getLayoutIcon(layout.currentLayoutSymbol) + size: Theme.barIconSize(layout.barThickness, -4, layout.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) + color: Theme.widgetTextColor + anchors.verticalCenter: parent.verticalCenter + } + + StyledText { + text: layout.currentLayoutSymbol + font.pixelSize: Theme.barTextSize(layout.barThickness, layout.barConfig?.fontScale, layout.barConfig?.maximizeWidgetText) + color: Theme.widgetTextColor + anchors.verticalCenter: parent.verticalCenter + } + } + } + } + + onClicked: { + toggleLayoutPopup() + } + + onRightClicked: { + if (!parentScreen || !DwlService.dwlAvailable || DwlService.layouts.length === 0) { + return + } + + const currentIndex = layout.currentLayoutIndex + const nextIndex = (currentIndex + 1) % DwlService.layouts.length + + DwlService.setLayout(parentScreen.name, nextIndex) + } +} -- cgit v1.3