Feat: Dashboard tabs and repositioning. New processes view. Settings backend changes #158

Merged
zach merged 21 commits from feat/dashboard-tabs-processes-and-settings-backend into main 2026-09-30 16:51:16 +02:00
115 changed files with 1687 additions and 916 deletions
Showing only changes of commit f825e4d53b - Show all commits
+21 -42
View File
@@ -80,49 +80,29 @@ Slider {
property bool moving
function update(): void {
animate = !moving;
binding.when = moving;
font.pointSize = moving ? Tokens.font.size.small : Tokens.font.size.larger;
font.family = moving ? Config.appearance.font.family.sans : Config.appearance.font.family.material;
}
anchors.centerIn: parent
anchors.verticalCenterOffset: 1
text: moving ? Math.round(root.value * 100) : root.icon
color: Colors.palette.m3inverseOnSurface
text: root.icon
font: moving ? Tokens.font.body.small : Tokens.font.icon.medium
onMovingChanged: anim.restart()
Binding {
id: binding
property: "text"
target: icon
value: Math.round(root.value * root.multiplier)
when: false
}
SequentialAnimation {
id: anim
Anim {
duration: Tokens.anim.durations.normal / 2
easing: Tokens.anim.standardAccel
property: "scale"
target: icon
to: 0
}
ScriptAction {
script: icon.update()
}
Anim {
duration: Tokens.anim.durations.normal / 2
easing: Tokens.anim.standardDecel
property: "scale"
target: icon
to: 1
Behavior on moving {
SequentialAnimation {
Anim {
target: icon
property: "scale"
to: 0.3
duration: Tokens.anim.durations.small / 2
easing: Tokens.anim.standardAccel
}
PropertyAction {}
Anim {
target: icon
property: "scale"
to: 1
duration: Tokens.anim.durations.normal / 2
easing: Tokens.anim.standardDecel
}
}
}
}
@@ -130,7 +110,7 @@ Slider {
}
Behavior on value {
Anim {
duration: Tokens.anim.durations.large
type: Anim.StandardLarge
}
}
@@ -138,7 +118,6 @@ Slider {
onValueChanged: {
if (!initialized) {
initialized = true;
oldValue = value;
return;
}
+1 -5
View File
@@ -20,11 +20,7 @@ CustomRect {
property color disabledColor: Qt.alpha(Colors.palette.m3onSurface, 0.1)
property color disabledOnColor: Qt.alpha(Colors.palette.m3onSurface, 0.38)
property bool fillWidth
property font font: ({
family: Config.appearance.font.family.sans,
pointSize: Tokens.font.size.larger,
bold: false
})
property font font: Tokens.font.body.small
property real horizontalPadding: padding
readonly property alias hovered: stateLayer.containsMouse
required implicitHeight
+3 -4
View File
@@ -6,7 +6,7 @@ import qs.Services
RadioButton {
id: root
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
implicitHeight: Math.max(implicitIndicatorHeight, implicitContentHeight)
implicitWidth: implicitIndicatorWidth + implicitContentWidth + contentItem.anchors.leftMargin
@@ -14,7 +14,7 @@ RadioButton {
anchors.left: outerCircle.right
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
font.pointSize: root.font.pointSize
font: root.font
text: root.text
}
indicator: Rectangle {
@@ -29,8 +29,7 @@ RadioButton {
radius: Tokens.rounding.full
Behavior on border.color {
CAnim {
}
CAnim {}
}
StateLayer {
+9 -7
View File
@@ -100,15 +100,19 @@ Slider {
anchors.bottom: parent.bottom
anchors.top: parent.top
color: root.insetColor
font.pixelSize: Tokens.font.size.smaller * 2
fontStyle: {
if (root.height < 96)
return Tokens.font.icon.pixelSize(24).build();
else
return Tokens.font.icon.pixelSize(32).build();
}
text: root.insetIcon
verticalAlignment: Text.AlignVCenter
visible: !root.wavy && root.insetIcon !== ""
x: Tokens.spacing.extraSmall + dockT * (handle.x + Tokens.spacing.small)
Behavior on dockT {
Anim {
}
Anim {}
}
}
@@ -138,8 +142,7 @@ Slider {
startX: x
Behavior on color {
CAnim {
}
CAnim {}
}
Anim on waveProgress {
duration: root.waveDuration
@@ -156,8 +159,7 @@ Slider {
Behavior on filledWidth {
id: widthBehavior
Anim {
}
Anim {}
}
Component.onCompleted: {
+3 -6
View File
@@ -14,15 +14,13 @@ Text {
property real animateTo: 1
color: Colors.palette.m3onSurface
font.family: Config.appearance.font.family.sans
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.small
linkColor: Colors.palette.m3onPrimaryFixedVariant
renderType: Text.NativeRendering
textFormat: Text.PlainText
Behavior on color {
CAnim {
}
CAnim {}
}
Behavior on text {
enabled: root.animate
@@ -34,8 +32,7 @@ Text {
type: Anim.FastEffects
}
PropertyAction {
}
PropertyAction {}
TAnim {
target: root
+4 -2
View File
@@ -29,7 +29,7 @@ TextFieldBase {
property string supportingText
property string trailingIcon
property int smallFontSize: Tokens.font.size.small
property int smallFontSize: Tokens.font.label.small.pointSize
property int type: CustomTextField.Outlined
property var validate // Regex or function
@@ -151,6 +151,7 @@ TextFieldBase {
sourceComponent: MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
text: root.leadingIcon
fontStyle: Tokens.font.icon.builders.medium.scale(0.9).build()
}
}
@@ -165,6 +166,7 @@ TextFieldBase {
sourceComponent: MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
text: root.trailingIcon
fontStyle: Tokens.font.icon.builders.medium.scale(0.9).build()
}
}
}
@@ -179,7 +181,7 @@ TextFieldBase {
sourceComponent: CustomText {
color: root.isError ? Colors.palette.m3error : Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: root.effectiveSupportingText
}
}
+42
View File
@@ -0,0 +1,42 @@
import QtQuick
import Quickshell
ShaderEffect {
id: root
property Item target: parent
property real glowSize: 40
property real innerGlow: 0
property real lineWidth: 2
property real intensity: 1.0
property real speed: 1.0
property int period: 6000
property bool running: true
property color color1: "#4285F4"
property color color2: "#9B72CB"
property color color3: "#D96570"
property color color4: "#F2A54A"
readonly property size itemSize: Qt.size(width, height)
readonly property size rectSize: target ? Qt.size(target.width, target.height) : Qt.size(0, 0)
readonly property real radius: (target as Rectangle).radius ?? 0
property real phase: 0
anchors.fill: target
anchors.margins: -glowSize
z: -1
enabled: false
fragmentShader: Qt.resolvedUrl(`${Quickshell.shellDir}/assets/shaders/geminiglow.frag.qsb`)
FrameAnimation {
running: root.running && root.visible
onTriggered: {
const dt = frameTime * 1000;
root.phase = (root.phase + dt * root.speed / root.period) % 1.0;
}
}
}
+2 -1
View File
@@ -8,6 +8,7 @@ ButtonBase {
property alias icon: label.text
readonly property alias label: label
font: Tokens.font.icon.medium
activeColor: type === IconButton.Filled ? Colors.palette.m3primary : Colors.palette.m3secondary
activeOnColor: type === IconButton.Filled ? Colors.palette.m3onPrimary : type === IconButton.Tonal ? Colors.palette.m3onSecondary : Colors.palette.m3primary
implicitHeight: {
@@ -36,7 +37,7 @@ ButtonBase {
anchors.verticalCenterOffset: 1
color: root.onColor
fill: !root.isToggle || root.internalChecked ? 1 : 0
font.pointSize: root.font.pointSize
fontStyle: root.font
Behavior on fill {
Anim {
+1 -2
View File
@@ -46,10 +46,9 @@ ButtonBase {
Layout.alignment: Qt.AlignVCenter
color: root.onColor
fill: root.internalChecked ? 1 : 0
font: {
fontStyle: {
const f = Qt.font(root.font);
f.pointSize = Math.round(root.font.pointSize * 1.2);
f.family = "Material Symbols Rounded";
return f;
}
+3 -17
View File
@@ -1,27 +1,13 @@
import QtQuick
import ZShell.Config
import qs.Services
CustomText {
id: root
readonly property list<int> allowed: [20, 24, 40, 48]
property real fill: 0
property int grade: Colors.light ? 0 : -25
readonly property int opsz: clampOpsz(optical)
property int optical: fontInfo.pixelSize
property font fontStyle: Tokens.font.icon.small
function clampOpsz(value): int {
return allowed.reduce((closest, current) => {
return Math.abs(current - value) < Math.abs(closest - value) ? current : closest;
});
}
font.family: "Material Symbols Rounded"
font.pointSize: Tokens.font.size.larger
font.variableAxes: ({
FILL: fill,
GRAD: grade,
opsz: opsz,
wght: fontInfo.weight
})
font: Tokens.font.icon.size(fontStyle.pointSize).weight(fontStyle.weight).vaxes(fontStyle.variableAxes).fill(fill.toFixed(1)).grade(grade).build()
}
+1 -1
View File
@@ -62,7 +62,7 @@ TextFieldBase {
anchors.leftMargin: Tokens.padding.large
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.builders.medium.scale(0.9).build()
text: "search"
}
+4 -7
View File
@@ -8,7 +8,7 @@ TextField {
color: Colors.palette.m3onSurface
cursorVisible: !readOnly
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
implicitHeight: contentHeight + topPadding + bottomPadding
implicitWidth: contentWidth + leftPadding + rightPadding
placeholderTextColor: Colors.palette.m3onSurfaceVariant // No anim cause placeholder is custom
@@ -18,14 +18,11 @@ TextField {
verticalAlignment: TextInput.AlignVCenter
Behavior on color {
CAnim {
}
}
cursorDelegate: Item {
CAnim {}
}
cursorDelegate: Item {}
Behavior on selectionColor {
CAnim {
}
CAnim {}
}
CustomRect {
+3 -4
View File
@@ -36,8 +36,7 @@ CustomRect {
radius: Tokens.rounding.medium
Behavior on border.color {
CAnim {
}
CAnim {}
}
Elevation {
@@ -84,7 +83,7 @@ CustomRect {
return Colors.palette.m3onError;
return Colors.palette.m3onSurfaceVariant;
}
font.pointSize: Math.round(Tokens.font.size.large * 1.2)
fontStyle: Tokens.font.icon.builders.large.scale(1.2).build()
text: root.modelData.icon
}
}
@@ -107,7 +106,7 @@ CustomRect {
return Colors.palette.m3onSurface;
}
elide: Text.ElideRight
font.pointSize: Tokens.font.size.normal
font: Tokens.font.title.small
text: root.modelData.title
}
+1 -1
View File
@@ -42,7 +42,7 @@ Item {
readonly property real scaleRatio: Hypr.monitorFor(screen).scale
required property ShellScreen screen
property real sh: Math.abs(sy - ey)
readonly property color shadowColor: Hypr.options.decoration.shadow.color
readonly property color shadowColor: Hypr.options.decoration.shadow?.color ?? "black"
readonly property bool shadowEnabled: Hypr.options.decoration.shadow.enabled
readonly property var shadowOffset: Hypr.options.decoration.shadow.offset
readonly property int shadowRange: Hypr.options.decoration.shadow.range
+7 -7
View File
@@ -73,7 +73,7 @@ CustomRect {
required property var modelData
color: root.tool === modelData.id ? "#3584e4" : "transparent"
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: tool.modelData.glyph
inactiveColor: root.tool === modelData.id ? Colors.palette.m3primary : "transparent"
inactiveOnColor: root.tool === modelData.id ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
@@ -103,7 +103,7 @@ CustomRect {
required property color modelData
fillWidth: false
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: ""
implicitHeight: buttonSize
implicitWidth: buttonSize
@@ -128,7 +128,7 @@ CustomRect {
spacing: Tokens.spacing.extraSmall
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "undo"
inactiveColor: "transparent"
inactiveOnColor: Colors.palette.m3onSurface
@@ -140,7 +140,7 @@ CustomRect {
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "delete_history"
inactiveColor: "transparent"
inactiveOnColor: Colors.palette.m3onSurface
@@ -152,7 +152,7 @@ CustomRect {
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "content_copy"
inactiveColor: "transparent"
inactiveOnColor: Colors.palette.m3onSurface
@@ -164,7 +164,7 @@ CustomRect {
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "delete_forever"
inactiveColor: "transparent"
inactiveOnColor: Colors.palette.m3onSurface
@@ -176,7 +176,7 @@ CustomRect {
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "check"
inactiveColor: "transparent"
inactiveOnColor: Colors.palette.m3onSurface
+5 -4
View File
@@ -13,6 +13,7 @@ import qs.Services
WidgetBase {
id: root
readonly property font font: Tokens.font.clock.family(Config.appearance.font.family.clock).build()
readonly property color contentColor: screenState.dashboard ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
readonly property string effectiveFormat: {
let fmt = Config.general.dateFormat;
@@ -57,7 +58,7 @@ WidgetBase {
anchors.centerIn: parent
color: root.contentColor
font.family: Config.appearance.font.family.mono // qmllint disable incompatible-type
font: root.font
height: implicitHeight
text: Time.dateStr
visible: root.horizontal
@@ -84,7 +85,7 @@ WidgetBase {
Layout.alignment: Qt.AlignHCenter
color: root.contentColor
font.family: Config.appearance.font.family.mono // qmllint disable incompatible-type
font: root.font
text: Qt.formatDateTime(Time.date, modelData)
Behavior on color {
@@ -114,7 +115,7 @@ WidgetBase {
Layout.alignment: Qt.AlignHCenter
color: root.contentColor
font.family: Config.appearance.font.family.mono // qmllint disable incompatible-type
font: root.font
text: {
if (modelData.includes("h"))
return Time.hourStr;
@@ -135,7 +136,7 @@ WidgetBase {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.contentColor
font.family: Config.appearance.font.family.mono // qmllint disable incompatible-type
font: root.font
text: Qt.formatDateTime(Time.date, "AP")
visible: Config.services.useTwelveHourClock && root.formatParts.timeTokens.length > 0
@@ -28,8 +28,7 @@ Row {
CustomText {
color: Battery.getColors(root.percentage, root.devState).fg
font.pointSize: Tokens.font.size.larger / 1.5
font.weight: 800
font: Tokens.font.body.builders.small.size(11).weight(Font.Bold).build()
height: track.height
horizontalAlignment: Text.AlignHCenter
text: Math.round(root.percentage * 100)
@@ -60,8 +59,7 @@ Row {
clip: true
color: Battery.getColors(root.percentage, root.devState).bg
font.pointSize: Tokens.font.size.larger / 1.5
font.weight: 800
font: Tokens.font.body.builders.small.size(11).weight(Font.Bold).build()
height: track.height
horizontalAlignment: Text.AlignHCenter
text: Math.round(root.percentage * 100)
+2 -3
View File
@@ -25,12 +25,11 @@ WidgetBase {
animate: true
color: root.tempEnabled ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
fill: root.tempEnabled ? 1 : 0
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: root.tempEnabled ? "lightbulb" : "light_off"
Behavior on fill {
Anim {
}
Anim {}
}
}
}
+4 -8
View File
@@ -19,14 +19,12 @@ WidgetBase {
Behavior on implicitHeight {
enabled: !root.horizontal
Anim {
}
Anim {}
}
Behavior on implicitWidth {
enabled: root.horizontal
Anim {
}
Anim {}
}
TextMetrics {
@@ -47,15 +45,14 @@ WidgetBase {
columns: root.horizontal ? -1 : 1
Behavior on implicitWidth {
Anim {
}
Anim {}
}
MaterialIcon {
Layout.alignment: root.horizontal ? Qt.AlignVCenter : Qt.AlignHCenter
animate: true
color: Players.active?.isPlaying ? Colors.palette.m3primary : Colors.palette.m3onSurface
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: Players.active?.isPlaying ? "music_note" : "music_off"
}
@@ -65,7 +62,6 @@ WidgetBase {
Layout.alignment: root.horizontal ? Qt.AlignVCenter : Qt.AlignHCenter
animate: true
color: Players.active?.isPlaying ? Colors.palette.m3primary : Colors.palette.m3onSurface
font.pointSize: Tokens.font.size.normal
horizontalAlignment: Text.AlignHCenter
implicitHeight: root.horizontal ? root.implicitHeight : root.textWidth
implicitWidth: root.horizontal ? root.textWidth : root.implicitWidth
+3 -5
View File
@@ -22,16 +22,14 @@ WidgetBase {
anchors.centerIn: parent
color: root.screenState.sidebar ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
fill: root.screenState.sidebar ? 1 : 0
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.size(16).build()
text: NotifServer.list.length ? "\uf4fe" : "\ue7f4"
Behavior on color {
CAnim {
}
CAnim {}
}
Behavior on fill {
Anim {
}
Anim {}
}
}
+2 -3
View File
@@ -27,8 +27,7 @@ GridLayout {
percentage: 0
Behavior on animatedPercentage {
Anim {
}
Anim {}
}
Component.onCompleted: animatedPercentage = percentage
@@ -44,7 +43,7 @@ GridLayout {
Layout.preferredWidth: 16
color: root.iconColor
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: root.icon
}
@@ -13,19 +13,16 @@ MaterialIcon {
animate: true
color: Audio.muted ? Colors.palette.m3error : Colors.palette.m3onSurface
fill: 1
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: Audio.muted ? "volume_off" : "volume_up"
Behavior on Layout.maximumWidth {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
}
@@ -13,19 +13,16 @@ MaterialIcon {
animate: true
color: (Audio.sourceMuted ?? false) ? Colors.palette.m3error : Colors.palette.m3onSurface
fill: 1
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: Audio.sourceMuted ? "mic_off" : "mic"
Behavior on Layout.maximumWidth {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
}
@@ -15,20 +15,16 @@ Item {
implicitWidth: currentItem?.implicitWidth ?? 0
Behavior on Layout.preferredHeight {
Anim {
}
Anim {}
}
Behavior on Layout.preferredWidth {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
Component.onCompleted: Battery.startDaemon()
@@ -67,7 +63,7 @@ Item {
Layout.alignment: Qt.AlignVCenter
animate: true
fill: 1
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.small
text: {
if (PowerProfiles.profile === PowerProfile.PowerSaver)
return "energy_savings_leaf";
+1 -2
View File
@@ -27,14 +27,13 @@ WidgetBase {
MaterialIcon {
Layout.alignment: root.horizontal ? Qt.AlignVCenter : Qt.AlignHCenter
font.pointSize: root.horizontal ? Tokens.font.size.larger : Tokens.font.size.large
fontStyle: Tokens.font.icon.small
text: "package_2"
}
CustomText {
Layout.alignment: root.horizontal ? Qt.AlignVCenter : Qt.AlignHCenter
color: root.textColor
font.pointSize: Tokens.font.size.normal
text: root.countUpdates
}
}
+2 -4
View File
@@ -52,8 +52,7 @@ Item {
elide: Qt.ElideRight
elideWidth: root.maxSize - (root.horizontal ? root.current.anchors.leftMargin : 0)
font.family: "Rubik"
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.small
text: Hypr.activeToplevel?.title ?? qsTr("Desktop")
onElideWidthChanged: root.current.text = elidedText
@@ -81,8 +80,7 @@ Item {
width: root.horizontal ? implicitWidth : implicitHeight
Behavior on opacity {
Anim {
}
Anim {}
}
transform: [
Translate {
+2 -3
View File
@@ -181,8 +181,7 @@ Column {
}
]
transitions: Transition {
AnchorAnim {
}
AnchorAnim {}
}
}
@@ -246,7 +245,7 @@ Column {
anchors.centerIn: parent
color: profiles.current === text ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
fill: profiles.current === text ? 1 : 0
font.pointSize: Tokens.font.size.large * 2
fontStyle: Tokens.font.icon.extraLarge
grade: Colors.light ? 0 : (text === "balance" ? -25 : 0)
text: parent.icon
+6 -6
View File
@@ -39,7 +39,7 @@ CustomClippingRect {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
color: Colors.tPalette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.extraLarge * 3
fontStyle: Tokens.font.icon.builders.large.size(48).weight(Font.DemiBold).build()
horizontalAlignment: Text.AlignHCenter
text: "check"
}
@@ -89,7 +89,7 @@ CustomClippingRect {
anchors.rightMargin: Tokens.padding.small
MaterialIcon {
font.pointSize: Tokens.font.size.large * 2
fontStyle: Tokens.font.icon.extraLarge
text: "package_2"
}
@@ -100,7 +100,7 @@ CustomClippingRect {
Layout.fillWidth: true
Layout.preferredHeight: 25
elide: Text.ElideRight
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.medium
text: update.sections[0]
}
@@ -122,7 +122,7 @@ CustomClippingRect {
Layout.preferredWidth: 125
animate: true
color: Colors.palette.m3tertiary
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.medium
horizontalAlignment: Text.AlignHCenter
marqueeEnabled: true
pauseMs: 4000
@@ -133,7 +133,7 @@ CustomClippingRect {
MaterialIcon {
Layout.fillHeight: true
color: Colors.palette.m3secondary
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.large
horizontalAlignment: Text.AlignHCenter
text: "arrow_right_alt"
verticalAlignment: Text.AlignVCenter
@@ -146,7 +146,7 @@ CustomClippingRect {
Layout.preferredWidth: 120
animate: true
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.medium
horizontalAlignment: Text.AlignHCenter
marqueeEnabled: true
pauseMs: 4000
+2 -4
View File
@@ -66,8 +66,7 @@ Item {
radius: 25
Behavior on implicitWidth {
Anim {
}
Anim {}
}
Column {
@@ -104,7 +103,6 @@ Item {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
text: lineRow.modelData.line
}
}
@@ -252,7 +250,7 @@ Item {
anchors.left: parent.left
anchors.margins: Tokens.padding.small
anchors.verticalCenter: parent.verticalCenter
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: clipItem.isImage ? "image" : "text_fields"
}
-51
View File
@@ -1,51 +0,0 @@
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import qs.Components
import ZShell.Config
import qs.Helpers
import qs.Services
Item {
id: root
anchors.bottom: parent.bottom
anchors.top: parent.top
implicitWidth: 110
ColumnLayout {
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
spacing: 0
CustomText {
Layout.alignment: Qt.AlignHCenter
Layout.bottomMargin: -(font.pointSize * 0.4)
color: Colors.palette.m3secondary
font.family: "Rubik"
font.pointSize: 18
font.weight: 600
text: Time.hourStr
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3primary
font.family: "Rubik"
font.pointSize: 18 * 0.9
text: "•••"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: -(font.pointSize * 0.4)
color: Colors.palette.m3secondary
font.family: "Rubik"
font.pointSize: 18
font.weight: 600
text: Time.minuteStr
}
}
}
+2 -5
View File
@@ -23,8 +23,7 @@ Row {
MaterialIcon {
anchors.centerIn: parent
fill: 1
font.pointSize: Math.floor(info.implicitHeight / 2) || 1
grade: 200
fontStyle: Tokens.font.icon.large
text: "person"
}
@@ -65,7 +64,6 @@ Row {
anchors.leftMargin: icon.anchors.leftMargin
anchors.verticalCenter: icon.verticalCenter
elide: Text.ElideRight
font.pointSize: 13
text: `: ${SystemInfo.osPrettyName || SystemInfo.osName}`
width: Config.dashboard.sizes.infoWidth
}
@@ -103,7 +101,7 @@ Row {
anchors.leftMargin: (Config.dashboard.sizes.infoIconSize - implicitWidth) / 2
color: line.colour
fill: 1
font.pointSize: 13
fontStyle: Tokens.font.icon.small
text: line.icon
}
@@ -114,7 +112,6 @@ Row {
anchors.leftMargin: icon.anchors.leftMargin
anchors.verticalCenter: icon.verticalCenter
elide: Text.ElideNone
font.pointSize: 13
text: `: ${line.text}`
width: Config.dashboard.sizes.infoWidth
}
+2 -3
View File
@@ -19,7 +19,7 @@ Item {
anchors.verticalCenter: parent.verticalCenter
animate: true
color: Colors.palette.m3secondary
font.pointSize: 54
fontStyle: Tokens.font.icon.extraLarge
text: Weather.icon
}
@@ -35,8 +35,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
animate: true
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.extraLarge
font.weight: 500
font: Tokens.font.body.large
text: Weather.temp
}
+3 -3
View File
@@ -108,7 +108,7 @@ Item {
anchors.centerIn: parent
text: "queue_music"
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
color: Colors.palette.m3onPrimaryContainer
}
}
@@ -116,13 +116,13 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("Nothing playing")
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
}
CustomText {
text: qsTr("Play something for it to show up here!")
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
}
}
}
+9 -9
View File
@@ -38,7 +38,7 @@ ColumnLayout {
CustomText {
Layout.fillWidth: true
text: Players.active?.trackTitle ?? ""
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.large
elide: Text.ElideRight
animate: true
}
@@ -47,7 +47,7 @@ ColumnLayout {
Layout.fillWidth: true
text: Players.active?.trackArtist || qsTr("Unknown artist")
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.title.medium
elide: Text.ElideRight
animate: true
}
@@ -56,7 +56,7 @@ ColumnLayout {
Layout.fillWidth: true
text: Players.active?.trackAlbum || qsTr("Unknown album")
color: Colors.palette.m3secondary
font.pointSize: Tokens.font.size.normal
font: Tokens.font.title.medium
elide: Text.ElideRight
animate: true
}
@@ -70,7 +70,7 @@ ColumnLayout {
id: timeMetrics
text: Players.active ? root.lengthStr(Math.max(Players.active.position, root.hasUnknownLength ? 0 : Players.active.length)).replace(/[1-9]/g, "0") : "00:00"
font.pointSize: Tokens.font.size.normal
font: Tokens.font.label.medium
}
CustomText {
@@ -128,7 +128,7 @@ ColumnLayout {
isRound: true
shapeMorph: true
checked: Players.active?.shuffle ?? false
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.builders.medium.weight(Font.Medium).build()
enabled: Players.active?.shuffleSupported
onClicked: Players.active.shuffle = !Players.active?.shuffle
implicitWidth: Math.round(implicitHeight * 0.9)
@@ -141,7 +141,7 @@ ColumnLayout {
icon: "skip_previous"
isRound: true
shapeMorph: true
font.pointSize: Tokens.font.size.extraLarge
font: Tokens.font.icon.large
enabled: Players.active?.canGoPrevious
onClicked: Players.active?.previous()
}
@@ -154,7 +154,7 @@ ColumnLayout {
shapeMorph: true
fillWidth: true
checked: Players.active?.isPlaying ?? false
font.pointSize: Tokens.font.size.extraLarge
font: Tokens.font.icon.large
enabled: Players.active?.canTogglePlaying
onClicked: Players.active?.togglePlaying()
}
@@ -166,7 +166,7 @@ ColumnLayout {
icon: "skip_next"
isRound: true
shapeMorph: true
font.pointSize: Tokens.font.size.extraLarge
font: Tokens.font.icon.large
enabled: Players.active?.canGoNext
onClicked: Players.active?.next()
}
@@ -177,7 +177,7 @@ ColumnLayout {
isRound: true
shapeMorph: true
checked: Players.active?.loopState === MprisLoopState.Track || Players.active?.loopState === MprisLoopState.Playlist
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.builders.medium.weight(Font.Medium).build()
enabled: Players.active?.loopSupported
onClicked: {
const state = Players.active.loopState;
+4 -4
View File
@@ -179,7 +179,7 @@ Item {
CustomText {
text: qsTr("Loading lyrics...")
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.normal
}
}
@@ -204,14 +204,14 @@ Item {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
text: "sentiment_sad"
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
color: Colors.palette.m3outline
}
CustomText {
text: qsTr("No lyrics found")
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
}
}
}
@@ -258,7 +258,7 @@ Item {
text: modelData || ". . ."
color: ListView.isCurrentItem ? Colors.palette.m3primary : mouse.containsMouse ? Colors.palette.m3onSurface : Colors.palette.m3outline
font.pointSize: Tokens.font.size.medium
font: Tokens.font.body.medium
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
layer.enabled: effectScale > 0
@@ -23,13 +23,13 @@ Item {
MaterialIcon {
Layout.topMargin: Math.round(fontInfo.pointSize * 0.12)
text: "lyrics"
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
}
CustomText {
Layout.fillWidth: true
text: qsTr("Lyrics")
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
}
LyricsInfo {}
+2 -2
View File
@@ -184,7 +184,7 @@ Item {
text: Lyrics.loading ? qsTr("Loading...") : qsTr("No lyrics found")
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
animate: true
}
}
@@ -206,7 +206,7 @@ Item {
anchors.centerIn: parent
text: "more_vert"
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
}
}
}
+1 -1
View File
@@ -162,7 +162,7 @@ Item {
text: tab.iconName
color: tab.current ? Colors.palette.m3primary : Colors.palette.m3onSurfaceVariant
fill: tab.current ? 1 : 0
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
Behavior on fill {
Anim {
+2 -2
View File
@@ -48,7 +48,7 @@ RowLayout {
MaterialIcon {
text: "device_thermostat"
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
color: Colors.palette.m3secondary
}
@@ -99,7 +99,7 @@ RowLayout {
MaterialIcon {
text: "water_drop"
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
color: Colors.palette.m3tertiary
}
+15 -14
View File
@@ -31,13 +31,13 @@ Item {
CustomText {
text: Weather.city || qsTr("Loading...")
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.builders.large.size(24).weight(Font.DemiBold).build()
color: Colors.palette.m3onSurface
}
CustomText {
text: new Date().toLocaleDateString(Qt.locale("en_US"), "dddd, MMMM d")
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
color: Colors.palette.m3onSurfaceVariant
}
}
@@ -114,7 +114,7 @@ Item {
Layout.leftMargin: Tokens.padding.medium
visible: forecastRepeater.count > 0
text: qsTr("7-day forecast")
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.builders.medium.weight(Font.DemiBold).build()
color: Colors.palette.m3onSurface
}
@@ -148,7 +148,7 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
text: forecastItem.index === 0 ? qsTr("Today", "forecast column") : new Date(forecastItem.modelData.date).toLocaleDateString(Qt.locale("en_US"), "ddd")
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.builders.medium.weight(Font.DemiBold).build()
color: Colors.palette.m3primary
}
@@ -156,7 +156,7 @@ Item {
Layout.topMargin: -Tokens.spacing.extraSmall
Layout.alignment: Qt.AlignHCenter
text: new Date(forecastItem.modelData.date).toLocaleDateString(Qt.locale("en_US"), "MMM d")
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
opacity: 0.7
color: Colors.palette.m3onSurfaceVariant
}
@@ -164,7 +164,7 @@ Item {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
text: forecastItem.modelData.icon
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
color: Colors.palette.m3secondary
}
@@ -175,7 +175,7 @@ Item {
const max = Weather.formatTemp(forecastItem.modelData.maxTempC, true);
return qsTr("%1 / %2", "min/max temperature").arg(min).arg(max);
}
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.builders.small.weight(Font.DemiBold).build()
color: Colors.palette.m3tertiary
}
}
@@ -204,7 +204,7 @@ Item {
MaterialIcon {
text: detailRoot.icon
color: detailRoot.colour
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
anchors.verticalCenter: parent.verticalCenter
}
@@ -214,20 +214,20 @@ Item {
CustomText {
text: detailRoot.label
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
opacity: 0.7
horizontalAlignment: Text.AlignLeft
}
CustomText {
text: detailRoot.value
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.builders.small.weight(Font.DemiBold).build()
horizontalAlignment: Text.AlignLeft
}
}
}
}
component WeatherStat: Row {
component WeatherStat: RowLayout {
id: weatherStat
property string icon
@@ -239,19 +239,20 @@ Item {
MaterialIcon {
text: weatherStat.icon
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
color: weatherStat.colour
}
Column {
Layout.alignment: Qt.AlignVCenter
CustomText {
text: weatherStat.label
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
color: Colors.palette.m3onSurfaceVariant
}
CustomText {
text: weatherStat.value
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.builders.small.weight(Font.DemiBold).build()
color: Colors.palette.m3onSurface
}
}
+161 -141
View File
@@ -11,175 +11,195 @@ import qs.Services
import qs.Services
Item {
id: root
id: root
anchors.fill: parent
z: 998
visible: false
anchors.fill: parent
z: 998
visible: false
property real menuX: 0
property real menuY: 0
property real menuX: 0
property real menuY: 0
MouseArea {
anchors.fill: parent
onClicked: root.close()
}
MouseArea {
anchors.fill: parent
onClicked: root.close()
}
CustomClippingRect {
id: popupBackground
readonly property real padding: 4
CustomClippingRect {
id: popupBackground
readonly property real padding: 4
x: root.menuX
y: root.menuY
x: root.menuX
y: root.menuY
color: Colors.tPalette.m3surface
radius: Tokens.rounding.medium
color: Colors.tPalette.m3surface
radius: Tokens.rounding.medium
implicitWidth: menuLayout.implicitWidth + padding * 2
implicitHeight: menuLayout.implicitHeight + padding * 2
implicitWidth: menuLayout.implicitWidth + padding * 2
implicitHeight: menuLayout.implicitHeight + padding * 2
Behavior on opacity { Anim {} }
opacity: root.visible ? 1 : 0
Behavior on opacity {
Anim {}
}
opacity: root.visible ? 1 : 0
ColumnLayout {
id: menuLayout
anchors.centerIn: parent
spacing: 0
ColumnLayout {
id: menuLayout
anchors.centerIn: parent
spacing: 0
CustomRect {
Layout.preferredWidth: 200
radius: popupBackground.radius - popupBackground.padding
implicitHeight: openTerminalRow.implicitHeight + Tokens.padding.extraSmall * 2
CustomRect {
Layout.preferredWidth: 200
radius: popupBackground.radius - popupBackground.padding
implicitHeight: openTerminalRow.implicitHeight + Tokens.padding.extraSmall * 2
RowLayout {
id: openTerminalRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
RowLayout {
id: openTerminalRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
MaterialIcon { text: "terminal"; font.pointSize: 20 }
CustomText { text: "Open terminal"; Layout.fillWidth: true }
}
MaterialIcon {
text: "terminal"
fontStyle: Tokens.font.icon.medium
}
CustomText {
text: "Open terminal"
Layout.fillWidth: true
}
}
StateLayer {
anchors.fill: parent
StateLayer {
anchors.fill: parent
onClicked: {
Quickshell.execDetached([Config.general.apps.terminal, "--working-directory", FileUtils.trimFileProtocol(Paths.desktop)])
root.close()
}
}
}
onClicked: {
Quickshell.execDetached([Config.general.apps.terminal, "--working-directory", FileUtils.trimFileProtocol(Paths.desktop)]);
root.close();
}
}
}
CustomRect {
Layout.fillWidth: true
implicitHeight: 1
color: Colors.palette.m3outlineVariant
Layout.topMargin: 4
Layout.bottomMargin: 4
}
CustomRect {
Layout.fillWidth: true
implicitHeight: 1
color: Colors.palette.m3outlineVariant
Layout.topMargin: 4
Layout.bottomMargin: 4
}
CustomRect {
Layout.fillWidth: true
radius: popupBackground.radius - popupBackground.padding
implicitHeight: settingsRow.implicitHeight + Tokens.padding.extraSmall * 2
CustomRect {
Layout.fillWidth: true
radius: popupBackground.radius - popupBackground.padding
implicitHeight: settingsRow.implicitHeight + Tokens.padding.extraSmall * 2
RowLayout {
id: settingsRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
RowLayout {
id: settingsRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
MaterialIcon { text: "settings"; font.pointSize: 20 }
CustomText { text: "ZShell settings"; Layout.fillWidth: true }
}
MaterialIcon {
text: "settings"
fontStyle: Tokens.font.icon.medium
}
CustomText {
text: "ZShell settings"
Layout.fillWidth: true
}
}
StateLayer {
anchors.fill: parent
StateLayer {
anchors.fill: parent
onClicked: {
const state = ShellState.forActive();
onClicked: {
const state = ShellState.forActive();
state.settings = true;
root.close()
}
}
}
root.close();
}
}
}
CustomRect {
Layout.fillWidth: true
implicitHeight: 1
color: Colors.palette.m3outlineVariant
Layout.topMargin: 4
Layout.bottomMargin: 4
}
CustomRect {
Layout.fillWidth: true
implicitHeight: 1
color: Colors.palette.m3outlineVariant
Layout.topMargin: 4
Layout.bottomMargin: 4
}
CustomRect {
Layout.fillWidth: true
radius: popupBackground.radius - popupBackground.padding
implicitHeight: logoutRow.implicitHeight + Tokens.padding.extraSmall * 2
CustomRect {
Layout.fillWidth: true
radius: popupBackground.radius - popupBackground.padding
implicitHeight: logoutRow.implicitHeight + Tokens.padding.extraSmall * 2
RowLayout {
id: logoutRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
RowLayout {
id: logoutRow
spacing: 8
anchors.fill: parent
anchors.leftMargin: Tokens.padding.small
MaterialIcon { text: "logout"; font.pointSize: 20 }
CustomText { text: "Logout"; Layout.fillWidth: true }
}
MaterialIcon {
text: "logout"
fontStyle: Tokens.font.icon.medium
}
CustomText {
text: "Logout"
Layout.fillWidth: true
}
}
StateLayer {
anchors.fill: parent
StateLayer {
anchors.fill: parent
onClicked: {
Hyprland.dispatch("global quickshell:sessionOpen")
root.close()
}
}
}
onClicked: {
Hyprland.dispatch("global quickshell:sessionOpen");
root.close();
}
}
}
// CustomRect {
// Layout.fillWidth: true
// implicitHeight: 1
// color: Colors.palette.m3outlineVariant
// Layout.topMargin: 4
// Layout.bottomMargin: 4
// }
//
// CustomRect {
// Layout.fillWidth: true
// radius: popupBackground.radius - popupBackground.padding
// implicitHeight: desktopIconsRow.implicitHeight + Tokens.padding.extraSmall * 2
//
// RowLayout {
// id: desktopIconsRow
// spacing: 8
// anchors.fill: parent
// anchors.leftMargin: Tokens.padding.small
//
// MaterialIcon { text: Config.options.background.showDesktopIcons ? "visibility_off" : "visibility"; font.pointSize: 20 }
// CustomText { text: Config.options.background.showDesktopIcons ? "Hide icons" : "Show icons"; Layout.fillWidth: true }
// }
//
// StateLayer {
// anchors.fill: parent
//
// onClicked: {
// Config.options.background.showDesktopIcons = !Config.options.background.showDesktopIcons
// root.close()
// }
// }
// }
}
}
// CustomRect {
// Layout.fillWidth: true
// implicitHeight: 1
// color: Colors.palette.m3outlineVariant
// Layout.topMargin: 4
// Layout.bottomMargin: 4
// }
//
// CustomRect {
// Layout.fillWidth: true
// radius: popupBackground.radius - popupBackground.padding
// implicitHeight: desktopIconsRow.implicitHeight + Tokens.padding.extraSmall * 2
//
// RowLayout {
// id: desktopIconsRow
// spacing: 8
// anchors.fill: parent
// anchors.leftMargin: Tokens.padding.small
//
// MaterialIcon { text: Config.options.background.showDesktopIcons ? "visibility_off" : "visibility"; font.pointSize: 20 }
// CustomText { text: Config.options.background.showDesktopIcons ? "Hide icons" : "Show icons"; Layout.fillWidth: true }
// }
//
// StateLayer {
// anchors.fill: parent
//
// onClicked: {
// Config.options.background.showDesktopIcons = !Config.options.background.showDesktopIcons
// root.close()
// }
// }
// }
}
}
function openAt(mouseX, mouseY, parentW, parentH) {
menuX = Math.floor(Math.min(mouseX, parentW - popupBackground.implicitWidth))
menuY = Math.floor(Math.min(mouseY, parentH - popupBackground.implicitHeight))
visible = true
}
function openAt(mouseX, mouseY, parentW, parentH) {
menuX = Math.floor(Math.min(mouseX, parentW - popupBackground.implicitWidth));
menuY = Math.floor(Math.min(mouseY, parentH - popupBackground.implicitHeight));
visible = true;
}
function close() {
visible = false
}
function close() {
visible = false;
}
}
@@ -54,8 +54,7 @@ Item {
y: contextMenu.menuY
Behavior on opacity {
Anim {
}
Anim {}
}
ColumnLayout {
@@ -77,7 +76,7 @@ Item {
spacing: 8
MaterialIcon {
font.pointSize: 20
fontStyle: Tokens.font.icon.medium
text: "open_in_new"
}
@@ -120,7 +119,7 @@ Item {
spacing: 8
MaterialIcon {
font.pointSize: 20
fontStyle: Tokens.font.icon.medium
text: contextMenu.targetIsDir ? "terminal" : "apps"
}
@@ -165,7 +164,7 @@ Item {
spacing: 8
MaterialIcon {
font.pointSize: 20
fontStyle: Tokens.font.icon.medium
text: "content_copy"
}
@@ -199,7 +198,7 @@ Item {
spacing: 8
MaterialIcon {
font.pointSize: 20
fontStyle: Tokens.font.icon.medium
text: "edit"
}
@@ -241,7 +240,7 @@ Item {
MaterialIcon {
color: deleteButton.hovered ? Colors.palette.m3onError : Colors.palette.m3error
font.pointSize: 20
fontStyle: Tokens.font.icon.medium
text: "delete"
}
+1 -3
View File
@@ -145,7 +145,6 @@ Item {
IconTextButton {
fillWidth: true
font.pointSize: Tokens.font.size.normal
icon: "close"
inactiveColor: Colors.palette.m3error
inactiveOnColor: Colors.palette.m3onError
@@ -158,7 +157,6 @@ Item {
IconTextButton {
fillWidth: true
font.pointSize: Tokens.font.size.normal
icon: "ink_eraser"
inactiveColor: Colors.layer(Colors.palette.m3surfaceContainerHighest, 2)
inactiveOnColor: Colors.palette.m3onSurfaceVariant
@@ -193,7 +191,7 @@ Item {
required property ButtonRow row
fillWidth: false
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
icon: ""
implicitHeight: buttonSize
implicitWidth: buttonSize
+3 -5
View File
@@ -74,11 +74,10 @@ Item {
opacity: root.expanded ? 0 : 1
Behavior on opacity {
Anim {
}
Anim {}
}
sourceComponent: MaterialIcon {
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.medium
text: "arrow_forward_ios"
}
}
@@ -93,8 +92,7 @@ Item {
opacity: root.expanded ? 1 : 0
Behavior on opacity {
Anim {
}
Anim {}
}
sourceComponent: Content {
drawing: root.drawing
+6 -10
View File
@@ -53,8 +53,7 @@ Item {
to: 0
}
PropertyAction {
}
PropertyAction {}
Anim {
duration: Tokens.anim.durations.small
@@ -130,18 +129,16 @@ Item {
spacing: Tokens.spacing.medium
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
MaterialIcon {
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
text: root.state === "wallpapers" ? "wallpaper_slideshow" : "manage_search"
}
@@ -150,14 +147,13 @@ Item {
CustomText {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.larger
font.weight: 500
font: Tokens.font.body.builders.large.weight(Font.Medium).build()
text: root.state === "wallpapers" ? qsTr("No wallpapers found") : qsTr("No results")
}
CustomText {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: root.state === "wallpapers" && Wallpapers.list.length === 0 ? qsTr("Try putting some wallpapers in %1").arg(Paths.shortenHome(Paths.wallsdir)) : qsTr("Try searching for something else")
}
}
+2 -3
View File
@@ -33,7 +33,7 @@ Item {
id: icon
anchors.verticalCenter: parent.verticalCenter
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.large
text: root.modelData?.icon ?? ""
}
@@ -47,7 +47,6 @@ Item {
CustomText {
id: name
font.pointSize: Tokens.font.size.normal
text: root.modelData?.name ?? ""
}
@@ -57,7 +56,7 @@ Item {
anchors.top: name.bottom
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.modelData?.desc ?? ""
width: root.width - icon.width - Tokens.rounding.medium * 2
}
+1 -2
View File
@@ -51,7 +51,6 @@ Item {
CustomText {
id: name
font.pointSize: Tokens.font.size.normal
text: root.modelData?.name ?? ""
}
@@ -61,7 +60,7 @@ Item {
anchors.top: name.bottom
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: (root.modelData?.comment || root.modelData?.genericName || root.modelData?.name) ?? ""
width: root.width - icon.width - Tokens.rounding.medium - Tokens.padding.medium * 2
}
+3 -3
View File
@@ -40,7 +40,7 @@ Item {
MaterialIcon {
Layout.alignment: Qt.AlignVCenter
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.large
text: "function"
}
@@ -92,7 +92,7 @@ Item {
anchors.rightMargin: Tokens.spacing.small
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onTertiary
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
opacity: stateLayer.containsMouse ? 1 : 0
text: qsTr("Open in calculator")
@@ -109,7 +109,7 @@ Item {
anchors.rightMargin: Tokens.padding.small
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onTertiary
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
text: "open_in_new"
}
}
+2 -2
View File
@@ -120,7 +120,7 @@ Item {
CustomText {
id: name
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: root.modelData?.name ?? ""
elide: Text.ElideRight
width: root.width - icon.width - openLocation.implicitWidth - openLocation.anchors.rightMargin - Tokens.spacing.medium - Tokens.rounding.medium * 2
@@ -132,7 +132,7 @@ Item {
anchors.top: name.bottom
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.modelData?.path ?? ""
width: root.width - icon.width - openLocation.implicitWidth - openLocation.anchors.rightMargin - Tokens.spacing.medium - Tokens.rounding.medium * 2
}
+3 -4
View File
@@ -32,7 +32,7 @@ Item {
id: icon
anchors.verticalCenter: parent.verticalCenter
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.large
text: root.modelData?.icon ?? ""
}
@@ -44,7 +44,6 @@ Item {
width: parent.width - icon.width - anchors.leftMargin - (current.active ? current.width + Tokens.spacing.medium : 0)
CustomText {
font.pointSize: Tokens.font.size.normal
text: root.modelData?.name ?? ""
}
@@ -53,7 +52,7 @@ Item {
anchors.right: parent.right
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.modelData?.description ?? ""
}
}
@@ -67,7 +66,7 @@ Item {
sourceComponent: MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: "check"
}
}
+1 -2
View File
@@ -32,8 +32,7 @@ Item {
MaterialIcon {
anchors.centerIn: parent
color: Colors.tPalette.m3outline
font.pointSize: Tokens.font.size.extraLarge * 2
font.weight: 600
fontStyle: Tokens.font.icon.builders.extraLarge.scale(2).weight(Font.DemiBold).build()
text: "image"
}
+12 -25
View File
@@ -28,27 +28,21 @@ ColumnLayout {
CustomText {
Layout.alignment: Qt.AlignVCenter
color: Colors.palette.m3secondary
font.bold: true
font.family: Config.appearance.font.family.clock
font.pointSize: Math.floor(Tokens.font.size.extraLarge * 3 * root.centerScale)
font: Tokens.font.headline.builders.large.scale(3 * root.centerScale).weight(Font.Bold).width(30).build()
text: Time.hourStr
}
CustomText {
Layout.alignment: Qt.AlignVCenter
color: Colors.palette.m3primary
font.bold: true
font.family: Config.appearance.font.family.clock
font.pointSize: Math.floor(Tokens.font.size.extraLarge * 3 * root.centerScale)
font: Tokens.font.headline.builders.large.scale(3 * root.centerScale).weight(Font.Bold).width(30).build()
text: ":"
}
CustomText {
Layout.alignment: Qt.AlignVCenter
color: Colors.palette.m3secondary
font.bold: true
font.family: Config.appearance.font.family.clock
font.pointSize: Math.floor(Tokens.font.size.extraLarge * 3 * root.centerScale)
font: Tokens.font.headline.builders.large.scale(3 * root.centerScale).weight(Font.Bold).width(30).build()
text: Time.minuteStr
}
}
@@ -57,9 +51,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: -Tokens.padding.large * 2
color: Colors.palette.m3tertiary
font.bold: true
font.family: Config.appearance.font.family.mono
font.pointSize: Math.floor(Tokens.font.size.extraLarge * root.centerScale)
font: Tokens.font.title.builders.medium.weight(Font.DemiBold).build()
text: Time.format("dddd, d MMMM yyyy")
}
@@ -74,7 +66,7 @@ ColumnLayout {
MaterialIcon {
anchors.centerIn: parent
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Math.floor(root.centerWidth / 4)
fontStyle: Tokens.font.icon.size(root.centerWidth / 4).build()
text: "person"
}
@@ -144,8 +136,7 @@ ColumnLayout {
}
Behavior on opacity {
Anim {
}
Anim {}
}
}
@@ -159,6 +150,7 @@ ColumnLayout {
id: inputField
pam: root.lock.pam
centerScale: root.centerScale
}
CustomRect {
@@ -180,7 +172,6 @@ ColumnLayout {
anchors.centerIn: parent
color: root.lock.pam.buffer ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
font.weight: 500
text: "arrow_forward"
}
}
@@ -193,8 +184,7 @@ ColumnLayout {
implicitHeight: Math.max(message.implicitHeight, stateMessage.implicitHeight)
Behavior on implicitHeight {
Anim {
}
Anim {}
}
CustomText {
@@ -226,7 +216,7 @@ ColumnLayout {
anchors.right: parent.right
animateProp: "opacity"
color: Colors.palette.m3onSurfaceVariant
font.family: Config.appearance.font.family.mono
font: Tokens.font.body.small
horizontalAlignment: Qt.AlignHCenter
lineHeight: 1.2
opacity: shouldBeVisible && !message.msg ? 1 : 0
@@ -234,12 +224,10 @@ ColumnLayout {
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
onMsgChanged: {
@@ -295,8 +283,7 @@ ColumnLayout {
anchors.left: parent.left
anchors.right: parent.right
color: Colors.palette.m3error
font.family: Config.appearance.font.family.mono
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
horizontalAlignment: Qt.AlignHCenter
opacity: 0
scale: 0.7
+6 -9
View File
@@ -14,6 +14,7 @@ Item {
property string buffer
required property Pam pam
required property real centerScale
readonly property alias placeholder: placeholder
Layout.fillHeight: true
@@ -41,8 +42,7 @@ Item {
anchors.centerIn: parent
animate: true
color: root.pam.passwd.active ? Colors.palette.m3secondary : Colors.palette.m3outline
font.family: Config.appearance.font.family.mono
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.builders.medium.scale(root.centerScale).width(110).build()
opacity: root.buffer ? 0 : 1
text: {
if (root.pam.passwd.active)
@@ -53,8 +53,7 @@ Item {
}
Behavior on opacity {
Anim {
}
Anim {}
}
}
@@ -84,12 +83,11 @@ Item {
implicitHeight: charList.implicitHeight
implicitWidth: implicitHeight
opacity: 0
radius: Tokens.rounding.small / 2
radius: Tokens.rounding.full
scale: 0
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
@@ -137,8 +135,7 @@ Item {
Behavior on implicitWidth {
id: imWidthBehavior
Anim {
}
Anim {}
}
model: ScriptModel {
values: root.buffer.split("")
+1 -2
View File
@@ -236,8 +236,7 @@ WlSessionLockSurface {
id: lockIcon
anchors.centerIn: parent
font.bold: true
font.pointSize: Tokens.font.size.extraLarge * 4
fontStyle: Tokens.font.icon.builders.extraLarge.scale(4).weight(Font.Bold).build()
text: "lock"
}
+1 -2
View File
@@ -57,7 +57,7 @@ CustomClippingRect {
animate: true
color: Colors.palette.m3primary
elide: Text.ElideRight
font.pointSize: Tokens.font.size.normal
font: Tokens.font.title.large
horizontalAlignment: Text.AlignHCenter
text: (Players.active?.trackTitle ?? qsTr("Nothing playing")) || qsTr("Unknown track")
}
@@ -67,7 +67,6 @@ CustomClippingRect {
animate: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
horizontalAlignment: Text.AlignHCenter
text: (Players.active?.trackArtist ?? qsTr("Try playing some music!")) || qsTr("Unknown artist")
}
+2 -5
View File
@@ -66,9 +66,7 @@ ColumnLayout {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3outlineVariant
font.family: Config.appearance.font.family.mono
font.pointSize: Tokens.font.size.large
font.weight: 500
font: Tokens.font.headline.builders.small.width(90).build()
text: qsTr("No Notifications")
}
}
@@ -94,8 +92,7 @@ ColumnLayout {
to: 1
}
}
delegate: NotifGroup {
}
delegate: NotifGroup {}
displaced: Transition {
Anim {
properties: "opacity,scale"
+8 -12
View File
@@ -80,7 +80,7 @@ CustomRect {
MaterialIcon {
color: root.urgency === "critical" ? Colors.palette.m3onError : root.urgency === "low" ? Colors.palette.m3onSurface : Colors.palette.m3onSecondaryContainer
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: Icons.getNotifIcon(root.notifs[0]?.summary, root.urgency)
}
}
@@ -133,14 +133,14 @@ CustomRect {
Layout.fillWidth: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.modelData
}
CustomText {
animate: true
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.notifs[0]?.timeStr ?? ""
}
@@ -153,12 +153,10 @@ CustomRect {
radius: Tokens.rounding.full
Behavior on Layout.preferredWidth {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
StateLayer {
@@ -181,7 +179,7 @@ CustomRect {
Layout.leftMargin: Tokens.padding.extraSmall / 2
animate: true
color: root.urgency === "critical" ? Colors.palette.m3onError : Colors.palette.m3onSurface
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: root.notifs.length
}
@@ -261,8 +259,7 @@ CustomRect {
opacity: root.expanded ? 1 : 0
Behavior on opacity {
Anim {
}
Anim {}
}
sourceComponent: ColumnLayout {
Repeater {
@@ -270,8 +267,7 @@ CustomRect {
values: root.notifs.slice(Config.notifs.groupPreviewNum)
}
NotifLine {
}
NotifLine {}
}
}
}
+2 -3
View File
@@ -70,14 +70,13 @@ CustomRect {
implicitSize: width
Behavior on clampedVal {
Anim {
}
Anim {}
}
MaterialIcon {
anchors.centerIn: parent
color: res.fgColor
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
text: res.icon
}
}
+4 -4
View File
@@ -16,7 +16,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignHCenter
animate: true
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.large
text: Weather.description
}
@@ -29,7 +29,7 @@ ColumnLayout {
animate: true
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: Weather.temp
}
@@ -44,7 +44,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignHCenter
animate: true
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: qsTr("Feels like %1").arg(Weather.temp)
visible: root.rootHeight > 550
}
@@ -53,7 +53,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignHCenter
animate: true
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.normal
text: {
const today = Weather.forecast[0];
return qsTr("High %1 • Low %2").arg(Weather.formatTemp(today?.maxTempC)).arg(Weather.formatTemp(today?.minTempC));
+6 -7
View File
@@ -24,14 +24,14 @@ CustomRect {
MaterialIcon {
Layout.topMargin: Math.round(fontInfo.pointSize * 0.12)
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
text: "schedule"
}
CustomText {
id: title
font.pointSize: Tokens.font.size.normal
font: Tokens.font.title.medium
text: qsTr("Hourly forecast")
}
}
@@ -65,8 +65,7 @@ CustomRect {
shape: MaterialShape.Cookie4Sided
Behavior on color {
CAnim {
}
CAnim {}
}
CustomText {
@@ -74,7 +73,7 @@ CustomRect {
anchors.centerIn: parent
color: hour.index === Weather.currentHourIndex ? Colors.palette.m3onPrimary : Colors.palette.m3onSurface
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: Weather.formatTemp(hour.cond.tempC).slice(0, -1) // Remove C/F
}
}
@@ -82,7 +81,7 @@ CustomRect {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3secondary
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
text: hour.cond.icon
}
@@ -96,7 +95,7 @@ CustomRect {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: Tokens.spacing.extraSmall
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: hour.index === 0 ? qsTr("Now") : Qt.formatDateTime(new Date(hour.cond.timestamp.replace("T", " ")), Config.services.useTwelveHourClock ? "ha" : "hh:00")
}
}
+15 -16
View File
@@ -94,8 +94,7 @@ CustomRect {
implicitHeight: root.nonAnimHeight
Behavior on implicitHeight {
Anim {
}
Anim {}
}
Loader {
@@ -171,6 +170,7 @@ CustomRect {
sourceComponent: MaterialIcon {
color: root.modelData.urgency === NotificationUrgency.Critical ? Colors.palette.m3onError : root.modelData.urgency === NotificationUrgency.Low ? Colors.palette.m3onSurface : Colors.palette.m3onSecondaryContainer
text: Icons.getNotifIcon(root.modelData.summary, root.modelData.urgency)
fontStyle: Tokens.font.icon.medium
}
}
}
@@ -222,6 +222,7 @@ CustomRect {
maximumLineCount: 1
opacity: root.expanded ? 1 : 0
text: appNameMetrics.elidedText
font: Tokens.font.label.medium
Behavior on opacity {
Anim {
@@ -246,14 +247,12 @@ CustomRect {
anchors.leftMargin: Tokens.spacing.small
anchors.top: parent.top
animate: true
font.pointSize: Tokens.font.size.small
height: implicitHeight
maximumLineCount: 1
text: summaryMetrics.elidedText
Behavior on height {
Anim {
}
Anim {}
}
states: State {
name: "expanded"
@@ -281,8 +280,7 @@ CustomRect {
property: "topMargin"
}
AnchorAnim {
}
AnchorAnim {}
}
}
@@ -303,6 +301,7 @@ CustomRect {
anchors.top: parent.top
color: Colors.palette.m3onSurfaceVariant
text: "•"
font: Tokens.font.body.small
states: State {
name: "expanded"
@@ -314,8 +313,7 @@ CustomRect {
}
}
transitions: Transition {
AnchorAnim {
}
AnchorAnim {}
}
}
@@ -327,7 +325,7 @@ CustomRect {
anchors.top: parent.top
animate: true
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
horizontalAlignment: Text.AlignLeft
text: root.modelData.timeStr
}
@@ -355,14 +353,13 @@ CustomRect {
anchors.verticalCenterOffset: root.expanded ? -1 : 1
rotation: root.expanded ? 180 : 0
text: "expand_more"
fontStyle: Tokens.font.icon.medium
Behavior on anchors.verticalCenterOffset {
Anim {
}
Anim {}
}
Behavior on rotation {
Anim {
}
Anim {}
}
}
}
@@ -376,7 +373,7 @@ CustomRect {
anchors.top: summary.bottom
animate: true
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
opacity: root.expanded ? 0 : 1
text: bodyPreviewMetrics.elidedText
textFormat: Text.MarkdownText
@@ -407,6 +404,7 @@ CustomRect {
animate: true
color: Colors.palette.m3onSurfaceVariant
height: text ? implicitHeight : 0
font: Tokens.font.body.medium
opacity: root.expanded ? 1 : 0
text: root.modelData.body
textFormat: Text.MarkdownText
@@ -447,6 +445,7 @@ CustomRect {
enabled: root.expanded
fillWidth: root.modelData.actions.length === 0
icon: "close"
font: Tokens.font.icon.builders.small.size(14).build()
inactiveColor: root.modelData.urgency === NotificationUrgency.Critical ? Colors.palette.m3secondary : Colors.layer(Colors.palette.m3surfaceContainerHighest, 2)
inactiveOnColor: root.modelData.urgency === NotificationUrgency.Critical ? Colors.palette.m3onSecondary : Colors.palette.m3onSurfaceVariant
isRound: true
@@ -464,7 +463,6 @@ CustomRect {
enabled: root.expanded
fillWidth: true
font.pointSize: Tokens.font.size.small
implicitWidth: label.implicitWidth
inactiveColor: root.modelData.urgency === NotificationUrgency.Critical ? Colors.palette.m3secondary : Colors.layer(Colors.palette.m3surfaceContainerHighest, 2)
inactiveOnColor: root.modelData.urgency === NotificationUrgency.Critical ? Colors.palette.m3onSecondary : Colors.palette.m3onSurfaceVariant
@@ -493,6 +491,7 @@ CustomRect {
label.animate: true
padding: Tokens.padding.extraSmall
shapeMorph: true
font: Tokens.font.icon.builders.small.size(14).build()
onClicked: {
Quickshell.clipboardText = root.modelData.body;
+10 -22
View File
@@ -37,19 +37,15 @@ Item {
anchors.leftMargin: root.notifCount > 0 ? 0 : -width - titleText.anchors.leftMargin
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3outline
font.family: "CaskaydiaCove NF"
font.pointSize: 13
font.weight: 500
font: Tokens.font.label.large
opacity: root.notifCount > 0 ? 1 : 0
text: root.notifCount
Behavior on anchors.leftMargin {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
}
@@ -62,9 +58,7 @@ Item {
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3outline
elide: Text.ElideRight
font.family: "CaskaydiaCove NF"
font.pointSize: 13
font.weight: 500
font: Tokens.font.label.large
text: root.notifCount > 0 ? qsTr("notification%1").arg(root.notifCount === 1 ? "" : "s") : qsTr("Notifications")
}
}
@@ -86,8 +80,7 @@ Item {
opacity: root.notifCount > 0 ? 0 : 1
Behavior on opacity {
Anim {
}
Anim {}
}
sourceComponent: ColumnLayout {
spacing: 20
@@ -95,9 +88,7 @@ Item {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3outlineVariant
font.family: "CaskaydiaCove NF"
font.pointSize: 18
font.weight: 500
font: Tokens.font.headline.builders.small.width(90).build()
text: qsTr("No Notifications")
}
}
@@ -160,20 +151,17 @@ Item {
scale: root.notifCount > 0 ? 1 : 0.5
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
sourceComponent: IconButton {
id: clearBtn
font.pointSize: Math.round(18 * 1.2)
font: Tokens.font.icon.large
icon: "clear_all"
padding: 8
radius: Tokens.rounding.full
isRound: true
onClicked: clearTimer.start()
@@ -13,7 +13,6 @@ CustomRect {
required property ScreenState screenState
Layout.fillWidth: true
color: Colors.tPalette.m3surfaceContainer
implicitHeight: layout.implicitHeight + layout.anchors.margins * 2
@@ -46,7 +45,7 @@ CustomRect {
anchors.horizontalCenterOffset: -0.5
anchors.verticalCenterOffset: 1.5
color: Recorder.running ? Colors.palette.m3onSecondary : Colors.palette.m3onSecondaryContainer
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: "screen_record"
}
}
@@ -58,7 +57,7 @@ CustomRect {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: qsTr("Screen Recorder")
}
@@ -66,7 +65,7 @@ CustomRect {
Layout.fillWidth: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: Recorder.paused ? qsTr("Recording paused") : Recorder.running ? qsTr("Recording running") : qsTr("Recording off")
}
}
@@ -126,8 +125,7 @@ CustomRect {
enabled: false
Anim {
}
Anim {}
}
Behavior on running {
SequentialAnimation {
@@ -155,8 +153,7 @@ CustomRect {
value: true
}
PropertyAction {
}
PropertyAction {}
PropertyAction {
property: "enabled"
@@ -207,8 +204,7 @@ CustomRect {
radius: Tokens.rounding.full
Behavior on implicitWidth {
Anim {
}
Anim {}
}
SequentialAnimation on opacity {
alwaysRunToEnd: true
@@ -236,13 +232,13 @@ CustomRect {
anchors.centerIn: parent
animate: true
color: Recorder.paused ? Colors.palette.m3onTertiary : Colors.palette.m3onError
font.family: Config.appearance.font.family.mono
font: Tokens.font.mono.small
text: Recorder.paused ? "PAUSED" : "REC"
}
}
CustomText {
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: {
const elapsed = Recorder.elapsed;
@@ -266,8 +262,9 @@ CustomRect {
IconButton {
checked: Recorder.paused
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: Recorder.paused ? "play_arrow" : "pause"
isRound: true
isToggle: true
label.animate: true
type: IconButton.Tonal
@@ -279,8 +276,9 @@ CustomRect {
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "stop"
isRound: true
inactiveColor: Colors.palette.m3error
inactiveOnColor: Colors.palette.m3onError
@@ -29,14 +29,14 @@ ColumnLayout {
MaterialIcon {
Layout.alignment: Qt.AlignVCenter
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: "list"
}
CustomText {
Layout.alignment: Qt.AlignVCenter
Layout.fillWidth: true
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: qsTr("Recordings")
}
@@ -177,7 +177,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignHCenter
Layout.preferredHeight: root.screenState.recordingListExpanded ? implicitHeight : 0
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
opacity: root.screenState.recordingListExpanded ? 1 : 0
scale: root.screenState.recordingListExpanded ? 1 : 0
text: "scan_delete"
@@ -53,7 +53,7 @@ CustomRect {
spacing: Tokens.spacing.medium
CustomText {
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: qsTr("Quick Toggles")
}
@@ -15,8 +15,7 @@ CustomRect {
radius: Tokens.rounding.small
Behavior on implicitHeight {
Anim {
}
Anim {}
}
RowLayout {
@@ -39,7 +38,7 @@ CustomRect {
anchors.centerIn: parent
color: IdleInhibitor.enabled ? Colors.palette.m3onSecondary : Colors.palette.m3onSecondaryContainer
font.pointSize: 18
fontStyle: Tokens.font.icon.large
text: "coffee"
}
}
@@ -51,7 +50,7 @@ CustomRect {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: 13
font: Tokens.font.body.medium
text: qsTr("Keep Awake")
}
@@ -59,7 +58,7 @@ CustomRect {
Layout.fillWidth: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: 11
font: Tokens.font.body.small
text: IdleInhibitor.enabled ? qsTr("Preventing sleep mode") : qsTr("Normal power management")
}
}
@@ -83,16 +82,13 @@ CustomRect {
scale: IdleInhibitor.enabled ? 1 : 0.5
Behavior on anchors.bottomMargin {
Anim {
}
Anim {}
}
Behavior on opacity {
Anim {
}
Anim {}
}
Behavior on scale {
Anim {
}
Anim {}
}
sourceComponent: CustomRect {
color: Colors.palette.m3primary
@@ -105,7 +101,7 @@ CustomRect {
anchors.centerIn: parent
color: Colors.palette.m3onPrimary
font.pointSize: Math.round(11 * 0.9)
font: Tokens.font.body.builders.small.size(Math.round(Tokens.font.body.small.pointSize * 0.9)).build()
text: qsTr("Active since %1").arg(Qt.formatTime(IdleInhibitor.enabledSince, Config.services.useTwelveHourClock ? "hh:mm a" : "hh:mm"))
}
}
+5 -7
View File
@@ -112,7 +112,7 @@ Scope {
MaterialIcon {
anchors.fill: parent
font.pointSize: 64
fontStyle: Tokens.font.icon.size(64).build()
horizontalAlignment: Text.AlignHCenter
text: "security"
verticalAlignment: Text.AlignVCenter
@@ -129,8 +129,7 @@ Scope {
CustomText {
Layout.alignment: Qt.AlignLeft
Layout.preferredWidth: Math.min(600, contentWidth)
font.bold: true
font.pointSize: 16
font: Tokens.font.title.builders.medium.weight(Font.Bold).build()
text: polkitAgent.flow?.message ?? ""
wrapMode: Text.WordWrap
}
@@ -139,8 +138,7 @@ Scope {
Layout.alignment: Qt.AlignLeft
Layout.preferredWidth: Math.min(600, contentWidth)
color: Colors.tPalette.m3onSurfaceVariant
font.bold: true
font.pointSize: 12
font: Tokens.font.title.builders.small.weight(Font.Bold).build()
text: polkitAgent.flow?.supplementaryMessage || "No Additional Information"
wrapMode: Text.WordWrap
}
@@ -155,6 +153,7 @@ Scope {
placeholderText: polkitAgent.flow?.failed ? " Incorrect Password" : " Input Password"
placeholderTextColor: polkitAgent.flow?.failed ? Colors.palette.m3onError : Colors.tPalette.m3onSurfaceVariant
selectByMouse: true
font: Tokens.font.body.small
background: CustomRect {
color: (polkitAgent.flow?.failed && passInput.text === "") ? Colors.palette.m3error : Colors.tPalette.m3surfaceVariant
@@ -342,8 +341,7 @@ Scope {
visible: panelWindow.visible
Behavior on color {
CAnim {
}
CAnim {}
}
anchors {
+5 -8
View File
@@ -27,8 +27,7 @@ CustomClippingRect {
implicitWidth: parent.width * root.usage
Behavior on implicitWidth {
Anim {
}
Anim {}
}
}
@@ -45,8 +44,7 @@ CustomClippingRect {
value: root.usage
Behavior on clampedVal {
Anim {
}
Anim {}
}
MaterialIcon {
@@ -54,7 +52,7 @@ CustomClippingRect {
anchors.centerIn: parent
color: root.accent
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: root.icon
}
}
@@ -125,15 +123,14 @@ CustomClippingRect {
anchors.right: parent.right
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: qsTr("Usage")
}
CustomText {
anchors.right: parent.right
color: root.accent
font.pointSize: Tokens.font.size.extraLarge
font.weight: Font.Medium
font: Tokens.font.headline.builders.small.width(50).build()
text: isNaN(root.usage) ? "...%" : Math.round(root.usage * 100) + "%"
}
}
+2 -3
View File
@@ -51,8 +51,7 @@ CustomRect {
value: Memory.percentage
Behavior on clampedVal {
Anim {
}
Anim {}
}
ColumnLayout {
@@ -65,7 +64,7 @@ CustomRect {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: Math.round(Memory.percentage * 100) + "%"
}
+4 -6
View File
@@ -43,8 +43,7 @@ CustomRect {
value: root.percentage
Behavior on clampedVal {
Anim {
}
Anim {}
}
ColumnLayout {
@@ -56,14 +55,14 @@ CustomRect {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: "hard_drive"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: Math.round(root.percentage * 100) + "%"
}
@@ -112,8 +111,7 @@ CustomRect {
model: Storage.disks
DiskItem {
}
DiskItem {}
}
}
}
+2 -3
View File
@@ -53,8 +53,7 @@ CustomRect {
value: Gpu.memoryUsed / Gpu.memoryTotal
Behavior on clampedVal {
Anim {
}
Anim {}
}
ColumnLayout {
@@ -67,7 +66,7 @@ CustomRect {
CustomText {
Layout.alignment: Qt.AlignHCenter
color: root.accent
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: Math.round(circularIndicator.value * 100) + "%"
}
+4 -5
View File
@@ -60,12 +60,11 @@ ItemList {
anchors.centerIn: parent
color: device.active ? Colors.palette.m3onPrimary : Colors.palette.m3onSecondaryContainer
fill: device.active ? 1 : 0
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
text: root.iconName
Behavior on fill {
Anim {
}
Anim {}
}
}
}
@@ -73,13 +72,13 @@ ItemList {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
font: Tokens.font.body.small
text: device.modelData?.description || device.modelData?.name || qsTr("Unknown")
}
MaterialIcon {
color: Colors.palette.m3primary
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.medium
opacity: device.active ? 1 : 0
text: "check"
+3 -5
View File
@@ -35,8 +35,7 @@ Item {
smoothing: Tokens.rounding.largeIncreased
Behavior on color {
CAnim {
}
CAnim {}
}
}
@@ -49,8 +48,7 @@ Item {
radius: root.open ? Tokens.rounding.largeIncreased : Tokens.rounding.largeIncreased
Behavior on anchors.margins {
Anim {
}
Anim {}
}
Behavior on radius {
Anim {
@@ -122,7 +120,7 @@ Item {
anchors.centerIn: parent
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
text: "view_apps"
}
}
+1 -1
View File
@@ -185,7 +185,7 @@ Item {
spacing: 0
CustomText {
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.builders.large.weight(Font.Normal).build()
text: root.header
}
@@ -65,7 +65,6 @@ DialogRowButton {
anchors.verticalCenter: parent.verticalCenter
color: item.selected ? Colors.palette.m3onTertiaryContainer : Colors.palette.m3onSurface
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
text: root.labelFor(item.modelData)
}
@@ -76,7 +75,7 @@ DialogRowButton {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onTertiaryContainer
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
opacity: item.selected ? 1 : 0
text: "check"
+4 -4
View File
@@ -24,7 +24,7 @@ ConnectedRect {
MaterialIcon {
color: root.iconColor
font.pointSize: Tokens.font.size.small
fontStyle: Tokens.font.icon.small
text: root.icon
}
}
@@ -53,14 +53,14 @@ ConnectedRect {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
}
CustomText {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: root.subtext
visible: root.subtext
}
@@ -72,7 +72,7 @@ ConnectedRect {
Layout.maximumWidth: root.width / 2
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
horizontalAlignment: Text.AlignRight
}
}
+3 -4
View File
@@ -23,8 +23,7 @@ ConnectedRect {
implicitHeight: (showList && list.count > 0 ? list.contentHeight : placeholder.implicitHeight + Tokens.padding.extraLarge * 2) + extraHeight
Behavior on implicitHeight {
Anim {
}
Anim {}
}
Loader {
@@ -46,7 +45,7 @@ ConnectedRect {
Layout.alignment: Qt.AlignHCenter
animate: true
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.large
text: root.placeholderIcon
}
@@ -54,7 +53,7 @@ ConnectedRect {
Layout.alignment: Qt.AlignHCenter
animate: true
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: root.placeholderText
}
}
+5 -8
View File
@@ -54,14 +54,12 @@ ListView {
}
}
Behavior on implicitHeight {
Anim {
}
Anim {}
}
model: DelegateModel {
id: visualModel
delegate: ListRow {
}
delegate: ListRow {}
model: ScriptModel {
id: valuesModel
}
@@ -280,7 +278,7 @@ ListView {
id: dragIcon
color: Qt.alpha(Colors.palette.m3onSurfaceVariant, enabledSwitch.checked ? 1 : 0.5)
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
text: "drag_indicator"
}
@@ -290,7 +288,6 @@ ListView {
Layout.fillWidth: true
color: Qt.alpha(Colors.palette.m3onSurface, enabledSwitch.checked ? 1 : 0.5)
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
text: root.labelFor(item.modelData)
}
@@ -298,13 +295,13 @@ ListView {
id: enabledSwitch
checked: root.toggledFor(item.modelData)
font.pointSize: Tokens.font.size.normal
font: Tokens.font.icon.medium
onToggled: root.itemToggled(item.DelegateModel.itemsIndex, checked)
}
IconButton {
font.pointSize: Tokens.font.size.large
font: Tokens.font.icon.medium
icon: "delete"
inactiveOnColor: Colors.palette.m3error
isRound: true
+3 -66
View File
@@ -1,71 +1,8 @@
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import qs.Components
import ZShell.Config
import qs.Services
ConnectedRect {
id: root
property alias icon: icon.text
property alias status: status.text
property alias text: label.text
signal clicked
Layout.fillWidth: true
implicitHeight: navLayout.implicitHeight + navLayout.anchors.margins * 2
StateLayer {
onClicked: root.clicked()
}
RowLayout {
id: navLayout
anchors.fill: parent
anchors.leftMargin: Tokens.padding.largeIncreased
anchors.margins: Tokens.padding.small
anchors.rightMargin: Tokens.padding.largeIncreased
spacing: Tokens.spacing.medium
MaterialIcon {
id: icon
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.large
}
ColumnLayout {
Layout.fillWidth: true
spacing: 0
CustomText {
id: label
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
}
CustomText {
id: status
Layout.fillWidth: true
animate: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
visible: text
}
}
MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
text: "chevron_right"
}
}
RowButton {
trailingIcon: "chevron_right"
subLabel.animate: true
}
+2 -1
View File
@@ -134,6 +134,7 @@ ColumnLayout {
inactiveOnColor: Colors.palette.m3onSurfaceVariant
isRound: true
type: IconButton.Tonal
font: Tokens.font.icon.medium
onClicked: root.sState.closeSubPage()
}
@@ -142,7 +143,7 @@ ColumnLayout {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.large
text: root.title
}
}
+3 -3
View File
@@ -40,7 +40,7 @@ ConnectedRect {
id: icon
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.larger
fontStyle: Tokens.font.icon.medium
}
ColumnLayout {
@@ -52,7 +52,7 @@ ConnectedRect {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
}
CustomText {
@@ -62,7 +62,7 @@ ConnectedRect {
animate: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
visible: text
}
}
+3 -4
View File
@@ -51,7 +51,7 @@ ConnectedRect {
visible: root.icon !== ""
fill: 1
text: root.icon
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
}
Column {
@@ -66,7 +66,6 @@ ConnectedRect {
anchors.left: parent.left
anchors.right: parent.right
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
}
CustomText {
@@ -76,7 +75,7 @@ ConnectedRect {
anchors.right: parent.right
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
visible: text
}
}
@@ -108,7 +107,7 @@ ConnectedRect {
sourceComponent: MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
text: root.trailingIcon
}
}
+4 -5
View File
@@ -70,7 +70,6 @@ DialogRowButton {
anchors.verticalCenter: parent.verticalCenter
color: item.selected ? Colors.palette.m3onTertiaryContainer : Colors.palette.m3onSurface
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
text: item.modelData
}
@@ -81,7 +80,7 @@ DialogRowButton {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
color: Colors.palette.m3onTertiaryContainer
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
opacity: item.selected ? 1 : 0
text: "check"
@@ -100,12 +99,12 @@ DialogRowButton {
Layout.fillWidth: true
bg.border.color: Colors.palette.m3outlineVariant
bg.color: Colors.tPalette.m3surfaceContainerLowest
clearIcon.font.pointSize: Tokens.font.size.large
clearIcon.font: Tokens.font.icon.medium
clearIcon.padding: Tokens.padding.extraSmall
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
placeholderText: qsTr("Search...")
searchIcon.anchors.leftMargin: Tokens.padding.large
searchIcon.font.pointSize: Tokens.font.size.large
searchIcon.fontStyle: Tokens.font.icon.medium
Behavior on bg.border.color {
CAnim {}
+1 -1
View File
@@ -13,5 +13,5 @@ CustomText {
Layout.topMargin: first ? 0 : Tokens.spacing.largeIncreased - ((parent as ColumnLayout).spacing ?? 0)
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.normal
font: Tokens.font.label.medium
}
+2 -2
View File
@@ -40,14 +40,14 @@ ConnectedRect {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
font: Tokens.font.body.small
}
CustomText {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: root.subtext
visible: root.subtext
}
+2 -2
View File
@@ -40,14 +40,14 @@ ConnectedRect {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
}
CustomText {
id: valueLabel
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
}
}
+2 -2
View File
@@ -39,14 +39,14 @@ ConnectedRect {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
font: Tokens.font.body.small
}
CustomText {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: root.subtext
visible: root.subtext
}
-1
View File
@@ -62,7 +62,6 @@ ConnectedRect {
visible: root.subtext
text: input.isError && root.errorText ? root.errorText : root.subtext
color: input.isError && root.errorText ? Colors.palette.m3error : Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
elide: Text.ElideRight
animate: root.errorText
}
+1 -1
View File
@@ -193,7 +193,7 @@ Item {
spacing: 0
CustomText {
font.pointSize: Tokens.font.size.large
font: Tokens.font.title.builders.large.weight(Font.Normal).build()
text: root.header
}
+2 -2
View File
@@ -34,14 +34,14 @@ ConnectedRect {
CustomText {
id: text
font.pointSize: Tokens.font.size.smaller
font: Tokens.font.body.small
}
CustomText {
id: subtext
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
wrapMode: Text.WordWrap
}
}
+2 -2
View File
@@ -137,7 +137,7 @@ ColumnLayout {
CustomText {
id: startSeparator
font.pointSize: Tokens.font.size.extraLarge
font: Tokens.font.body.builders.large.size(28).weight(Font.DemiBold).build()
text: ":"
}
@@ -360,7 +360,7 @@ ColumnLayout {
CustomText {
id: endSeparator
font.pointSize: Tokens.font.size.extraLarge
font: Tokens.font.body.builders.large.size(28).weight(Font.DemiBold).build()
text: ":"
}
+3 -2
View File
@@ -20,6 +20,7 @@ CustomSwitch {
Layout.fillWidth: true
cLayer: 2
font: Tokens.font.body.small
horizontalPadding: Tokens.padding.largeIncreased
implicitHeight: Math.max(implicitContentHeight, implicitIndicatorHeight) + verticalPadding * 2
implicitWidth: implicitContentWidth + implicitIndicatorWidth + horizontalPadding * 2
@@ -59,7 +60,7 @@ CustomSwitch {
anchors.left: parent.left
anchors.right: parent.right
elide: Text.ElideRight
font.pointSize: Tokens.font.size.smaller
font: root.font
opacity: root.enabled ? 1 : 0.5
text: root.text
@@ -75,7 +76,7 @@ CustomSwitch {
anchors.right: parent.right
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
opacity: root.enabled ? 1 : 0.5
text: root.subtext
visible: root.subtext
+4 -5
View File
@@ -18,16 +18,15 @@ ColumnLayout {
Layout.fillWidth: true
bg.border.color: Colors.palette.m3outlineVariant
bg.color: Colors.tPalette.m3surfaceContainerLowest
clearIcon.font.pointSize: Tokens.font.size.large
clearIcon.font: Tokens.font.icon.medium
clearIcon.padding: Tokens.padding.extraSmall
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.large
placeholderText: qsTr("Search settings")
searchIcon.anchors.leftMargin: Tokens.padding.largeIncreased
searchIcon.font.pointSize: Tokens.font.size.large
searchIcon.fontStyle: Tokens.font.icon.medium
Behavior on bg.border.color {
CAnim {
}
CAnim {}
}
Binding {
+10 -9
View File
@@ -107,7 +107,7 @@ VerticalFadeFlickable {
anchors.fill: parent
anchors.margins: Tokens.padding.large
spacing: Tokens.spacing.small
spacing: Tokens.spacing.medium
CustomRect {
Layout.bottomMargin: -1
@@ -122,7 +122,7 @@ VerticalFadeFlickable {
anchors.verticalCenterOffset: 1
color: item.isCurrentPage ? Colors.palette.m3onPrimary : Colors.palette.m3onSecondaryContainer
fill: item.modelData.noFill ? 0 : 1
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.builders.medium.weight(Font.Medium).build()
grade: 25
text: item.modelData.icon
}
@@ -135,6 +135,7 @@ VerticalFadeFlickable {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font: Tokens.font.body.medium
text: item.modelData.name
}
@@ -142,6 +143,7 @@ VerticalFadeFlickable {
Layout.fillWidth: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font: Tokens.font.label.small
text: item.modelData.description
}
}
@@ -198,7 +200,7 @@ VerticalFadeFlickable {
MaterialIcon {
color: Colors.palette.m3primary
fill: 1
font.pointSize: Tokens.font.size.large
fontStyle: Tokens.font.icon.builders.medium.weight(Font.Medium).build()
text: group.modelData.icon
}
@@ -206,7 +208,7 @@ VerticalFadeFlickable {
Layout.fillWidth: true
color: Colors.palette.m3secondary
elide: Text.ElideRight
font.pointSize: Tokens.font.size.large
font: Tokens.font.body.large
text: group.modelData.page
}
}
@@ -283,7 +285,7 @@ VerticalFadeFlickable {
Layout.fillWidth: true
color: Colors.palette.m3onSurfaceVariant
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: {
const labels = result.modelData.crumbLabels.slice(1);
const section = result.modelData.section;
@@ -297,7 +299,6 @@ VerticalFadeFlickable {
Layout.fillWidth: true
color: Colors.palette.m3onSurface
elide: Text.ElideRight
font.pointSize: Tokens.font.size.normal
text: SettingsSearcher.highlight(result.modelData.title, root.search, Colors.palette.m3primary)
textFormat: text.includes("<font") ? Text.StyledText : Text.PlainText
}
@@ -306,7 +307,7 @@ VerticalFadeFlickable {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: SettingsSearcher.highlight(result.modelData.subtext, root.search, Colors.palette.m3primary)
textFormat: text.includes("<font") ? Text.StyledText : Text.PlainText
visible: result.modelData.subtext.length > 0
@@ -319,7 +320,8 @@ VerticalFadeFlickable {
z: 1
onClicked: {
root.sState.jumpToSetting(result.modelData.pageIdx, result.modelData.subPath, result.modelData.anchor);
const target = result.modelData.targetSubPath;
root.sState.jumpToSetting(result.modelData.pageIdx, target.length > 0 ? target : result.modelData.subPath, target.length > 0 ? "" : result.modelData.anchor);
}
}
@@ -349,7 +351,6 @@ VerticalFadeFlickable {
Layout.fillWidth: true
Layout.topMargin: Tokens.padding.large
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
horizontalAlignment: Text.AlignHCenter
text: qsTr("No matching settings")
visible: root.searching && root.results.length === 0
+1 -1
View File
@@ -182,7 +182,7 @@ QtObject {
MaterialIcon {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3outlineVariant
font.pointSize: Tokens.font.size.extraLarge
fontStyle: Tokens.font.icon.extraLarge
text: "handyman"
}
+2 -2
View File
@@ -56,14 +56,14 @@ PageBase {
CustomText {
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: Tokens.spacing.small
font.pointSize: Tokens.font.size.large
font: Tokens.font.headline.large
text: "ZShell"
}
CustomText {
Layout.alignment: Qt.AlignHCenter
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: ZUtils.version ? `v${ZUtils.version}` : "…"
}
}
+4 -4
View File
@@ -67,7 +67,7 @@ PageBase {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: appItem.modelData.name
}
@@ -75,7 +75,7 @@ PageBase {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
text: (appItem.modelData.comment || appItem.modelData.genericName) ?? ""
visible: text
}
@@ -84,14 +84,14 @@ PageBase {
MaterialIcon {
color: Colors.palette.m3primary
fill: 1
font.pointSize: Tokens.font.size.small
fontStyle: Tokens.font.icon.small
text: "favorite"
visible: Strings.testRegexList(Config.launcher.favoriteApps, appItem.modelData.id)
}
MaterialIcon {
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.normal
fontStyle: Tokens.font.icon.medium
text: "chevron_right"
}
}
+3 -4
View File
@@ -57,7 +57,7 @@ PageBase {
CustomText {
Layout.fillWidth: true
font.pointSize: Tokens.font.size.normal
font: Tokens.font.body.medium
text: root.app?.name ?? ""
wrapMode: Text.WordWrap
}
@@ -65,7 +65,7 @@ PageBase {
CustomText {
Layout.fillWidth: true
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: (root.app?.comment || root.app?.genericName) ?? ""
visible: text
wrapMode: Text.WordWrap
@@ -152,7 +152,7 @@ PageBase {
id: label
Layout.alignment: Qt.AlignTop
font.pointSize: Tokens.font.size.small
font: Tokens.font.label.small
}
Item {
@@ -165,7 +165,6 @@ PageBase {
Layout.fillWidth: true
Layout.maximumWidth: implicitWidth + 1 // Whyyyyyyyyy
color: Colors.palette.m3onSurfaceVariant
font.pointSize: Tokens.font.size.small
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
}
+4 -4
View File
@@ -76,7 +76,7 @@ PageBase {
icon: "apps"
last: true
settingAnchor: "apps-all-apps"
status: qsTr("Browse installed apps, set favorites and hidden")
subtext: qsTr("Browse installed apps, set favorites and hidden")
text: qsTr("All apps")
onClicked: root.sState.openSubPage(1)
@@ -154,7 +154,7 @@ PageBase {
CustomText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: appItem.modelData.name
}
@@ -162,7 +162,7 @@ PageBase {
Layout.fillWidth: true
color: Colors.palette.m3outline
elide: Text.ElideRight
font.pointSize: Tokens.font.size.small
font: Tokens.font.body.small
text: (appItem.modelData.comment || appItem.modelData.genericName) ?? ""
visible: text
}
@@ -171,7 +171,7 @@ PageBase {
MaterialIcon {
color: Colors.palette.m3primary
fill: 1
font.pointSize: Tokens.font.size.small
fontStyle: Tokens.font.icon.small
text: "favorite"
visible: Strings.testRegexList(Config.launcher.favoriteApps, appItem.modelData.id)
}
@@ -28,7 +28,6 @@ PageBase {
Layout.fillWidth: true
Layout.leftMargin: Tokens.padding.extraSmall
color: Colors.palette.m3outline
font.pointSize: Tokens.font.size.small
text: qsTr("Adjust the volume of individual apps currently playing audio.")
wrapMode: Text.WordWrap
}

Some files were not shown because too many files have changed in this diff Show More