config moved to c++ plugin, removed old qml + fileview implementation

This commit is contained in:
2026-08-13 02:25:26 +02:00
parent c29b91cd26
commit 3cd3209b28
341 changed files with 4851 additions and 3502 deletions
+18 -17
View File
@@ -1,17 +1,18 @@
import QtQuick
import QtQuick.Layouts
import Quickshell.Services.UPower
import ZShell.Config
import qs.Components
import qs.Config
import qs.Services
CustomClippingRect {
id: root
property real animPerc: UPower.displayDevice.percentage
color: DynamicColors.palette.m3secondaryContainer
color: Colors.palette.m3secondaryContainer
implicitWidth: 120
radius: Appearance.rounding.large
radius: Tokens.rounding.large
Behavior on animPerc {
Anim {
@@ -21,11 +22,11 @@ CustomClippingRect {
Contents {
id: layout
accentColor: DynamicColors.palette.m3primary
accentColor: Colors.palette.m3primary
anchors.fill: parent
anchors.margins: Appearance.padding.larger
subTextColor: DynamicColors.palette.m3onSurfaceVariant
textColor: DynamicColors.palette.m3onSurface
anchors.margins: Tokens.padding.larger
subTextColor: Colors.palette.m3onSurfaceVariant
textColor: Colors.palette.m3onSurface
}
CustomRect {
@@ -33,19 +34,19 @@ CustomClippingRect {
anchors.left: parent.left
anchors.right: parent.right
clip: true
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
implicitHeight: parent.height * root.animPerc
radius: Appearance.rounding.extraSmall
radius: Tokens.rounding.extraSmall
Contents {
accentColor: DynamicColors.palette.m3primaryContainer
accentColor: Colors.palette.m3primaryContainer
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: layout.anchors.margins
anchors.right: parent.right
height: layout.height
subTextColor: DynamicColors.palette.m3secondaryContainer
textColor: DynamicColors.palette.m3onSecondary
subTextColor: Colors.palette.m3secondaryContainer
textColor: Colors.palette.m3onSecondary
}
}
@@ -60,7 +61,7 @@ CustomClippingRect {
spacing: 0
MaterialIcon {
Layout.leftMargin: -Appearance.padding.extraSmall
Layout.leftMargin: -Tokens.padding.extraSmall
color: contents.accentColor
text: "battery_full"
}
@@ -101,10 +102,10 @@ CustomClippingRect {
RowLayout {
Layout.alignment: Qt.AlignRight
Layout.bottomMargin: -Appearance.padding.small
Layout.rightMargin: -Appearance.padding.extraSmall
Layout.topMargin: -Appearance.padding.extraSmall
spacing: Appearance.spacing.extraSmall
Layout.bottomMargin: -Tokens.padding.small
Layout.rightMargin: -Tokens.padding.extraSmall
Layout.topMargin: -Tokens.padding.extraSmall
spacing: Tokens.spacing.extraSmall
MaterialIcon {
color: contents.accentColor
+22 -21
View File
@@ -1,7 +1,8 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Config
import qs.Components
import qs.Config
import qs.Services
CustomClippingRect {
id: root
@@ -13,10 +14,10 @@ CustomClippingRect {
required property real temperature
required property real usage
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: Math.max(tempProg.implicitHeight + detailsRow.implicitHeight + Appearance.spacing.large, usageColumn.implicitHeight + usageLabel.implicitHeight) + Appearance.padding.large * 2
color: Colors.tPalette.m3surfaceContainer
implicitHeight: Math.max(tempProg.implicitHeight + detailsRow.implicitHeight + Tokens.spacing.large, usageColumn.implicitHeight + usageLabel.implicitHeight) + Tokens.padding.large * 2
implicitWidth: 450
radius: Appearance.rounding.large - Appearance.padding.normal
radius: Tokens.rounding.large - Tokens.padding.normal
CustomRect {
anchors.bottom: parent.bottom
@@ -35,12 +36,12 @@ CustomClippingRect {
id: tempProg
anchors.left: parent.left
anchors.margins: Appearance.padding.large
anchors.margins: Tokens.padding.large
anchors.top: parent.top
fgColor: root.accent
implicitSize: Math.max(icon.implicitWidth, icon.implicitHeight) + Appearance.padding.larger * 2
spacing: Appearance.spacing.extraSmall
strokeWidth: Appearance.padding.extraSmall
implicitSize: Math.max(icon.implicitWidth, icon.implicitHeight) + Tokens.padding.larger * 2
spacing: Tokens.spacing.extraSmall
strokeWidth: Tokens.padding.extraSmall
value: root.usage
Behavior on clampedVal {
@@ -59,10 +60,10 @@ CustomClippingRect {
ColumnLayout {
anchors.left: tempProg.right
anchors.margins: Appearance.spacing.large
anchors.margins: Tokens.spacing.large
anchors.right: usageColumn.left
anchors.verticalCenter: tempProg.verticalCenter
spacing: Appearance.spacing.extraSmall
spacing: Tokens.spacing.extraSmall
CustomText {
color: root.accent
@@ -71,7 +72,7 @@ CustomClippingRect {
CustomText {
Layout.fillWidth: true
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
text: root.subLabel
}
@@ -82,16 +83,16 @@ CustomClippingRect {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: Appearance.padding.largeIncreased
spacing: Appearance.spacing.extraSmall
anchors.margins: Tokens.padding.largeIncreased
spacing: Tokens.spacing.extraSmall
RowLayout {
Layout.leftMargin: -Appearance.padding.extraSmall
spacing: Appearance.spacing.extraSmall
Layout.leftMargin: -Tokens.padding.extraSmall
spacing: Tokens.spacing.extraSmall
MaterialIcon {
Layout.topMargin: Math.round(fontInfo.pointSize * 0.08)
color: root.temperature > 90 ? DynamicColors.palette.m3error : root.accent
color: root.temperature > 90 ? Colors.palette.m3error : root.accent
fill: 1
text: root.temperature > 90 ? "thermometer_alert" : "thermometer"
}
@@ -103,7 +104,7 @@ CustomClippingRect {
CustomProgressBar {
fgColor: root.accent
implicitHeight: Appearance.padding.small
implicitHeight: Tokens.padding.small
indeterminate: isNaN(root.usage) || isNaN(root.temperature)
value: root.temperature / 100
}
@@ -112,7 +113,7 @@ CustomClippingRect {
Column {
id: usageColumn
anchors.margins: Appearance.padding.large
anchors.margins: Tokens.padding.large
anchors.right: parent.right
anchors.rightMargin: 32
anchors.verticalCenter: parent.verticalCenter
@@ -122,15 +123,15 @@ CustomClippingRect {
id: usageLabel
anchors.right: parent.right
color: DynamicColors.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.normal
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
text: qsTr("Usage")
}
CustomText {
anchors.right: parent.right
color: root.accent
font.pointSize: Appearance.font.size.extraLarge
font.pointSize: Tokens.font.size.extraLarge
font.weight: Font.Medium
text: isNaN(root.usage) ? "...%" : Math.round(root.usage * 100) + "%"
}
+15 -14
View File
@@ -1,19 +1,20 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Services
import ZShell.Config
import qs.Components
import qs.Config
import qs.Services
CustomRect {
id: root
readonly property color accent: DynamicColors.palette.m3tertiary
readonly property color accent: Colors.palette.m3tertiary
Layout.fillWidth: true
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Appearance.padding.large * 2
implicitWidth: layout.implicitWidth + Appearance.padding.extraLargeIncreased * 2
radius: Appearance.rounding.medium
color: Colors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Tokens.padding.large * 2
implicitWidth: layout.implicitWidth + Tokens.padding.extraLargeIncreased * 2
radius: Tokens.rounding.medium
ServiceRef {
service: Memory
@@ -23,11 +24,11 @@ CustomRect {
id: layout
anchors.centerIn: parent
spacing: Appearance.spacing.extraSmall
spacing: Tokens.spacing.extraSmall
RowLayout {
Layout.leftMargin: -Appearance.padding.extraSmall
spacing: Appearance.spacing.small
Layout.leftMargin: -Tokens.padding.extraSmall
spacing: Tokens.spacing.small
MaterialIcon {
color: root.accent
@@ -42,9 +43,9 @@ CustomRect {
CircularProgress {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: Appearance.spacing.large
Layout.topMargin: Tokens.spacing.large
fgColor: root.accent
implicitSize: usageColumn.implicitHeight + thickness + Appearance.padding.largeIncreased * 2
implicitSize: usageColumn.implicitHeight + thickness + Tokens.padding.largeIncreased * 2
startAngle: -225
sweepAngle: 270
value: Memory.percentage
@@ -58,19 +59,19 @@ CustomRect {
id: usageColumn
anchors.centerIn: parent
anchors.verticalCenterOffset: Appearance.padding.extraSmall
anchors.verticalCenterOffset: Tokens.padding.extraSmall
spacing: 0
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Appearance.font.size.large
font.pointSize: Tokens.font.size.large
text: Math.round(Memory.percentage * 100) + "%"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Used")
}
}
+25 -24
View File
@@ -1,17 +1,18 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Internal
import ZShell.Config
import qs.Helpers
import qs.Components
import qs.Config
import qs.Services
CustomRect {
id: root
color: DynamicColors.tPalette.m3surfaceContainer
color: Colors.tPalette.m3surfaceContainer
implicitHeight: 220
implicitWidth: 300
radius: Appearance.rounding.large - Appearance.padding.normal
radius: Tokens.rounding.large - Tokens.padding.normal
Ref {
service: NetworkUsage
@@ -20,16 +21,16 @@ CustomRect {
ColumnLayout {
id: layout
anchors.bottomMargin: Appearance.padding.larger
anchors.bottomMargin: Tokens.padding.larger
anchors.fill: parent
anchors.margins: Appearance.padding.large
anchors.margins: Tokens.padding.large
spacing: 0
RowLayout {
spacing: Appearance.spacing.small
spacing: Tokens.spacing.small
MaterialIcon {
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
text: "swap_vert"
}
@@ -39,10 +40,10 @@ CustomRect {
}
Item {
Layout.bottomMargin: Appearance.spacing.small
Layout.bottomMargin: Tokens.spacing.small
Layout.fillHeight: true
Layout.fillWidth: true
Layout.topMargin: Appearance.spacing.larger
Layout.topMargin: Tokens.spacing.larger
SparklineItem {
id: sparkline
@@ -54,10 +55,10 @@ CustomRect {
anchors.fill: parent
historyLength: NetworkUsage.historyLength
line1: NetworkUsage.uploadBuffer // qmllint disable missing-type
line1Color: DynamicColors.palette.m3secondary
line1Color: Colors.palette.m3secondary
line1FillAlpha: 0.15
line2: NetworkUsage.downloadBuffer // qmllint disable missing-type
line2Color: DynamicColors.palette.m3tertiary
line2Color: Colors.palette.m3tertiary
line2FillAlpha: 0.2
maxValue: smoothMax
slideProgress: 1
@@ -101,7 +102,7 @@ CustomRect {
// "Collecting data" placeholder
CustomText {
anchors.centerIn: parent
color: DynamicColors.palette.m3outline
color: Colors.palette.m3outline
text: qsTr("Collecting data...")
visible: NetworkUsage.downloadBuffer.count < 2
}
@@ -110,15 +111,15 @@ CustomRect {
// Download row
RowLayout {
Layout.fillWidth: true
spacing: Appearance.spacing.small
spacing: Tokens.spacing.small
MaterialIcon {
color: DynamicColors.palette.m3tertiary
color: Colors.palette.m3tertiary
text: "download"
}
CustomText {
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Download")
}
@@ -127,7 +128,7 @@ CustomRect {
}
CustomText {
color: DynamicColors.palette.m3tertiary
color: Colors.palette.m3tertiary
text: {
const fmt = NetworkUsage.formatBytes(NetworkUsage.downloadSpeed ?? 0);
return fmt ? `${fmt.value.toFixed(1)} ${fmt.unit}` : "0.0 B/s";
@@ -138,15 +139,15 @@ CustomRect {
// Upload row
RowLayout {
Layout.fillWidth: true
spacing: Appearance.spacing.small
spacing: Tokens.spacing.small
MaterialIcon {
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
text: "upload"
}
CustomText {
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Upload")
}
@@ -155,7 +156,7 @@ CustomRect {
}
CustomText {
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
text: {
const fmt = NetworkUsage.formatBytes(NetworkUsage.uploadSpeed ?? 0);
return fmt ? `${fmt.value.toFixed(1)} ${fmt.unit}` : "0.0 B/s";
@@ -166,15 +167,15 @@ CustomRect {
// Session totals
RowLayout {
Layout.fillWidth: true
spacing: Appearance.spacing.small
spacing: Tokens.spacing.small
MaterialIcon {
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: "history"
}
CustomText {
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Total")
}
@@ -183,7 +184,7 @@ CustomRect {
}
CustomText {
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: {
const down = NetworkUsage.formatBytesTotal(NetworkUsage.downloadTotal ?? 0);
const up = NetworkUsage.formatBytesTotal(NetworkUsage.uploadTotal ?? 0);
+13 -12
View File
@@ -2,19 +2,20 @@ import QtQuick
import QtQuick.Layouts
import Quickshell
import ZShell.Services
import ZShell.Config
import qs.Components
import qs.Config
import qs.Services
CustomRect {
id: root
readonly property color accent: DynamicColors.palette.m3secondary
readonly property color accent: Colors.palette.m3secondary
readonly property real percentage: Storage.primaryDisk?.perc ?? 0
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Appearance.padding.large * 2
color: Colors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Tokens.padding.large * 2
implicitWidth: layout.implicitWidth + layout.anchors.margins * 2
radius: Appearance.rounding.large - Appearance.padding.normal
radius: Tokens.rounding.large - Tokens.padding.normal
ServiceRef {
service: Storage
@@ -24,7 +25,7 @@ CustomRect {
id: layout
anchors.left: parent.left
anchors.margins: Appearance.padding.small
anchors.margins: Tokens.padding.small
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
spacing: 0
@@ -33,11 +34,11 @@ CustomRect {
id: row
Layout.alignment: Qt.AlignHCenter
spacing: Appearance.spacing.large
spacing: Tokens.spacing.large
CircularProgress {
fgColor: root.accent
implicitSize: usageColumn.implicitHeight + thickness + Appearance.padding.large * 2
implicitSize: usageColumn.implicitHeight + thickness + Tokens.padding.large * 2
startAngle: -225
sweepAngle: 270
value: root.percentage
@@ -56,27 +57,27 @@ CustomRect {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Appearance.font.size.medium
font.pointSize: Tokens.font.size.medium
text: "hard_drive"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Appearance.font.size.large
font.pointSize: Tokens.font.size.large
text: Math.round(root.percentage * 100) + "%"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Used")
}
}
}
ColumnLayout {
spacing: Appearance.spacing.extraSmall
spacing: Tokens.spacing.extraSmall
CustomText {
text: qsTr("Storage")
+15 -14
View File
@@ -1,19 +1,20 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Services
import ZShell.Config
import qs.Components
import qs.Config
import qs.Services
CustomRect {
id: root
readonly property color accent: DynamicColors.palette.m3tertiary
readonly property color accent: Colors.palette.m3tertiary
Layout.fillWidth: true
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Appearance.padding.large * 2
implicitWidth: layout.implicitWidth + Appearance.padding.extraLargeIncreased
radius: Appearance.rounding.medium
color: Colors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + Tokens.padding.large * 2
implicitWidth: layout.implicitWidth + Tokens.padding.extraLargeIncreased
radius: Tokens.rounding.medium
ServiceRef {
service: Gpu
@@ -23,11 +24,11 @@ CustomRect {
id: layout
anchors.centerIn: parent
spacing: Appearance.spacing.extraSmall
spacing: Tokens.spacing.extraSmall
RowLayout {
Layout.leftMargin: -Appearance.padding.extraSmall
spacing: Appearance.spacing.small
Layout.leftMargin: -Tokens.padding.extraSmall
spacing: Tokens.spacing.small
MaterialIcon {
color: root.accent
@@ -44,9 +45,9 @@ CustomRect {
id: circularIndicator
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: Appearance.spacing.large
Layout.topMargin: Tokens.spacing.large
fgColor: root.accent
implicitSize: usageColumn.implicitHeight + thickness + Appearance.padding.largeIncreased * 2
implicitSize: usageColumn.implicitHeight + thickness + Tokens.padding.largeIncreased * 2
startAngle: -225
sweepAngle: 270
value: Gpu.memoryUsed / Gpu.memoryTotal
@@ -60,19 +61,19 @@ CustomRect {
id: usageColumn
anchors.centerIn: parent
anchors.verticalCenterOffset: Appearance.padding.extraSmall
anchors.verticalCenterOffset: Tokens.padding.extraSmall
spacing: 0
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Appearance.font.size.large
font.pointSize: Tokens.font.size.large
text: Math.round(circularIndicator.value * 100) + "%"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
text: qsTr("Used")
}
}
+10 -10
View File
@@ -1,36 +1,36 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Services
import ZShell.Config
import qs.Modules.Resources.Cards
import qs.Helpers
import qs.Components
import qs.Config
import qs.Services
Item {
id: root
required property Wrapper wrapper
implicitHeight: content.implicitHeight + Appearance.padding.normal * 2
implicitHeight: content.implicitHeight + Tokens.padding.normal * 2
implicitWidth: content.implicitWidth
RowLayout {
id: content
anchors.left: parent.left
anchors.margins: Appearance.padding.normal
anchors.margins: Tokens.padding.normal
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
spacing: Appearance.spacing.larger
spacing: Tokens.spacing.larger
ColumnLayout {
id: mainColumn
Layout.fillWidth: true
spacing: Appearance.spacing.normal
spacing: Tokens.spacing.normal
RowLayout {
spacing: Appearance.spacing.normal
spacing: Tokens.spacing.normal
visible: cpuCard.active || gpuCard.active
WrappedLoader {
@@ -39,7 +39,7 @@ Item {
active: Config.dashboard.performance.showCpu
sourceComponent: HeroCard {
accent: DynamicColors.palette.m3primary
accent: Colors.palette.m3primary
icon: "memory"
label: qsTr("CPU")
subLabel: Cpu.name
@@ -58,7 +58,7 @@ Item {
active: Config.dashboard.performance.showGpu && Gpu.type !== Gpu.None
sourceComponent: HeroCard {
accent: DynamicColors.palette.m3secondary
accent: Colors.palette.m3secondary
icon: "desktop_windows"
label: qsTr("GPU")
subLabel: Gpu.name
@@ -73,7 +73,7 @@ Item {
}
RowLayout {
spacing: Appearance.spacing.normal
spacing: Tokens.spacing.normal
visible: storageCard.active || memoryCard.active || vramCard.active || networkCard1.active
WrappedLoader {
+3 -3
View File
@@ -3,7 +3,7 @@ pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
import qs.Components
import qs.Config
import ZShell.Config
Item {
id: root
@@ -22,8 +22,8 @@ Item {
Behavior on offsetScale {
Anim {
duration: Appearance.anim.durations.expressiveDefaultSpatial
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
duration: Tokens.anim.durations.expressiveDefaultSpatial
easing.bezierCurve: Tokens.anim.curves.expressiveDefaultSpatial
}
}