From 42919c59ec616012c7a5d755d7ee05abfa44daab Mon Sep 17 00:00:00 2001
From: end-4 <97237370+end-4@users.noreply.github.com>
Date: Mon, 10 Nov 2025 21:36:08 +0100
Subject: [PATCH] wbar: add volume and battery icons
---
.../ii/assets/icons/fluent/battery-1.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-2.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-3.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-4.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-5.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-7.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-8.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-9.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-charge.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-full.svg | 12 +++++++
.../ii/assets/icons/fluent/battery-saver.svg | 12 +++++++
.../assets/icons/fluent/battery-warning.svg | 12 +++++++
.../icons/fluent/bluetooth-connected.svg | 12 +++++++
.../icons/fluent/bluetooth-searching.svg | 12 +++++++
.../ii/assets/icons/fluent/ethernet.svg | 12 +++++++
.../ii/assets/icons/fluent/mic-on.svg | 12 +++++++
.../ii/assets/icons/fluent/speaker-none.svg | 5 +++
.../ii/assets/icons/fluent/speaker-off.svg | 7 +++++
.../ii/assets/icons/fluent/wifi-1.svg | 12 +++++++
.../ii/assets/icons/fluent/wifi-2.svg | 12 +++++++
.../ii/assets/icons/fluent/wifi-3.svg | 12 +++++++
.../ii/assets/icons/fluent/wifi-4.svg | 12 +++++++
.../ii/assets/icons/fluent/wifi-off.svg | 1 +
.../ii/assets/icons/fluent/wifi-warning.svg | 1 +
.../ii/modules/waffle/bar/SystemButton.qml | 21 ++++++++++++-
.../ii/modules/waffle/looks/FluentIcon.qml | 7 +++--
.../ii/modules/waffle/looks/Looks.qml | 10 ++----
.../ii/modules/waffle/looks/WIcons.qml | 31 +++++++++++++++++++
28 files changed, 313 insertions(+), 10 deletions(-)
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg
create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg
create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg
new file mode 100644
index 000000000..caa369c58
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg
new file mode 100644
index 000000000..b939043ea
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg
new file mode 100644
index 000000000..a504a1ed5
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg
new file mode 100644
index 000000000..6567ddf10
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg
new file mode 100644
index 000000000..1bf4d914f
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg
new file mode 100644
index 000000000..a5197ce94
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg
new file mode 100644
index 000000000..c83bc5fb6
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg
new file mode 100644
index 000000000..7f4937b99
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg
new file mode 100644
index 000000000..512a78b1b
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg
new file mode 100644
index 000000000..4749fc178
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg
new file mode 100644
index 000000000..397061caf
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg
new file mode 100644
index 000000000..7ccade277
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg
new file mode 100644
index 000000000..b491276df
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg
new file mode 100644
index 000000000..e0d9eab70
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg b/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg
new file mode 100644
index 000000000..904d9720e
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg b/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg
new file mode 100644
index 000000000..3f680d2e3
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg
new file mode 100644
index 000000000..364af84cb
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg
new file mode 100644
index 000000000..5fa19e406
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg
new file mode 100644
index 000000000..47662e101
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg
new file mode 100644
index 000000000..9897c5d70
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg
new file mode 100644
index 000000000..8a4674bd4
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg
new file mode 100644
index 000000000..f14828bd8
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg
new file mode 100644
index 000000000..3c247ab12
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg
new file mode 100644
index 000000000..d573ddde0
--- /dev/null
+++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml
index 107bb00f6..dcb56c30b 100644
--- a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml
+++ b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml
@@ -16,9 +16,28 @@ BarButton {
Row {
id: column
anchors.centerIn: parent
+ spacing: 4
FluentIcon {
- icon: "speaker" // System icon
+ icon: WIcons.internetIcon
+ }
+
+ FluentIcon {
+ icon: {
+ const muted = Audio.sink?.audio.muted ?? false;
+ const volume = Audio.sink?.audio.volume ?? 0;
+ if (muted) return volume > 0 ? "speaker-off" : "speaker-none";
+ if (volume == 0) return "speaker-none";
+ if (volume < 0.5) return "speaker-1";
+ return "speaker";
+ }
+ }
+
+ FluentIcon {
+ icon: {
+ print(WIcons.batteryIcon)
+ return WIcons.batteryIcon
+ }
}
}
}
diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml
index 892214cd7..229df0458 100644
--- a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml
+++ b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml
@@ -6,12 +6,15 @@ import qs.modules.waffle.looks
Kirigami.Icon {
id: root
required property string icon
- property int implicitSize: 18 // Should be 16, but it appears the icons have some padding
+ // Should be 16, but it appears the icons have some padding,
+ // Unlike the Windows-only Segoe UI icons, the open source FluentUI ones are hella small
+ property int implicitSize: 20
implicitWidth: implicitSize
implicitHeight: implicitSize
+ source: `${Looks.iconsPath}/${root.icon}.svg`
roundToIconSize: false
color: Looks.colors.fg
isMask: true
- source: `${Looks.iconsPath}/${root.icon}.svg`
+ animated: true
}
diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml
index 3b451935f..9020b9d85 100644
--- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml
+++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml
@@ -42,17 +42,13 @@ Singleton {
property QtObject family: QtObject {
property string ui: "Noto Sans"
}
- property QtObject weight: QtObject {
- property int regular: Font.Normal
+ property QtObject weight: QtObject { // Noto is not Segoe, so we might use slightly different weights
+ property int regular: Font.Medium
property int strong: Font.DemiBold
property int stronger: Font.Bold
- }
- property QtObject variableAxes: QtObject {
-
}
property QtObject pixelSize: QtObject {
- property int small: 10
- property int normal: 11
+ property real normal: 11
}
}
diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml
new file mode 100644
index 000000000..813b0a1ce
--- /dev/null
+++ b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml
@@ -0,0 +1,31 @@
+pragma Singleton
+import QtQuick
+import Quickshell
+import qs.services
+
+Singleton {
+ id: root
+
+ property string internetIcon: {
+ if (Network.ethernet) return "ethernet";
+ if (Network.wifiEnabled) {
+ const strength = Network.networkStrength;
+ if (strength > 75) return "wifi-1";
+ if (strength > 50) return "wifi-2";
+ if (strength > 25) return "wifi-3";
+ return "wifi-4";
+ }
+ if (Network.wifiStatus === "connecting") return "wifi-4";
+ if (Network.wifiStatus === "disconnected") return "wifi-off";
+ if (Network.wifiStatus === "disabled") return "wifi-off";
+ return "wifi-warning";
+ }
+
+ property string batteryIcon: {
+ if (Battery.isCharging) return "battery-charge";
+ if (Battery.isCriticalAndNotCharging) return "battery-warning";
+ if (Battery.percentage >= 0.9) return "battery-full";
+ return `battery-${Math.ceil(Battery.percentage * 10)}`;
+ }
+
+}