diff --git a/config/Dimensions.qml b/config/Dimensions.qml index df27c14..9c5c094 100644 --- a/config/Dimensions.qml +++ b/config/Dimensions.qml @@ -12,6 +12,8 @@ Singleton { property Mpris mpris: Mpris {} property Clock clock: Clock {} property Pipewire pipewire: Pipewire {} + property Storage storage: Storage {} + property Cpu cpu: Cpu {} property Caffeine caffeine: Caffeine {} property Workspace workspace: Workspace {} property Tray tray: Tray {} @@ -56,6 +58,26 @@ Singleton { property int verticalPadding: 6 } + component Storage: QtObject { + id: clock + + property int iconSize: 14 + property int fontSize: 14 + property int height: 30 + property int horizontalPadding: 8 + property int verticalPadding: 6 + } + + component Cpu: QtObject { + id: clock + + property int iconSize: 14 + property int fontSize: 14 + property int height: 30 + property int horizontalPadding: 8 + property int verticalPadding: 6 + } + component Caffeine: QtObject { id: clock diff --git a/constants/Icons.qml b/constants/Icons.qml index aed8f3f..22e6268 100644 --- a/constants/Icons.qml +++ b/constants/Icons.qml @@ -5,6 +5,8 @@ import Quickshell Singleton { property string brickWall: "\u{E586}" property string coffee: "\u{E09a}" + property string cpu: "\u{E0ad}" + property string hardDrive: "\u{E0f1}" property string triangle: "\u{E192}" property string triangleDashed: "\u{E642}" } diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index c0a39e5..db9ea4a 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -104,6 +104,14 @@ Scope { anchors.verticalCenter: parent.verticalCenter } + Storage { + anchors.verticalCenter: parent.verticalCenter + } + + Cpu { + anchors.verticalCenter: parent.verticalCenter + } + Clock { anchors.verticalCenter: parent.verticalCenter } diff --git a/modules/bar/components/Cpu.qml b/modules/bar/components/Cpu.qml new file mode 100644 index 0000000..d6be494 --- /dev/null +++ b/modules/bar/components/Cpu.qml @@ -0,0 +1,65 @@ +import QtQuick +import Quickshell +import "../../../config/" +import "../../../constants/" +import "../../../services/" +import "../../../styled/" +import "../../../utils/" + +Clickable { + id: root + + property bool showTemp: true + + implicitWidth: row.width + implicitHeight: Dimensions.storage.height + + Ref { + service: SystemInfo + } + + onClicked: { + root.showTemp = !root.showTemp; + } + + Row { + id: row + StyledText { + id: icon + + font.family: Theme.lucide.font.family + font.pixelSize: Dimensions.storage.iconSize + font.bold: true + text: Icons.cpu + + anchors.verticalCenter: parent.verticalCenter + topPadding: Dimensions.storage.verticalPadding + bottomPadding: Dimensions.storage.verticalPadding + leftPadding: Dimensions.storage.horizontalPadding + } + + StyledText { + id: text + anchors.verticalCenter: parent.verticalCenter + topPadding: Dimensions.storage.verticalPadding + bottomPadding: Dimensions.storage.verticalPadding + rightPadding: Dimensions.storage.horizontalPadding + + font.pixelSize: Dimensions.storage.fontSize + + text: ` ${(SystemInfo.cpuPerc * 100).toFixed()}%` + + states: [ + State { + name: "temp" + when: root.showTemp + PropertyChanges { + text { + text: ` ${(SystemInfo.cpuTemp)}℃` + } + } + } + ] + } + } +} diff --git a/modules/bar/components/Storage.qml b/modules/bar/components/Storage.qml new file mode 100644 index 0000000..5c41b72 --- /dev/null +++ b/modules/bar/components/Storage.qml @@ -0,0 +1,44 @@ +import QtQuick +import Quickshell +import "../../../config/" +import "../../../constants/" +import "../../../services/" +import "../../../styled/" +import "../../../utils/" + +StyledLabel { + implicitWidth: childrenRect.width + implicitHeight: Dimensions.storage.height + + Ref { + service: SystemInfo + } + + Row { + StyledText { + id: icon + + font.family: Theme.lucide.font.family + font.pixelSize: Dimensions.storage.iconSize + font.bold: true + text: Icons.hardDrive + + anchors.verticalCenter: parent.verticalCenter + topPadding: Dimensions.storage.verticalPadding + bottomPadding: Dimensions.storage.verticalPadding + leftPadding: Dimensions.storage.horizontalPadding + } + + StyledText { + id: text + anchors.verticalCenter: parent.verticalCenter + topPadding: Dimensions.storage.verticalPadding + bottomPadding: Dimensions.storage.verticalPadding + rightPadding: Dimensions.storage.horizontalPadding + + font.pixelSize: Dimensions.storage.fontSize + + text: ` ${(SystemInfo.storagePerc * 100).toFixed()}%` + } + } +}