From a8f0a1d6e32e1466c3fc3c0c51b1302fda343d62 Mon Sep 17 00:00:00 2001 From: lucy Date: Tue, 3 Feb 2026 19:11:47 +0100 Subject: [PATCH 1/7] remove useless button --- modules/ipc/Ipc.qml | 2 +- modules/widgets/settingsapp/Appearance.qml | 32 ------------------- modules/widgets/wallswitcher/WallSwitcher.qml | 2 +- 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/modules/ipc/Ipc.qml b/modules/ipc/Ipc.qml index 37cd653..cd2f116 100644 --- a/modules/ipc/Ipc.qml +++ b/modules/ipc/Ipc.qml @@ -16,7 +16,7 @@ Item { console.log(Settings.config.generateScheme); Settings.config.currentWall = newWall; if (Settings.config.generateScheme === true) { - wallustRunner.startDetached(); + wallustRunner.running = true; } } function setFont(newFont: string): void { diff --git a/modules/widgets/settingsapp/Appearance.qml b/modules/widgets/settingsapp/Appearance.qml index fa5eaa9..ae7e5c8 100644 --- a/modules/widgets/settingsapp/Appearance.qml +++ b/modules/widgets/settingsapp/Appearance.qml @@ -278,38 +278,6 @@ ClippingWrapperRectangle { } } } - ClippingWrapperRectangle { - id: schemeGeneratorWrapper - Layout.fillWidth: true - leftMargin: 10 - rightMargin: 15 - implicitHeight: 30 - bottomLeftRadius: 12 - bottomRightRadius: 12 - topRightRadius: 4 - topLeftRadius: 4 - color: Colors.surfaceContainerHigh - child: RowLayout { - id: schemeGeneratorLayout - spacing: 5 - CustomText { - id: schemeGeneratorText - text: "Scheme generator" - Layout.fillWidth: true - } - CustomButton { - implicitHeight: schemeGeneratorWrapper.implicitHeight - 10 - onClicked: { - if (Settings.config.schemeGenerator === "matugen") { - Settings.config.schemeGenerator = "wallust"; - } else { - Settings.config.schemeGenerator = "matugen"; - } - } - customText: Settings.config.schemeGenerator - } - } - } Item { id: spring Layout.fillHeight: true diff --git a/modules/widgets/wallswitcher/WallSwitcher.qml b/modules/widgets/wallswitcher/WallSwitcher.qml index 65aac2d..351be04 100644 --- a/modules/widgets/wallswitcher/WallSwitcher.qml +++ b/modules/widgets/wallswitcher/WallSwitcher.qml @@ -23,7 +23,7 @@ FloatingWindow { } Process { id: wallustRunner - property string cmd: Settings.config.schemeGenerator === "matugen" ? "matugen image " + Settings.config.currentWall : "wallust run " + Settings.config.currentWall + property string cmd: "matugen image " + Settings.config.currentWall command: ["sh", "-c", cmd] } GlobalShortcut { From 45afaf955ebc34da43c8d4c8e03cdf3864dd0d38 Mon Sep 17 00:00:00 2001 From: lucy Date: Tue, 3 Feb 2026 19:16:04 +0100 Subject: [PATCH 2/7] remove old color shit from noti card --- modules/notifications/NotificationCard.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/notifications/NotificationCard.qml b/modules/notifications/NotificationCard.qml index aa86558..f2ed854 100644 --- a/modules/notifications/NotificationCard.qml +++ b/modules/notifications/NotificationCard.qml @@ -11,7 +11,7 @@ Rectangle { required property var modelData implicitWidth: ListView.view ? ListView.view.width : 300 implicitHeight: fullLayout.implicitHeight + 20 - color: dismissArea.containsMouse ? Colors.color5 : Colors.color6 + color: dismissArea.containsMouse ? Colors.surfaceContainerLow : Colors.surfaceContainerHigh radius: 22 Timer { id: dismissTimer From 2b9e44f71f0593961244900f462acbe9f3620404 Mon Sep 17 00:00:00 2001 From: lucy Date: Tue, 3 Feb 2026 23:59:00 +0100 Subject: [PATCH 3/7] changes to icon centering --- modules/bar/Volume.qml | 4 +++- modules/notifications/NotificationCard.qml | 2 +- reusables/CustomIcon.qml | 12 +++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/bar/Volume.qml b/modules/bar/Volume.qml index 67fb916..3a8b308 100644 --- a/modules/bar/Volume.qml +++ b/modules/bar/Volume.qml @@ -38,10 +38,12 @@ Rectangle { } RowLayout { id: textRow - spacing: 2 + spacing: 0 anchors.centerIn: parent + height: parent.height CustomText { id: volumeText + Layout.alignment: Qt.AlignVCenter PwObjectTracker { objects: Pipewire.ready ? Pipewire.defaultAudioSink : [] } diff --git a/modules/notifications/NotificationCard.qml b/modules/notifications/NotificationCard.qml index f2ed854..f19e469 100644 --- a/modules/notifications/NotificationCard.qml +++ b/modules/notifications/NotificationCard.qml @@ -32,7 +32,7 @@ Rectangle { id: notiIcon radius: notifyItem.radius - notifyItem.radius / 3 implicitWidth: 64 - color: Colors.color8 + color: "transparent" implicitHeight: 64 visible: notifyItem.modelData.image !== "" IconImage { diff --git a/reusables/CustomIcon.qml b/reusables/CustomIcon.qml index a312afb..98084a0 100644 --- a/reusables/CustomIcon.qml +++ b/reusables/CustomIcon.qml @@ -1,10 +1,16 @@ import QtQuick -import qs.settings import qs +import qs.settings Text { - verticalAlignment: Text.AlignVCenter + property real fill: 0 font.family: "Material Symbols Rounded" color: Colors.onSurfaceColor - font.pixelSize: Settings.config.fontSize + 2 + font.pixelSize: Settings.config.fontSize + font.variableAxes: ({ + FILL: fill, + GRAD: 0, + opsz: 24, + wght: 400 + }) } From 7d08bf3366f206b1d096f413fd70fc27fcb8c8d3 Mon Sep 17 00:00:00 2001 From: lucy Date: Fri, 6 Feb 2026 13:56:41 +0100 Subject: [PATCH 4/7] add network block to bar, only supports wifi for now --- modules/bar/Bar.qml | 1 + modules/bar/Network.qml | 100 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 modules/bar/Network.qml diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index f563d1d..00e7990 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -57,6 +57,7 @@ Variants { spacing: 10 anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter + Network {} Volume {} Battery {} SysTray {} diff --git a/modules/bar/Network.qml b/modules/bar/Network.qml new file mode 100644 index 0000000..34862d2 --- /dev/null +++ b/modules/bar/Network.qml @@ -0,0 +1,100 @@ +pragma ComponentBehavior: Bound +import Quickshell.Networking +import QtQuick +import QtQuick.Layouts +import qs.reusables +import qs.settings +import qs + +Rectangle { + id: root + // This is the background of the entire bar/module + // You might want to make this transparent if you only want the "pills" to show + color: "transparent" + implicitHeight: Settings.config.barHeight - 10 + implicitWidth: mainLayout.implicitWidth + anchors.verticalCenter: parent.verticalCenter + + // --- Logic Functions --- + function getIcon(device) { + if (device.type === DeviceType.Wifi) { + for (var i = 0; i < device.networks.values.length; i++) { + var net = device.networks.values[i]; + if (net.connected) { + if (net.signalStrength <= 0.20) + return "android_wifi_0_bar"; + if (net.signalStrength <= 0.40) + return "android_wifi_1_bar"; + if (net.signalStrength <= 0.60) + return "android_wifi_2_bar"; + if (net.signalStrength <= 0.80) + return "android_wifi_3_bar"; + return "android_wifi_4_bar"; + } + } + return "wifi_off"; + } else if (device.connected) { + return "settings_ethernet"; + } + return "wifi_off"; + } + + function getStatus(device) { + if (device.type === DeviceType.Wifi) { + for (var i = 0; i < device.networks.values.length; i++) { + var net = device.networks.values[i]; + if (net.connected) { + return net.name; + } + } + return "Disconnected"; + } + return device.connected ? "Connected" : "Disconnected"; + } + + // --- Main Layout --- + RowLayout { + id: mainLayout + anchors.centerIn: parent + spacing: 10 // Space between multiple device pills (if you have ethernet + wifi) + + Repeater { + id: netRepeater + model: Networking.devices + + delegate: Rectangle { + id: devicePill + + // Style settings for the "Pill" + color: Colors.surfaceContainer // Or use a specific grey: "#333333" + height: root.implicitHeight + radius: height / 2 + + // Calculate width: Content width + Padding (12px on each side) + width: innerContent.implicitWidth + 24 + + RowLayout { + id: innerContent + // THIS fixes the centering issue: + anchors.centerIn: parent + spacing: 8 + + CustomIcon { + id: netIcon + Layout.alignment: Qt.AlignVCenter + text: root.getIcon(modelData) + } + + CustomText { + id: netText + Layout.topMargin: 2 + Layout.alignment: Qt.AlignVCenter + text: root.getStatus(modelData) + // Ensures the text font aligns vertically within its own line-height + verticalAlignment: Text.AlignVCenter + } + } + } + } + } +} From 7cf16507949b939c4086bc9ce9733a2bb25c4298 Mon Sep 17 00:00:00 2001 From: lucy Date: Fri, 6 Feb 2026 14:05:29 +0100 Subject: [PATCH 5/7] use RowLayout instead of Row --- modules/bar/Bar.qml | 9 +++++---- modules/bar/Battery.qml | 1 - modules/bar/Network.qml | 1 - modules/bar/SettingsIcon.qml | 1 - modules/bar/Title.qml | 1 - modules/bar/Volume.qml | 1 - modules/bar/Workspaces.qml | 3 +-- 7 files changed, 6 insertions(+), 11 deletions(-) diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index 00e7990..63d931c 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -1,6 +1,7 @@ pragma ComponentBehavior: Bound import Quickshell import QtQuick +import QtQuick.Layouts import qs import qs.settings @@ -32,9 +33,9 @@ Variants { color: Qt.rgba(Colors.surface.r, Colors.surface.g, Colors.surface.b, Settings.config.translucency) radius: Settings.config.floating ? Settings.config.barHeight / 2 : 0 - Row { + RowLayout { id: leftStuff - leftPadding: Settings.config.barHeight / 4 + anchors.margins: Settings.config.barHeight / 4 spacing: 10 anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter @@ -51,9 +52,9 @@ Variants { Clock {} } - Row { + RowLayout { id: rightStuff - rightPadding: Settings.config.barHeight / 4 + anchors.margins: Settings.config.barHeight / 4 spacing: 10 anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter diff --git a/modules/bar/Battery.qml b/modules/bar/Battery.qml index bbd774c..05adbf4 100644 --- a/modules/bar/Battery.qml +++ b/modules/bar/Battery.qml @@ -11,7 +11,6 @@ import qs.settings Loader { id: batLoader active: UPower.displayDevice.isLaptopBattery - anchors.verticalCenter: parent.verticalCenter sourceComponent: Rectangle { id: container diff --git a/modules/bar/Network.qml b/modules/bar/Network.qml index 34862d2..6670d4d 100644 --- a/modules/bar/Network.qml +++ b/modules/bar/Network.qml @@ -13,7 +13,6 @@ Rectangle { color: "transparent" implicitHeight: Settings.config.barHeight - 10 implicitWidth: mainLayout.implicitWidth - anchors.verticalCenter: parent.verticalCenter // --- Logic Functions --- function getIcon(device) { diff --git a/modules/bar/SettingsIcon.qml b/modules/bar/SettingsIcon.qml index 1ff2e06..37fa85d 100644 --- a/modules/bar/SettingsIcon.qml +++ b/modules/bar/SettingsIcon.qml @@ -8,7 +8,6 @@ Rectangle { id: root radius: implicitHeight / 2 color: pavuArea.containsMouse ? Colors.primaryContainer : Colors.surfaceContainer - anchors.verticalCenter: parent.verticalCenter implicitWidth: volumeIcon.implicitWidth + 10 implicitHeight: Settings.config.barHeight - 10 CustomIcon { diff --git a/modules/bar/Title.qml b/modules/bar/Title.qml index 85df49e..2b5cf62 100644 --- a/modules/bar/Title.qml +++ b/modules/bar/Title.qml @@ -8,7 +8,6 @@ Rectangle { id: container radius: implicitHeight / 2 color: Colors.surfaceContainer - anchors.verticalCenter: parent.verticalCenter implicitWidth: root.implicitWidth implicitHeight: Settings.config.barHeight - 10 Item { diff --git a/modules/bar/Volume.qml b/modules/bar/Volume.qml index 3a8b308..183e171 100644 --- a/modules/bar/Volume.qml +++ b/modules/bar/Volume.qml @@ -10,7 +10,6 @@ Rectangle { id: root radius: implicitHeight / 2 color: pavuArea.containsMouse ? Colors.primaryContainer : Colors.surfaceContainer - anchors.verticalCenter: parent.verticalCenter implicitWidth: textRow.implicitWidth + 20 implicitHeight: Settings.config.barHeight - 8 property var sink: Pipewire.defaultAudioSink diff --git a/modules/bar/Workspaces.qml b/modules/bar/Workspaces.qml index 040445b..c12163f 100644 --- a/modules/bar/Workspaces.qml +++ b/modules/bar/Workspaces.qml @@ -10,9 +10,8 @@ Rectangle { color: Colors.surfaceContainer implicitWidth: workspaceRow.implicitWidth + 10 - implicitHeight: Settings.config.barHeight - 10 + implicitHeight: Settings.config.barHeight - 10 radius: Settings.config.barHeight / 2 - anchors.verticalCenter: parent.verticalCenter property var screen: screen Row { id: workspaceRow From e100bfa0e0dfb5e983a81ddebff98dd4ab4d2e99 Mon Sep 17 00:00:00 2001 From: lucy Date: Fri, 6 Feb 2026 14:13:29 +0100 Subject: [PATCH 6/7] fix inconsistent margins --- modules/bar/Bar.qml | 1 + modules/bar/Network.qml | 1 - modules/bar/Volume.qml | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index 63d931c..11fbda5 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -56,6 +56,7 @@ Variants { id: rightStuff anchors.margins: Settings.config.barHeight / 4 spacing: 10 + clip: true anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter Network {} diff --git a/modules/bar/Network.qml b/modules/bar/Network.qml index 6670d4d..aca94f9 100644 --- a/modules/bar/Network.qml +++ b/modules/bar/Network.qml @@ -54,7 +54,6 @@ Rectangle { // --- Main Layout --- RowLayout { id: mainLayout - anchors.centerIn: parent spacing: 10 // Space between multiple device pills (if you have ethernet + wifi) Repeater { diff --git a/modules/bar/Volume.qml b/modules/bar/Volume.qml index 183e171..a0e2322 100644 --- a/modules/bar/Volume.qml +++ b/modules/bar/Volume.qml @@ -11,7 +11,7 @@ Rectangle { radius: implicitHeight / 2 color: pavuArea.containsMouse ? Colors.primaryContainer : Colors.surfaceContainer implicitWidth: textRow.implicitWidth + 20 - implicitHeight: Settings.config.barHeight - 8 + implicitHeight: Settings.config.barHeight - 10 property var sink: Pipewire.defaultAudioSink function getVolumeIcon() { // Safety check: if Pipewire is dead or sink is missing From 9ab859b1423a55dc11f2ea1efefbc715efbf290a Mon Sep 17 00:00:00 2001 From: lucy Date: Fri, 6 Feb 2026 14:29:25 +0100 Subject: [PATCH 7/7] changes to network module and remove useless ipc commands --- modules/bar/Battery.qml | 2 +- modules/bar/Network.qml | 53 +++++++++++++++++----------------------- modules/bar/Volume.qml | 5 ++-- modules/ipc/Ipc.qml | 12 ++++----- reusables/CustomIcon.qml | 4 +-- 5 files changed, 32 insertions(+), 44 deletions(-) diff --git a/modules/bar/Battery.qml b/modules/bar/Battery.qml index 05adbf4..7663ad0 100644 --- a/modules/bar/Battery.qml +++ b/modules/bar/Battery.qml @@ -17,7 +17,7 @@ Loader { radius: implicitHeight / 2 color: clickHandler.containsMouse ? Colors.primaryContainer : Colors.surfaceContainer anchors.verticalCenter: parent.verticalCenter - implicitWidth: root.implicitWidth + 20 + implicitWidth: UPower.displayDevice.isLaptopBattery ? root.implicitWidth + 20 : 0 implicitHeight: Settings.config.barHeight - 10 Item { id: root diff --git a/modules/bar/Network.qml b/modules/bar/Network.qml index aca94f9..bbb78d0 100644 --- a/modules/bar/Network.qml +++ b/modules/bar/Network.qml @@ -10,9 +10,10 @@ Rectangle { id: root // This is the background of the entire bar/module // You might want to make this transparent if you only want the "pills" to show - color: "transparent" implicitHeight: Settings.config.barHeight - 10 - implicitWidth: mainLayout.implicitWidth + implicitWidth: mainLayout.implicitWidth + 20 + color: Colors.surfaceContainer + radius: implicitHeight / 2 // --- Logic Functions --- function getIcon(device) { @@ -54,43 +55,33 @@ Rectangle { // --- Main Layout --- RowLayout { id: mainLayout + anchors.centerIn: parent spacing: 10 // Space between multiple device pills (if you have ethernet + wifi) Repeater { id: netRepeater model: Networking.devices - delegate: Rectangle { - id: devicePill + delegate: RowLayout { + id: innerContent + required property var modelData + // THIS fixes the centering issue: + anchors.centerIn: parent + spacing: 8 - // Style settings for the "Pill" - color: Colors.surfaceContainer // Or use a specific grey: "#333333" - height: root.implicitHeight - radius: height / 2 + CustomIcon { + id: netIcon + Layout.alignment: Qt.AlignVCenter + text: root.getIcon(innerContent.modelData) + } - // Calculate width: Content width + Padding (12px on each side) - width: innerContent.implicitWidth + 24 - - RowLayout { - id: innerContent - // THIS fixes the centering issue: - anchors.centerIn: parent - spacing: 8 - - CustomIcon { - id: netIcon - Layout.alignment: Qt.AlignVCenter - text: root.getIcon(modelData) - } - - CustomText { - id: netText - Layout.topMargin: 2 - Layout.alignment: Qt.AlignVCenter - text: root.getStatus(modelData) - // Ensures the text font aligns vertically within its own line-height - verticalAlignment: Text.AlignVCenter - } + CustomText { + id: netText + Layout.topMargin: 1 + Layout.alignment: Qt.AlignVCenter + text: root.getStatus(innerContent.modelData) + // Ensures the text font aligns vertically within its own line-height + verticalAlignment: Text.AlignVCenter } } } diff --git a/modules/bar/Volume.qml b/modules/bar/Volume.qml index a0e2322..8257796 100644 --- a/modules/bar/Volume.qml +++ b/modules/bar/Volume.qml @@ -37,12 +37,12 @@ Rectangle { } RowLayout { id: textRow - spacing: 0 + spacing: 2 anchors.centerIn: parent height: parent.height CustomText { id: volumeText - Layout.alignment: Qt.AlignVCenter + Layout.topMargin: 1 PwObjectTracker { objects: Pipewire.ready ? Pipewire.defaultAudioSink : [] } @@ -51,7 +51,6 @@ Rectangle { } CustomIcon { id: volumeIcon - Layout.alignment: Qt.AlignVCenter opacity: Pipewire.ready ? root.sink.audio.muted ? 0.5 : 1 : 0 text: Pipewire.ready ? root.getVolumeIcon() : null } diff --git a/modules/ipc/Ipc.qml b/modules/ipc/Ipc.qml index cd2f116..0d91445 100644 --- a/modules/ipc/Ipc.qml +++ b/modules/ipc/Ipc.qml @@ -2,6 +2,7 @@ import QtQuick import Quickshell.Io import qs.settings import QtQuick.Dialogs +import Quickshell Item { FontDialog { @@ -12,18 +13,15 @@ Item { IpcHandler { id: ipcHandler target: "settings" - function setWall(newWall: string): void { - console.log(Settings.config.generateScheme); - Settings.config.currentWall = newWall; - if (Settings.config.generateScheme === true) { - wallustRunner.running = true; - } - } function setFont(newFont: string): void { Settings.config.font = newFont; } function gen(toggle: bool): void { Settings.config.generateScheme = toggle; } + function reload(hard: bool): void { + Quickshell.reload(hard); + console.log("reloaded!"); + } } } diff --git a/reusables/CustomIcon.qml b/reusables/CustomIcon.qml index 98084a0..6647e7d 100644 --- a/reusables/CustomIcon.qml +++ b/reusables/CustomIcon.qml @@ -9,8 +9,8 @@ Text { font.pixelSize: Settings.config.fontSize font.variableAxes: ({ FILL: fill, - GRAD: 0, - opsz: 24, + GRAD: 200, + opsz: 36, wght: 400 }) }