move lucide to Styling

This commit is contained in:
Benjamin Palko 2025-09-05 17:22:16 -04:00
parent 9fc91a92f7
commit 467c9bc0e3
23 changed files with 91 additions and 135 deletions

View file

@ -2,13 +2,13 @@ import qs.config
import QtQuick import QtQuick
Text { Text {
font.family: Styling.lucide.font.family
font.pixelSize: 16
color: Theme.palette.basecontent color: Theme.palette.basecontent
Behavior on color { Behavior on color {
ColorAnimation { ColorAnimation {
duration: Styling.animations.speed.fast duration: Styling.animations.speed.fast
} }
} }
font.family: Theme.lucide.font.family
font.pixelSize: Dimensions.gpu.iconSize
font.bold: true
} }

View file

@ -2,7 +2,6 @@ pragma ComponentBehavior: Bound
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell.Services.Mpris import Quickshell.Services.Mpris
@ -29,21 +28,21 @@ Loader {
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
StyledIconButton { StyledIconButton {
id: backButton id: backButton
text: Icons.skipBack text: Styling.lucide.icons.skipBack
onClicked: { onClicked: {
root.player.previous(); root.player.previous();
} }
} }
StyledIconButton { StyledIconButton {
id: playPauseButton id: playPauseButton
text: root.player.isPlaying ? Icons.pause : Icons.play text: root.player.isPlaying ? Styling.lucide.icons.pause : Styling.lucide.icons.play
onClicked: { onClicked: {
root.player.isPlaying = !root.player.isPlaying; root.player.isPlaying = !root.player.isPlaying;
} }
} }
StyledIconButton { StyledIconButton {
id: forwardButton id: forwardButton
text: Icons.skipForward text: Styling.lucide.icons.skipForward
onClicked: { onClicked: {
root.player.next(); root.player.next();
} }

View file

@ -1,5 +1,5 @@
import qs.config
import qs.components import qs.components
import qs.constants
import qs.services import qs.services
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -13,7 +13,7 @@ RowLayout {
id: previousPlayerButton id: previousPlayerButton
visible: Mpris.players.length > 1 visible: Mpris.players.length > 1
text: Icons.chevronLeft text: Styling.lucide.icons.chevronLeft
onClicked: { onClicked: {
Mpris.previousPlayer(); Mpris.previousPlayer();
@ -42,7 +42,7 @@ RowLayout {
id: nextPlayerButton id: nextPlayerButton
visible: Mpris.players.length > 1 visible: Mpris.players.length > 1
text: Icons.chevronRight text: Styling.lucide.icons.chevronRight
onClicked: { onClicked: {
Mpris.nextPlayer(); Mpris.nextPlayer();

View file

@ -5,16 +5,11 @@ import QtQuick.Controls
RoundButton { RoundButton {
id: control id: control
FontLoader {
id: loader
source: "../assets/lucide.woff"
}
property alias border: rect.border property alias border: rect.border
property color color: hovered ? Theme.palette.primarycontent : Theme.palette.basecontent property color color: hovered ? Theme.palette.primarycontent : Theme.palette.basecontent
property int rotation: 0 property int rotation: 0
font.family: loader.font.family font.family: Styling.lucide.font.family
font.pixelSize: 19 font.pixelSize: 19
radius: 8 radius: 8
padding: 8 padding: 8
@ -37,7 +32,7 @@ RoundButton {
Behavior on rotation { Behavior on rotation {
RotationAnimation { RotationAnimation {
duration: Styling.animations.speed.slow duration: Styling.animations.speed.slow
easing.type: Easing.InOutCubic easing.type: Easing.OutQuad
} }
} }
} }

View file

@ -6,6 +6,7 @@ import Quickshell
Singleton { Singleton {
id: root id: root
readonly property Lucide lucide: Lucide {}
readonly property Animations animations: Animations {} readonly property Animations animations: Animations {}
component Animations: QtObject { component Animations: QtObject {
@ -18,4 +19,47 @@ Singleton {
property int slow: 400 property int slow: 400
property int verySlow: 1000 property int verySlow: 1000
} }
component Lucide: Item {
readonly property alias font: loader.font
readonly property LucideIcons icons: LucideIcons {}
FontLoader {
id: loader
source: "../assets/lucide.woff"
}
}
component LucideIcons: QtObject {
property string batteryCharging: "\u{E058}"
property string batteryFull: "\u{E059}"
property string batteryMedium: "\u{E05b}"
property string batteryLow: "\u{E05a}"
property string batteryWarning: "\u{E3b0}"
property string bell: "\u{E05d}"
property string bellRing: "\u{E224}"
property string bluetooth: "\u{E060}"
property string bluetoothConnected: "\u{E1b8}"
property string brickWall: "\u{E586}"
property string coffee: "\u{E09a}"
property string chevronLeft: "\u{E072}"
property string chevronRight: "\u{E073}"
property string cpu: "\u{E0ad}"
property string gpu: "\u{E66f}"
property string hardDrive: "\u{E0f1}"
property string memoryStick: "\u{E44a}"
property string pause: "\u{E132}"
property string play: "\u{E140}"
property string search: "\u{E155}"
property string skipBack: "\u{E163}"
property string skipForward: "\u{E164}"
property string stop: "\u{E132}"
property string square: "\u{E16B}"
property string wifiOff: "\u{E1af}"
property string wifiLow: "\u{E5fd}"
property string wifiHigh: "\u{E5fc}"
property string wifi: "\u{E1ae}"
property string triangle: "\u{E192}"
property string triangleDashed: "\u{E642}"
}
} }

View file

@ -8,9 +8,6 @@ import Quickshell.Io
Singleton { Singleton {
id: root id: root
property var lucide: FontLoader {
source: "../assets/lucide.woff"
}
property string fontFamily: "JetBrainsMono Nerd Font" property string fontFamily: "JetBrainsMono Nerd Font"
property var palette: theme.palette property var palette: theme.palette

View file

@ -1,36 +0,0 @@
pragma Singleton
import Quickshell
Singleton {
property string batteryCharging: "\u{E058}"
property string batteryFull: "\u{E059}"
property string batteryMedium: "\u{E05b}"
property string batteryLow: "\u{E05a}"
property string batteryWarning: "\u{E3b0}"
property string bell: "\u{E05d}"
property string bellRing: "\u{E224}"
property string bluetooth: "\u{E060}"
property string bluetoothConnected: "\u{E1b8}"
property string brickWall: "\u{E586}"
property string coffee: "\u{E09a}"
property string chevronLeft: "\u{E072}"
property string chevronRight: "\u{E073}"
property string cpu: "\u{E0ad}"
property string gpu: "\u{E66f}"
property string hardDrive: "\u{E0f1}"
property string memoryStick: "\u{E44a}"
property string pause: "\u{E132}"
property string play: "\u{E140}"
property string search: "\u{E155}"
property string skipBack: "\u{E163}"
property string skipForward: "\u{E164}"
property string stop: "\u{E132}"
property string square: "\u{E16B}"
property string wifiOff: "\u{E1af}"
property string wifiLow: "\u{E5fd}"
property string wifiHigh: "\u{E5fc}"
property string wifi: "\u{E1ae}"
property string triangle: "\u{E192}"
property string triangleDashed: "\u{E642}"
}

View file

@ -1,6 +1,5 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
StyledIconButton { StyledIconButton {
@ -8,7 +7,7 @@ StyledIconButton {
border.width: 2 border.width: 2
border.color: Caffeine.enabled ? Theme.palette.secondary : root.hovered ? Theme.palette.primary : Theme.palette.base300 border.color: Caffeine.enabled ? Theme.palette.secondary : root.hovered ? Theme.palette.primary : Theme.palette.base300
text: Icons.coffee text: Styling.lucide.icons.coffee
onClicked: { onClicked: {
Caffeine.toggle(); Caffeine.toggle();

View file

@ -1,9 +1,7 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.utils import qs.utils
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -24,13 +22,8 @@ StyledButton {
Ref { Ref {
service: SystemInfo service: SystemInfo
} }
StyledText { LucideIcon {
id: icon text: Styling.lucide.icons.cpu
font.family: Theme.lucide.font.family
font.pixelSize: Dimensions.cpu.iconSize
font.bold: true
text: Icons.cpu
color: root.hovered ? Theme.palette.primarycontent : Theme.palette.basecontent color: root.hovered ? Theme.palette.primarycontent : Theme.palette.basecontent
} }

View file

@ -1,9 +1,7 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.utils import qs.utils
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -24,13 +22,8 @@ StyledButton {
Ref { Ref {
service: SystemInfo service: SystemInfo
} }
StyledText { LucideIcon {
id: icon text: Styling.lucide.icons.gpu
font.family: Theme.lucide.font.family
font.pixelSize: Dimensions.gpu.iconSize
font.bold: true
text: Icons.gpu
color: root.hovered ? Theme.palette.primarycontent : Theme.palette.basecontent color: root.hovered ? Theme.palette.primarycontent : Theme.palette.basecontent
} }

View file

@ -1,8 +1,6 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.widgets
import qs.utils import qs.utils
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -12,11 +10,8 @@ StyledLabel {
Ref { Ref {
service: SystemInfo service: SystemInfo
} }
StyledText { LucideIcon {
font.family: Theme.lucide.font.family text: Styling.lucide.icons.memoryStick
font.pixelSize: Dimensions.memory.iconSize
font.bold: true
text: Icons.memoryStick
} }
StyledText { StyledText {

View file

@ -1,9 +1,7 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.utils import qs.utils
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -12,13 +10,10 @@ StyledLabel {
Ref { Ref {
service: NetworkService service: NetworkService
} }
StyledText { LucideIcon {
id: icon id: icon
font.family: Theme.lucide.font.family text: Styling.lucide.icons.wifiOff
font.pixelSize: Dimensions.network.iconSize
font.bold: true
text: Icons.wifiOff
states: [ states: [
State { State {
@ -26,7 +21,7 @@ StyledLabel {
when: NetworkService.active?.strength > 50 when: NetworkService.active?.strength > 50
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.wifi text: Styling.lucide.icons.wifi
} }
} }
}, },
@ -35,7 +30,7 @@ StyledLabel {
when: NetworkService.active?.strength > 25 when: NetworkService.active?.strength > 25
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.wifiHigh text: Styling.lucide.icons.wifiHigh
} }
} }
}, },
@ -44,7 +39,7 @@ StyledLabel {
when: NetworkService.active?.strength > 0 when: NetworkService.active?.strength > 0
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.wifiLow text: Styling.lucide.icons.wifiLow
} }
} }
} }

View file

@ -1,6 +1,5 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell.Services.UPower import Quickshell.Services.UPower
@ -26,18 +25,18 @@ StyledButton {
font.pixelSize: 16 font.pixelSize: 16
text: { text: {
if (root.laptopBattery?.state == UPowerDeviceState.Charging) { if (root.laptopBattery?.state == UPowerDeviceState.Charging) {
return Icons.batteryCharging; return Styling.lucide.icons.batteryCharging;
} }
if (root.isCritical) { if (root.isCritical) {
return Icons.batteryWarning; return Styling.lucide.icons.batteryWarning;
} }
if (root.laptopBattery?.percentage < 0.33) { if (root.laptopBattery?.percentage < 0.33) {
return Icons.batteryLow; return Styling.lucide.icons.batteryLow;
} }
if (root.laptopBattery?.percentage < 0.66) { if (root.laptopBattery?.percentage < 0.66) {
return Icons.batteryMedium; return Styling.lucide.icons.batteryMedium;
} }
return Icons.batteryFull; return Styling.lucide.icons.batteryFull;
} }
} }

View file

@ -1,12 +1,12 @@
import qs.components import qs.components
import qs.constants import qs.config
import QtQuick import QtQuick
import Quickshell.Io import Quickshell.Io
StyledIconButton { StyledIconButton {
id: clickable id: clickable
text: Icons.brickWall text: Styling.lucide.icons.brickWall
onClicked: { onClicked: {
process.running = true; process.running = true;

View file

@ -1,9 +1,7 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.utils import qs.utils
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
@ -12,13 +10,8 @@ StyledLabel {
Ref { Ref {
service: SystemInfo service: SystemInfo
} }
StyledText { LucideIcon {
id: icon text: Styling.lucide.icons.hardDrive
font.family: Theme.lucide.font.family
font.pixelSize: Dimensions.storage.iconSize
font.bold: true
text: Icons.hardDrive
} }
StyledText { StyledText {

View file

@ -1,7 +1,6 @@
pragma ComponentBehavior: Bound pragma ComponentBehavior: Bound
import qs.components import qs.components
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell

View file

@ -1,10 +1,10 @@
import qs.components import qs.components
import qs.constants import qs.config
StyledIconButton { StyledIconButton {
id: root id: root
text: Icons.bluetooth text: Styling.lucide.icons.bluetooth
onClicked: popup.toggle() onClicked: popup.toggle()

View file

@ -2,8 +2,6 @@ pragma ComponentBehavior: Bound
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.widgets
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell
@ -34,12 +32,9 @@ StyledLabel {
Loader { Loader {
active: root.modelData.batteryAvailable active: root.modelData.batteryAvailable
sourceComponent: RowLayout { sourceComponent: RowLayout {
StyledText { LucideIcon {
id: icon id: icon
font.family: Theme.lucide.font.family text: Styling.lucide.icons.batteryFull
font.pixelSize: Dimensions.cpu.iconSize
font.bold: true
text: Icons.batteryFull
states: [ states: [
State { State {
name: "full" name: "full"
@ -50,7 +45,7 @@ StyledLabel {
when: root.modelData.battery > 0.33 when: root.modelData.battery > 0.33
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.batteryFull text: Styling.lucide.icons.batteryFull
} }
} }
}, },
@ -59,7 +54,7 @@ StyledLabel {
when: root.modelData.battery > 0.10 when: root.modelData.battery > 0.10
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.batteryFull text: Styling.lucide.icons.batteryFull
} }
} }
}, },
@ -68,7 +63,7 @@ StyledLabel {
when: root.modelData.battery > 0.10 when: root.modelData.battery > 0.10
PropertyChanges { PropertyChanges {
icon { icon {
text: Icons.batteryWarning text: Styling.lucide.icons.batteryWarning
color: Theme.palette.error color: Theme.palette.error
} }
} }

View file

@ -1,6 +1,5 @@
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import QtQuick import QtQuick
import Quickshell.Hyprland import Quickshell.Hyprland
@ -9,7 +8,7 @@ StyledIconButton {
required property HyprlandWorkspace workspace required property HyprlandWorkspace workspace
text: Icons.triangle text: Styling.lucide.icons.triangle
font.bold: true font.bold: true
font.pixelSize: 17 font.pixelSize: 17
padding: 8 padding: 8
@ -32,7 +31,7 @@ StyledIconButton {
when: root.workspace.active when: root.workspace.active
PropertyChanges { PropertyChanges {
root { root {
text: Icons.triangleDashed text: Styling.lucide.icons.triangleDashed
rotation: 180 rotation: 180
color: root.hovered ? Theme.palette.basecontent : Theme.palette.primary color: root.hovered ? Theme.palette.basecontent : Theme.palette.primary
} }

View file

@ -1,5 +1,5 @@
import qs.components import qs.components
import qs.constants import qs.config
import qs.services import qs.services
import QtQuick import QtQuick
@ -10,13 +10,13 @@ StyledIconButton {
menu.toggle(); menu.toggle();
} }
text: Notifications.hasNotifications ? Icons.bell : Icons.bellRing text: Notifications.hasNotifications ? Styling.lucide.icons.bell : Styling.lucide.icons.bellRing
states: State { states: State {
when: Notifications.hasNotifications when: Notifications.hasNotifications
PropertyChanges { PropertyChanges {
root { root {
text: Icons.bellRing text: Styling.lucide.icons.bellRing
} }
} }
} }

View file

@ -3,7 +3,6 @@ pragma ComponentBehavior: Bound
import "services" import "services"
import qs.config import qs.config
import qs.components import qs.components
import qs.constants
import qs.services import qs.services
import Quickshell.Hyprland import Quickshell.Hyprland
import Quickshell.Wayland import Quickshell.Wayland
@ -54,7 +53,7 @@ StyledWindow {
LucideIcon { LucideIcon {
id: icon id: icon
Layout.leftMargin: 8 Layout.leftMargin: 8
text: Icons.search text: Styling.lucide.icons.search
} }
StyledTextField { StyledTextField {

View file

@ -2,7 +2,6 @@ pragma ComponentBehavior: Bound
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import qs.widgets import qs.widgets
import Quickshell.Hyprland import Quickshell.Hyprland
@ -69,7 +68,7 @@ StyledWindow {
radius: 9999 radius: 9999
focus: root.visible focus: root.visible
text: Pomodoro.running ? Icons.square : Icons.play text: Pomodoro.running ? Styling.lucide.icons.square : Styling.lucide.icons.play
font.pixelSize: 48 font.pixelSize: 48
background: Item {} background: Item {}

View file

@ -2,7 +2,6 @@ pragma ComponentBehavior: Bound
import qs.components import qs.components
import qs.config import qs.config
import qs.constants
import qs.services import qs.services
import Quickshell.Hyprland import Quickshell.Hyprland
import Quickshell.Wayland import Quickshell.Wayland
@ -57,7 +56,7 @@ StyledWindow {
font.pixelSize: 18 font.pixelSize: 18
} }
StyledIconButton { StyledIconButton {
text: Icons.square text: Styling.lucide.icons.square
} }
} }