diff --git a/configuration/modules/dots/quick_shell/.envrc b/configuration/modules/dots/quick_shell/.envrc new file mode 100644 index 0000000..e69de29 diff --git a/configuration/modules/dots/quick_shell/config/.qmlls.ini b/configuration/modules/dots/quick_shell/config/.qmlls.ini deleted file mode 100644 index e69de29..0000000 diff --git a/configuration/modules/dots/quick_shell/config/.qmlls.ini b/configuration/modules/dots/quick_shell/config/.qmlls.ini new file mode 120000 index 0000000..4ddb8a7 --- /dev/null +++ b/configuration/modules/dots/quick_shell/config/.qmlls.ini @@ -0,0 +1 @@ +/run/user/1000/quickshell/vfs/740f0dbe5bf608b9ce0b8dffafd96492/.qmlls.ini \ No newline at end of file diff --git a/configuration/modules/dots/quick_shell/config/PowerPopup.qml b/configuration/modules/dots/quick_shell/config/PowerPopup.qml new file mode 100644 index 0000000..af8a325 --- /dev/null +++ b/configuration/modules/dots/quick_shell/config/PowerPopup.qml @@ -0,0 +1,86 @@ +pragma ComponentBehavior: Bound + +import Quickshell +import QtQuick +import QtQuick.Controls + +PanelWindow { + id: powerPopup + + required property bool expanderOpen + required property color bgColor + required property color recColor + required property int recRadius + required property int barWidth + + anchors.left: true + anchors.bottom: true + implicitWidth: (expanderOpen || powerAnim.running) ? 140 : 0 + implicitHeight: (expanderOpen || powerAnim.running) ? 100 : 0 + color: "transparent" + + Rectangle { + id: powerRectangle + + y: parent.height - height + x: powerPopup.expanderOpen ? 0 : -(width + powerPopup.barWidth) + width: 140 + height: 100 + color: powerPopup.bgColor + + Behavior on x { + NumberAnimation { + id: powerAnim + + duration: 400 + easing.type: Easing.OutCubic + } + } + + Row { + anchors.centerIn: powerRectangle + spacing: 10 + + Rectangle { + color: powerPopup.recColor + width: 50 + height: 50 + radius: powerPopup.recRadius * 2 + + Button { + anchors.fill: parent + opacity: 0 + + onClicked: Quickshell.execDetached(["poweroff"]) + } + + Image { + anchors.centerIn: parent + source: "file://" + Quickshell.shellDir + "/assets/power.svg" + sourceSize.width: 28 + sourceSize.height: 28 + } + } + Rectangle { + color: powerPopup.recColor + width: 50 + height: 50 + radius: powerPopup.recRadius * 2 + + Button { + anchors.fill: parent + opacity: 0 + + onClicked: Quickshell.execDetached(["reboot"]) + } + + Image { + anchors.centerIn: parent + source: "file://" + Quickshell.shellDir + "/assets/reboot.svg" + sourceSize.width: 28 + sourceSize.height: 28 + } + } + } + } +} diff --git a/configuration/modules/dots/quick_shell/config/SideBar.qml b/configuration/modules/dots/quick_shell/config/SideBar.qml new file mode 100644 index 0000000..eef6000 --- /dev/null +++ b/configuration/modules/dots/quick_shell/config/SideBar.qml @@ -0,0 +1,135 @@ +pragma ComponentBehavior: Bound + +import Quickshell +import QtQuick +import QtQuick.Controls + +PanelWindow { + id: sideBar + + required property var clock + required property color bgColor + required property color recColor + required property color fontColor + required property int fontSize + required property int barWidth + required property int recRadius + required property int recLength + required property int myMargin + required property int edgeMargin + + required property bool expanderOpen + + anchors.top: true + anchors.left: true + anchors.bottom: true + + implicitWidth: sideBar.barWidth + color: sideBar.bgColor + + Rectangle { + id: logo + anchors { + horizontalCenter: parent.horizontalCenter + top: parent.top + topMargin: sideBar.edgeMargin + } + implicitHeight: sideBar.recLength + implicitWidth: sideBar.recLength + radius: sideBar.recRadius + color: sideBar.recColor + + Image { + anchors.centerIn: parent + source: "file://" + Quickshell.shellDir + "/assets/logo.svg" + sourceSize.width: 30 + sourceSize.height: 30 + } + } + + Rectangle { + id: workspaces + anchors { + horizontalCenter: parent.horizontalCenter + top: logo.bottom + topMargin: sideBar.myMargin + } + implicitHeight: 200 + implicitWidth: sideBar.recLength + radius: sideBar.recRadius + color: sideBar.recColor + + Text { + anchors.centerIn: parent + color: sideBar.fontColor + font.pixelSize: sideBar.fontSize + text: "ws" + } + } + + Rectangle { + id: notifications + anchors { + horizontalCenter: parent.horizontalCenter + bottom: time.top + bottomMargin: sideBar.myMargin + } + implicitHeight: sideBar.recLength + implicitWidth: sideBar.recLength + radius: sideBar.recRadius + color: sideBar.recColor + + Text { + anchors.centerIn: parent + color: sideBar.fontColor + font.pixelSize: sideBar.fontSize + text: "notif" + } + } + + Rectangle { + id: time + anchors { + horizontalCenter: parent.horizontalCenter + bottom: power.top + bottomMargin: sideBar.myMargin + } + implicitHeight: sideBar.recLength + implicitWidth: sideBar.recLength + radius: sideBar.recRadius + color: sideBar.recColor + + Text { + anchors.centerIn: parent + color: sideBar.fontColor + font.pixelSize: sideBar.fontSize + text: Qt.formatDateTime(sideBar.clock.date, "hh\nmm") + } + } + + Rectangle { + id: power + anchors { + horizontalCenter: parent.horizontalCenter + bottom: parent.bottom + bottomMargin: sideBar.edgeMargin + } + implicitHeight: sideBar.recLength + implicitWidth: sideBar.recLength + radius: sideBar.recRadius + color: sideBar.recColor + + Button { + anchors.fill: parent + opacity: 0 + onClicked: sideBar.expanderOpen = !sideBar.expanderOpen + } + + Image { + anchors.centerIn: parent + source: "file://" + Quickshell.shellDir + "/assets/power.svg" + sourceSize.width: 28 + sourceSize.height: 28 + } + } +} diff --git a/configuration/modules/dots/quick_shell/config/assets/reboot.svg b/configuration/modules/dots/quick_shell/config/assets/reboot.svg new file mode 100644 index 0000000..5e3110e --- /dev/null +++ b/configuration/modules/dots/quick_shell/config/assets/reboot.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/configuration/modules/dots/quick_shell/config/shell.qml b/configuration/modules/dots/quick_shell/config/shell.qml index 837dfd1..91d894c 100644 --- a/configuration/modules/dots/quick_shell/config/shell.qml +++ b/configuration/modules/dots/quick_shell/config/shell.qml @@ -2,7 +2,6 @@ pragma ComponentBehavior: Bound import Quickshell import QtQuick -import QtQuick.Controls ShellRoot { id: root @@ -17,8 +16,6 @@ ShellRoot { property int myMargin: 10 property int edgeMargin: 15 - property bool expanderOpen: false - SystemClock { id: clock precision: SystemClock.Minutes @@ -27,178 +24,35 @@ ShellRoot { Variants { model: Quickshell.screens - PanelWindow { - property var modelData + delegate: Scope { + id: delegate + required property var modelData - screen: modelData - anchors.top: true - anchors.left: true - anchors.bottom: true + property bool expanderOpen: false - implicitWidth: root.barWidth - color: root.bgColor - - Rectangle { - id: logo - - anchors { - horizontalCenter: parent.horizontalCenter - top: parent.top - topMargin: root.edgeMargin - } - - implicitHeight: root.recLength - implicitWidth: root.recLength - color: root.recColor - - bottomLeftRadius: root.recRadius - bottomRightRadius: root.recRadius - topLeftRadius: root.recRadius - topRightRadius: root.recRadius - - Image { - anchors.centerIn: parent - source: "file://" + Quickshell.shellDir + "/assets/logo.svg" - - sourceSize.width: 30 - sourceSize.height: 30 - } + SideBar { + clock: clock + screen: delegate.modelData + bgColor: root.bgColor + recColor: root.recColor + fontColor: root.fontColor + fontSize: root.fontSize + barWidth: root.barWidth + recRadius: root.recRadius + recLength: root.recLength + myMargin: root.myMargin + edgeMargin: root.edgeMargin + expanderOpen: delegate.expanderOpen + onExpanderOpenChanged: delegate.expanderOpen = expanderOpen } - Rectangle { - id: workspaces - - anchors { - horizontalCenter: parent.horizontalCenter - top: logo.bottom - topMargin: root.myMargin - } - - implicitHeight: 200 - implicitWidth: root.recLength - color: root.recColor - - bottomLeftRadius: root.recRadius - bottomRightRadius: root.recRadius - topLeftRadius: root.recRadius - topRightRadius: root.recRadius - - Text { - anchors.centerIn: parent - color: root.fontColor - font.pixelSize: root.fontSize - text: "ws" - } - } - - Rectangle { - id: notifications - - anchors { - horizontalCenter: parent.horizontalCenter - bottom: time.top - bottomMargin: root.myMargin - } - - implicitHeight: root.recLength - implicitWidth: root.recLength - color: root.recColor - - bottomLeftRadius: root.recRadius - bottomRightRadius: root.recRadius - topLeftRadius: root.recRadius - topRightRadius: root.recRadius - - Text { - anchors.centerIn: parent - color: root.fontColor - font.pixelSize: root.fontSize - text: "notif" - } - } - - Rectangle { - id: time - - anchors { - horizontalCenter: parent.horizontalCenter - bottom: power.top - bottomMargin: root.myMargin - } - - implicitHeight: root.recLength - implicitWidth: root.recLength - color: root.recColor - - bottomLeftRadius: root.recRadius - bottomRightRadius: root.recRadius - topLeftRadius: root.recRadius - topRightRadius: root.recRadius - - Text { - anchors.centerIn: parent - color: root.fontColor - font.pixelSize: root.fontSize - text: Qt.formatDateTime(clock.date, "hh\nmm") - } - } - - Button { - id: power - - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - bottomMargin: root.edgeMargin - } - - implicitHeight: root.recLength - 4 - implicitWidth: root.recLength - 4 - - onClicked: root.expanderOpen = !root.expanderOpen - - Rectangle { - anchors.centerIn: parent - - implicitHeight: root.recLength - implicitWidth: root.recLength - color: root.recColor - - bottomLeftRadius: root.recRadius - bottomRightRadius: root.recRadius - topLeftRadius: root.recRadius - topRightRadius: root.recRadius - - Image { - anchors.centerIn: parent - source: "file://" + Quickshell.shellDir + "/assets/power.svg" - - sourceSize.width: 28 - sourceSize.height: 28 - } - } - } - } - } - - PanelWindow { - visible: root.expanderOpen - - anchors.left: true - anchors.bottom: true - - implicitWidth: 200 - implicitHeight: 150 - color: "transparent" - - Rectangle { - anchors.fill: parent - color: root.recColor - - Text { - anchors.centerIn: parent - color: root.fontColor - text: "Power Menu" + PowerPopup { + screen: delegate.modelData + expanderOpen: delegate.expanderOpen + bgColor: root.bgColor + recColor: root.recColor + recRadius: root.recRadius + barWidth: root.barWidth } } } diff --git a/configuration/modules/dots/quick_shell/shell.nix b/configuration/modules/dots/quick_shell/shell.nix new file mode 100644 index 0000000..6879520 --- /dev/null +++ b/configuration/modules/dots/quick_shell/shell.nix @@ -0,0 +1,10 @@ +{pkgs ? import {}}: +pkgs.mkShell { + buildInputs = [ + pkgs.qt6.qtbase + pkgs.qt6.qtdeclarative + pkgs.qt6.qtwayland + pkgs.qtcreator + pkgs.quickshell + ]; +}