diff --git a/assets/lucide.woff b/assets/lucide.woff
new file mode 100644
index 0000000..e40924a
Binary files /dev/null and b/assets/lucide.woff differ
diff --git a/assets/triangle-alert.svg b/assets/triangle-alert.svg
deleted file mode 100644
index 9cb82a4..0000000
--- a/assets/triangle-alert.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/triangle-dashed.svg b/assets/triangle-dashed.svg
deleted file mode 100644
index 7f059d5..0000000
--- a/assets/triangle-dashed.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/triangle.svg b/assets/triangle.svg
deleted file mode 100644
index 889013f..0000000
--- a/assets/triangle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/config/Theme.qml b/config/Theme.qml
index 8fedaf5..076c50b 100644
--- a/config/Theme.qml
+++ b/config/Theme.qml
@@ -6,6 +6,9 @@ import Quickshell
Singleton {
id: root
+ property var lucide: FontLoader {
+ source: "../assets/lucide.woff"
+ }
property string fontFamily: "JetBrainsMono Nerd Font"
property Palette palette: Palette {}
diff --git a/constants/Icons.qml b/constants/Icons.qml
new file mode 100644
index 0000000..d7c0930
--- /dev/null
+++ b/constants/Icons.qml
@@ -0,0 +1,8 @@
+pragma Singleton
+
+import Quickshell
+
+Singleton {
+ property string triangle: "\u{E192}"
+ property string triangleDashed: "\u{E642}"
+}
diff --git a/modules/bar/components/hyprland/Workspace.qml b/modules/bar/components/hyprland/Workspace.qml
index ba1f9d2..d943bed 100644
--- a/modules/bar/components/hyprland/Workspace.qml
+++ b/modules/bar/components/hyprland/Workspace.qml
@@ -1,6 +1,7 @@
import QtQuick
import Quickshell.Hyprland
import "../../../../config"
+import "../../../../constants/"
import "../../../../styled/"
Loader {
@@ -17,28 +18,43 @@ Loader {
onClicked: modelData.activate()
- Icon {
+ Text {
id: icon
- source: "/home/baobeld/dotfiles/quickshell/assets/triangle.svg"
+ font.family: Theme.lucide.font.family
+ font.pixelSize: Dimensions.workspace.iconSize
+ font.bold: true
+ text: Icons.triangle
+
+ color: Theme.palette.basecontent
anchors.centerIn: parent
- size: Dimensions.workspace.iconSize
- states: State {
- name: "active"
- when: modelData.active
- PropertyChanges {
- icon {
- rotation: 180
- color: clickable.hovered ? Theme.palette.basecontent : Theme.palette.primary
+ states: [
+ State {
+ name: "focused"
+ when: modelData.focused
+ PropertyChanges {
+ icon {
+ rotation: 180
+ color: clickable.hovered ? Theme.palette.basecontent : Theme.palette.primary
+ }
+ }
+ },
+ State {
+ name: "active"
+ when: modelData.active
+ PropertyChanges {
+ icon {
+ text: Icons.triangleDashed
+ rotation: 180
+ color: clickable.hovered ? Theme.palette.basecontent : Theme.palette.primary
+ }
}
}
- }
+ ]
transitions: Transition {
- from: ""
- to: "active"
reversible: true
ParallelAnimation {
RotationAnimation {