Merge branch 'main' into feat/reposition-bar
C++ / fmt (pull_request) Successful in 4s
JS/TS / lint (pull_request) Successful in 16s
JS/TS / fmt (pull_request) Successful in 23s
Python / fmt (pull_request) Successful in 33s
Python / lint (pull_request) Successful in 32s
Python / test (pull_request) Successful in 1m0s
Python / typecheck (pull_request) Failing after 1m8s
Rust / fmt (pull_request) Successful in 34s
Rust / build (pull_request) Successful in 1m46s
C++ / build (pull_request) Successful in 2m33s
Rust / clippy (pull_request) Successful in 1m30s
Python / buildcheck (pull_request) Successful in 2m41s
C++ / clang-tidy (pull_request) Successful in 7m9s

This commit is contained in:
2026-08-14 19:16:01 +02:00
361 changed files with 5263 additions and 8231 deletions
+3 -7
View File
@@ -4,7 +4,7 @@ import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Layouts
import qs.Config
import ZShell.Config
import qs.Components
Item {
@@ -20,14 +20,10 @@ Item {
Behavior on implicitHeight {
Anim {
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
}
}
Behavior on implicitWidth {
Anim {
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
}
}
@@ -36,11 +32,11 @@ Item {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: Appearance.padding.smaller
anchors.margins: Tokens.padding.smaller
anchors.right: parent.right
anchors.top: parent.top
color: "transparent"
radius: Appearance.rounding.normal - anchors.margins
radius: Tokens.rounding.normal - anchors.margins
Item {
id: view
+6 -5
View File
@@ -4,19 +4,20 @@ import QtQuick.Layouts
import qs.Helpers
import qs.Components
import qs.Modules
import qs.Config
import ZShell.Config
import qs.Modules.Dashboard.Dash
import qs.Services
GridLayout {
id: root
required property PersistentProperties dashState
readonly property bool dashboardVisible: visibilities.dashboard
property int radius: Appearance.rounding.smallest
property int radius: Tokens.rounding.smallest
required property PersistentProperties visibilities
columnSpacing: Appearance.spacing.smaller
rowSpacing: Appearance.spacing.smaller
columnSpacing: Tokens.spacing.smaller
rowSpacing: Tokens.spacing.smaller
ParallelAnimation {
id: openAnim
@@ -117,6 +118,6 @@ GridLayout {
}
component Rect: CustomRect {
color: DynamicColors.tPalette.m3surfaceContainer
color: Colors.tPalette.m3surfaceContainer
}
}
+23 -22
View File
@@ -5,7 +5,8 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import qs.Components
import qs.Config
import ZShell.Config
import qs.Services
CustomMouseArea {
id: root
@@ -120,18 +121,18 @@ CustomMouseArea {
id: inner
anchors.fill: parent
anchors.margins: Appearance.padding.large
spacing: Appearance.spacing.extraSmall
anchors.margins: Tokens.padding.large
spacing: Tokens.spacing.extraSmall
RowLayout {
id: monthNavigationRow
Layout.fillWidth: true
spacing: Appearance.spacing.extraSmall
spacing: Tokens.spacing.extraSmall
IconButton {
icon: "chevron_left"
padding: Appearance.padding.small
padding: Tokens.padding.small
type: IconButton.Text
onClicked: root.dashState.currentDate = new Date(root.realCurrYear, root.realCurrMonth - 1, 1)
@@ -140,16 +141,16 @@ CustomMouseArea {
Item {
Layout.fillHeight: true
Layout.fillWidth: true
implicitHeight: monthYearDisplay1.implicitHeight + Appearance.padding.extraSmall * 2
implicitWidth: monthYearDisplay1.implicitWidth + Appearance.padding.large * 2
implicitHeight: monthYearDisplay1.implicitHeight + Tokens.padding.extraSmall * 2
implicitWidth: monthYearDisplay1.implicitWidth + Tokens.padding.large * 2
StateLayer {
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
enabled: {
const now = new Date();
return root.realCurrMonth !== now.getMonth() || root.realCurrYear !== now.getFullYear();
}
radius: pressed ? Appearance.rounding.small : Appearance.rounding.large
radius: pressed ? Tokens.rounding.small : Tokens.rounding.large
Behavior on radius {
Anim {
@@ -171,7 +172,7 @@ CustomMouseArea {
anchors.centerIn: parent
// qmllint enable missing-property
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
// qmllint disable missing-property
text: grid1.item ? grid1.item.title : ""
@@ -187,7 +188,7 @@ CustomMouseArea {
anchors.centerIn: parent
// qmllint enable missing-property
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
// qmllint disable missing-property
text: grid2.item ? grid2.item.title : ""
@@ -202,7 +203,7 @@ CustomMouseArea {
IconButton {
icon: "chevron_right"
padding: Appearance.padding.small
padding: Tokens.padding.small
type: IconButton.Text
onClicked: root.dashState.currentDate = new Date(root.realCurrYear, root.realCurrMonth + 1, 1)
@@ -218,7 +219,7 @@ CustomMouseArea {
delegate: CustomText {
required property var model
color: (model.day === 0) ? DynamicColors.palette.m3tertiary : DynamicColors.palette.m3onSurface
color: (model.day === 0) ? Colors.palette.m3tertiary : Colors.palette.m3onSurface
horizontalAlignment: Text.AlignHCenter
text: Qt.locale("en_US").standaloneDayName(model.day, Locale.ShortFormat)
}
@@ -258,7 +259,7 @@ CustomMouseArea {
required property var model
implicitHeight: text.implicitHeight + Appearance.padding.normal * 2
implicitHeight: text.implicitHeight + Tokens.padding.normal * 2
implicitWidth: implicitHeight
CustomText {
@@ -268,9 +269,9 @@ CustomMouseArea {
color: {
const dayOfWeek = dayItem.model.date.getDay();
if (dayOfWeek === 0)
return DynamicColors.palette.m3tertiary;
return Colors.palette.m3tertiary;
return DynamicColors.palette.m3onSurfaceVariant;
return Colors.palette.m3onSurfaceVariant;
}
horizontalAlignment: Text.AlignHCenter
opacity: dayItem.model.today || dayItem.model.month === internalGrid.month ? 1 : 0.4
@@ -286,14 +287,14 @@ CustomMouseArea {
readonly property Item todayItem: internalGrid.contentItem.children.find(c => c.model.today) ?? null
clip: true
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
implicitHeight: width
implicitWidth: today ? (Math.max(today.implicitWidth, today.implicitHeight) - Appearance.padding.extraSmall) : 0
implicitWidth: today ? (Math.max(today.implicitWidth, today.implicitHeight) - Tokens.padding.extraSmall) : 0
opacity: todayItem ? 1 : 0
radius: Appearance.rounding.full
radius: Tokens.rounding.full
scale: todayItem ? 1 : 0.7
x: today ? today.x + (today.width - implicitWidth) / 2 : 0
y: today ? today.y + Appearance.padding.extraSmall / 2 : 0
y: today ? today.y + Tokens.padding.extraSmall / 2 : 0
Behavior on opacity {
Anim {
@@ -320,11 +321,11 @@ CustomMouseArea {
}
Coloriser {
colorizationColor: DynamicColors.palette.m3onPrimary
colorizationColor: Colors.palette.m3onPrimary
implicitHeight: internalGrid.height
implicitWidth: internalGrid.width
source: internalGrid
sourceColor: DynamicColors.palette.m3onSurface
sourceColor: Colors.palette.m3onSurface
x: -todayIndicator.x
y: -todayIndicator.y
}
+5 -4
View File
@@ -3,8 +3,9 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import qs.Components
import qs.Config
import ZShell.Config
import qs.Helpers
import qs.Services
Item {
id: root
@@ -22,7 +23,7 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
Layout.bottomMargin: -(font.pointSize * 0.4)
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
font.family: "Rubik"
font.pointSize: 18
font.weight: 600
@@ -31,7 +32,7 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
font.family: "Rubik"
font.pointSize: 18 * 0.9
text: "•••"
@@ -40,7 +41,7 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: -(font.pointSize * 0.4)
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
font.family: "Rubik"
font.pointSize: 18
font.weight: 600
+43 -42
View File
@@ -6,10 +6,11 @@ import QtQuick.Layouts
import QtQuick.Shapes
import QtQuick.Effects
import ZShell.Services
import ZShell.Config
import qs.Daemons
import qs.Components
import qs.Config
import qs.Helpers
import qs.Services
Item {
id: root
@@ -18,7 +19,7 @@ Item {
const active = Players.active;
return active?.length ? (active.position % active.length) / active.length : 0;
}
property int rowHeight: Appearance.padding.large + Config.dashboard.sizes.mediaProgressThickness + Appearance.spacing.small
property int rowHeight: Tokens.padding.large + Config.dashboard.sizes.mediaProgressThickness + Tokens.spacing.small
anchors.left: parent.left
anchors.right: parent.right
@@ -26,7 +27,7 @@ Item {
Behavior on playerProgress {
Anim {
duration: Appearance.anim.durations.large
duration: Tokens.anim.durations.large
}
}
@@ -47,7 +48,7 @@ Item {
id: visualizer
readonly property int bars: Config.services.visualizerBars
property color color: DynamicColors.palette.m3tertiary
property color color: Colors.palette.m3tertiary
property color fillColor: Qt.alpha(color, 0.25)
anchors.fill: layout
@@ -117,7 +118,7 @@ Item {
CustomRect {
anchors.fill: visualizer
color: Qt.alpha(DynamicColors.palette.m3shadow, 0.2)
color: Qt.alpha(Colors.palette.m3shadow, 0.2)
layer.enabled: true
layer.effect: MultiEffect {
maskEnabled: true
@@ -129,9 +130,9 @@ Item {
preferredRendererType: Shape.CurveRenderer
ShapePath {
capStyle: Appearance.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap
capStyle: Tokens.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap
fillColor: "transparent"
strokeColor: DynamicColors.layer(DynamicColors.palette.m3surfaceContainerHigh, 2)
strokeColor: Colors.layer(Colors.palette.m3surfaceContainerHigh, 2)
strokeWidth: Config.dashboard.sizes.mediaProgressThickness
Behavior on strokeColor {
@@ -142,17 +143,17 @@ Item {
PathAngleArc {
centerX: cover.x + cover.width / 2
centerY: cover.y + cover.height / 2
radiusX: (cover.width + Config.dashboard.sizes.mediaProgressThickness) / 2 + Appearance.spacing.small
radiusY: (cover.height + Config.dashboard.sizes.mediaProgressThickness) / 2 + Appearance.spacing.small
radiusX: (cover.width + Config.dashboard.sizes.mediaProgressThickness) / 2 + Tokens.spacing.small
radiusY: (cover.height + Config.dashboard.sizes.mediaProgressThickness) / 2 + Tokens.spacing.small
startAngle: -90 - Config.dashboard.sizes.mediaProgressSweep / 2
sweepAngle: Config.dashboard.sizes.mediaProgressSweep
}
}
ShapePath {
capStyle: Appearance.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap
capStyle: Tokens.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap
fillColor: "transparent"
strokeColor: DynamicColors.palette.m3primary
strokeColor: Colors.palette.m3primary
strokeWidth: Config.dashboard.sizes.mediaProgressThickness
Behavior on strokeColor {
@@ -163,8 +164,8 @@ Item {
PathAngleArc {
centerX: cover.x + cover.width / 2
centerY: cover.y + cover.height / 2
radiusX: (cover.width + Config.dashboard.sizes.mediaProgressThickness) / 2 + Appearance.spacing.small
radiusY: (cover.height + Config.dashboard.sizes.mediaProgressThickness) / 2 + Appearance.spacing.small
radiusX: (cover.width + Config.dashboard.sizes.mediaProgressThickness) / 2 + Tokens.spacing.small
radiusY: (cover.height + Config.dashboard.sizes.mediaProgressThickness) / 2 + Tokens.spacing.small
startAngle: -90 - Config.dashboard.sizes.mediaProgressSweep / 2
sweepAngle: Config.dashboard.sizes.mediaProgressSweep * root.playerProgress
}
@@ -182,17 +183,17 @@ Item {
id: cover
Layout.alignment: Qt.AlignLeft
Layout.bottomMargin: Appearance.padding.large + Config.dashboard.sizes.mediaProgressThickness + Appearance.spacing.small
Layout.leftMargin: Appearance.padding.large + Config.dashboard.sizes.mediaProgressThickness + Appearance.spacing.small
Layout.bottomMargin: Tokens.padding.large + Config.dashboard.sizes.mediaProgressThickness + Tokens.spacing.small
Layout.leftMargin: Tokens.padding.large + Config.dashboard.sizes.mediaProgressThickness + Tokens.spacing.small
Layout.preferredHeight: Config.dashboard.sizes.mediaCoverArtSize
Layout.preferredWidth: Config.dashboard.sizes.mediaCoverArtSize
Layout.topMargin: Appearance.padding.large + Config.dashboard.sizes.mediaProgressThickness + Appearance.spacing.small
color: DynamicColors.tPalette.m3surfaceContainerHigh
Layout.topMargin: Tokens.padding.large + Config.dashboard.sizes.mediaProgressThickness + Tokens.spacing.small
color: Colors.tPalette.m3surfaceContainerHigh
radius: Infinity
MaterialIcon {
anchors.centerIn: parent
color: DynamicColors.palette.m3onSurfaceVariant
color: Colors.palette.m3onSurfaceVariant
font.pointSize: (parent.width * 0.4) || 1
grade: 200
text: "art_track"
@@ -219,12 +220,12 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
color: DynamicColors.palette.m3primary
font.pointSize: Appearance.font.size.normal
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.normal
horizontalAlignment: Text.AlignHCenter
pauseMs: 4000
text: (Players.active?.trackTitle ?? qsTr("No media")) || qsTr("Unknown title")
width: parent.width - Appearance.padding.large * 4
width: parent.width - Tokens.padding.large * 4
}
MarqueeText {
@@ -232,13 +233,13 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: title.bottom
anchors.topMargin: Appearance.spacing.small
color: DynamicColors.palette.m3outline
font.pointSize: Appearance.font.size.small
anchors.topMargin: Tokens.spacing.small
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
horizontalAlignment: Text.AlignHCenter
pauseMs: 4000
text: (Players.active?.trackAlbum ?? qsTr("No media")) || qsTr("Unknown album")
width: parent.width - Appearance.padding.large * 4
width: parent.width - Tokens.padding.large * 4
}
MarqueeText {
@@ -246,12 +247,12 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: album.bottom
anchors.topMargin: Appearance.spacing.small
color: DynamicColors.palette.m3secondary
anchors.topMargin: Tokens.spacing.small
color: Colors.palette.m3secondary
horizontalAlignment: Text.AlignHCenter
pauseMs: 4000
text: (Players.active?.trackArtist ?? qsTr("No media")) || qsTr("Unknown artist")
width: parent.width - Appearance.padding.large * 4
width: parent.width - Tokens.padding.large * 4
}
RowLayout {
@@ -259,8 +260,8 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: artist.bottom
anchors.topMargin: Appearance.spacing.smaller
spacing: Appearance.spacing.small
anchors.topMargin: Tokens.spacing.smaller
spacing: Tokens.spacing.small
Control {
function onClicked(): void {
@@ -303,22 +304,22 @@ Item {
function onClicked(): void {
}
Layout.preferredWidth: implicitWidth + (controlState.pressed ? Appearance.padding.normal * 2 : 0)
color: canUse ? DynamicColors.palette[`m3${set_color.toLowerCase()}`] : DynamicColors.palette[`m3${set_color.toLowerCase()}Container`]
Layout.preferredWidth: implicitWidth + (controlState.pressed ? Tokens.padding.normal * 2 : 0)
color: canUse ? Colors.palette[`m3${set_color.toLowerCase()}`] : Colors.palette[`m3${set_color.toLowerCase()}Container`]
implicitHeight: implicitWidth
implicitWidth: Math.max(icon.implicitHeight, icon.implicitHeight) + Appearance.padding.small
radius: Appearance.rounding.full
implicitWidth: Math.max(icon.implicitHeight, icon.implicitHeight) + Tokens.padding.small
radius: Tokens.rounding.full
Behavior on Layout.preferredWidth {
Anim {
duration: Appearance.anim.durations.expressiveFastSpatial
easing.bezierCurve: Appearance.anim.curves.expressiveFastSpatial
duration: Tokens.anim.durations.expressiveFastSpatial
easing.bezierCurve: Tokens.anim.curves.expressiveFastSpatial
}
}
Behavior on radius {
Anim {
duration: Appearance.anim.durations.expressiveFastSpatial
easing.bezierCurve: Appearance.anim.curves.expressiveFastSpatial
duration: Tokens.anim.durations.expressiveFastSpatial
easing.bezierCurve: Tokens.anim.curves.expressiveFastSpatial
}
}
@@ -332,13 +333,13 @@ Item {
StateLayer {
id: controlState
color: control.canUse ? DynamicColors.palette[`m3on${control.set_color}`] : DynamicColors.palette[`m3on${control.set_color}Container`]
color: control.canUse ? Colors.palette[`m3on${control.set_color}`] : Colors.palette[`m3on${control.set_color}Container`]
enabled: control.canUse
onClicked: {
control.onClicked();
}
// radius: Appearance.rounding.full
// radius: Tokens.rounding.full
}
MaterialIcon {
@@ -347,9 +348,9 @@ Item {
anchors.centerIn: parent
anchors.verticalCenterOffset: font.pointSize * 0.05
animate: true
color: control.canUse ? DynamicColors.palette[`m3on${control.set_color}`] : DynamicColors.palette[`m3on${control.set_color}Container`]
color: control.canUse ? Colors.palette[`m3on${control.set_color}`] : Colors.palette[`m3on${control.set_color}Container`]
fill: control.canUse ? 1 : 0
font.pointSize: Appearance.font.size.large
font.pointSize: Tokens.font.size.large
text: control.icon
}
}
+9 -9
View File
@@ -1,9 +1,9 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Services
import ZShell.Config
import qs.Components
import qs.Helpers
import qs.Config
import qs.Services
Item {
id: root
@@ -33,36 +33,36 @@ Item {
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
anchors.margins: Appearance.padding.large
anchors.margins: Tokens.padding.large
anchors.top: parent.top
spacing: Appearance.spacing.normal
spacing: Tokens.spacing.normal
Resource {
fgColor: DynamicColors.palette.m3primary
fgColor: Colors.palette.m3primary
icon: "memory"
value: Cpu.percentage
}
Resource {
fgColor: DynamicColors.palette.m3secondary
fgColor: Colors.palette.m3secondary
icon: "memory_alt"
value: Memory.percentage
}
Resource {
fgColor: DynamicColors.palette.m3tertiary
fgColor: Colors.palette.m3tertiary
icon: "gamepad"
value: Gpu.percentage
}
Resource {
fgColor: DynamicColors.palette.m3primary
fgColor: Colors.palette.m3primary
icon: "host"
value: Gpu.memoryUsed / Gpu.memoryTotal
}
Resource {
fgColor: DynamicColors.palette.m3secondary
fgColor: Colors.palette.m3secondary
icon: "hard_disk"
value: Storage.percentage
}
+10 -10
View File
@@ -1,10 +1,10 @@
import qs.Components
import qs.Config
import qs.Paths
import qs.Helpers
import qs.Modules
import Quickshell
import QtQuick
import ZShell.Config
import qs.Services
import qs.Components
import qs.Paths
import qs.Helpers
Row {
id: root
@@ -15,10 +15,10 @@ Row {
spacing: 12
CustomClippingRect {
color: DynamicColors.layer(DynamicColors.palette.m3surfaceContainerHigh, 2)
color: Colors.layer(Colors.palette.m3surfaceContainerHigh, 2)
implicitHeight: info.implicitHeight
implicitWidth: info.implicitHeight
radius: Appearance.rounding.smallest
radius: Tokens.rounding.smallest
MaterialIcon {
anchors.centerIn: parent
@@ -53,7 +53,7 @@ Row {
anchors.left: parent.left
anchors.leftMargin: (Config.dashboard.sizes.infoIconSize - implicitWidth) / 2
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
implicitSize: Math.floor(13 * 1.34)
source: SystemInfo.osLogo
}
@@ -72,7 +72,7 @@ Row {
}
InfoLine {
colour: DynamicColors.palette.m3secondary
colour: Colors.palette.m3secondary
icon: "select_window_2"
text: SystemInfo.wm
}
@@ -80,7 +80,7 @@ Row {
InfoLine {
id: uptime
colour: DynamicColors.palette.m3tertiary
colour: Colors.palette.m3tertiary
icon: "timer"
text: qsTr("%1").arg(SystemInfo.uptime)
}
+6 -5
View File
@@ -1,7 +1,8 @@
import QtQuick
import qs.Helpers
import qs.Components
import qs.Config
import ZShell.Config
import qs.Services
Item {
id: root
@@ -17,7 +18,7 @@ Item {
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
animate: true
color: DynamicColors.palette.m3secondary
color: Colors.palette.m3secondary
font.pointSize: 54
text: Weather.icon
}
@@ -26,15 +27,15 @@ Item {
id: info
anchors.left: icon.right
anchors.leftMargin: Appearance.spacing.large
anchors.leftMargin: Tokens.spacing.large
anchors.verticalCenter: parent.verticalCenter
spacing: 8
CustomText {
anchors.horizontalCenter: parent.horizontalCenter
animate: true
color: DynamicColors.palette.m3primary
font.pointSize: Appearance.font.size.extraLarge
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.extraLarge
font.weight: 500
text: Weather.temp
}
+11 -14
View File
@@ -1,13 +1,14 @@
pragma ComponentBehavior: Bound
import qs.Components
import qs.Config
import ZShell.Config
import qs.Helpers
import qs.Modules
import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Controls
import qs.Services
Item {
id: root
@@ -81,9 +82,9 @@ Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
color: DynamicColors.palette.m3primary
color: Colors.palette.m3primary
implicitHeight: parent.implicitHeight * 2
radius: Appearance.rounding.full
radius: Tokens.rounding.full
}
}
@@ -93,7 +94,7 @@ Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: indicator.bottom
color: DynamicColors.palette.m3outlineVariant
color: Colors.palette.m3outlineVariant
implicitHeight: 1
}
@@ -158,8 +159,6 @@ Item {
}
Anim {
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
from: 0
properties: "implicitWidth,implicitHeight"
target: ripple
@@ -167,8 +166,6 @@ Item {
}
Anim {
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
easing.type: Easing.BezierSpline
property: "opacity"
target: ripple
@@ -184,13 +181,13 @@ Item {
anchors.verticalCenter: parent.verticalCenter
color: "transparent"
implicitHeight: parent.height + 8 * 2
radius: Appearance.rounding.smallest
radius: Tokens.rounding.smallest
CustomRect {
id: stateLayer
anchors.fill: parent
color: tab.current ? DynamicColors.palette.m3primary : DynamicColors.palette.m3onSurface
color: tab.current ? Colors.palette.m3primary : Colors.palette.m3onSurface
opacity: mouse.pressed ? 0.1 : tab.hovered ? 0.08 : 0
Behavior on opacity {
@@ -202,9 +199,9 @@ Item {
CustomRect {
id: ripple
color: tab.current ? DynamicColors.palette.m3primary : DynamicColors.palette.m3onSurface
color: tab.current ? Colors.palette.m3primary : Colors.palette.m3onSurface
opacity: 0
radius: Appearance.rounding.full
radius: Tokens.rounding.full
transform: Translate {
x: -ripple.width / 2
@@ -218,7 +215,7 @@ Item {
anchors.bottom: label.top
anchors.horizontalCenter: parent.horizontalCenter
color: tab.current ? DynamicColors.palette.m3primary : DynamicColors.palette.m3onSurfaceVariant
color: tab.current ? Colors.palette.m3primary : Colors.palette.m3onSurfaceVariant
fill: tab.current ? 1 : 0
font.pointSize: 18
text: tab.iconName
@@ -234,7 +231,7 @@ Item {
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
color: tab.current ? DynamicColors.palette.m3primary : DynamicColors.palette.m3onSurfaceVariant
color: tab.current ? Colors.palette.m3primary : Colors.palette.m3onSurfaceVariant
text: tab.text
}
}
+1 -1
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