feat: initial commit for pixel-snapping components and helpers

This commit is contained in:
2026-10-29 17:34:57 +01:00
parent 9d8bde1413
commit 9cbb90f9e1
163 changed files with 2671 additions and 951 deletions
+5 -2
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell.Io
import ZShell
import qs.Modules.Settings.Common
@@ -17,7 +18,8 @@ PageBase {
title: qsTr("About")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -38,7 +40,8 @@ PageBase {
implicitHeight: hero.implicitHeight + Tokens.padding.extraLarge * 2
last: true
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: hero
anchors.centerIn: parent
+6 -3
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import Quickshell.Widgets
import qs.Components
@@ -16,7 +17,8 @@ PageBase {
isSubPage: true
title: qsTr("All apps")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -45,7 +47,7 @@ PageBase {
}
}
RowLayout {
SnapLayout {
id: appRow
anchors.fill: parent
@@ -60,7 +62,8 @@ PageBase {
source: Quickshell.iconPath(appItem.modelData.icon, "image-missing")
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+7 -4
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import Quickshell.Widgets
import qs.Components
@@ -32,14 +33,15 @@ PageBase {
sState.closeSubPage();
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
width: root.cappedWidth
// Header
RowLayout {
SnapLayout {
Layout.bottomMargin: Tokens.spacing.largeIncreased
Layout.fillWidth: true
Layout.leftMargin: Tokens.padding.extraSmall
@@ -51,7 +53,8 @@ PageBase {
source: Quickshell.iconPath(root.app?.icon, "image-missing")
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: Tokens.spacing.extraSmall / 2
@@ -139,7 +142,7 @@ PageBase {
Layout.fillWidth: true
implicitHeight: rowLayout.implicitHeight + rowLayout.anchors.margins * 2
RowLayout {
SnapLayout {
id: rowLayout
anchors.fill: parent
+6 -3
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import Quickshell.Widgets
import ZShell
@@ -16,7 +17,8 @@ PageBase {
title: qsTr("Apps")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -134,7 +136,7 @@ PageBase {
row.selected(modelData);
}
RowLayout {
SnapLayout {
id: itemLayout
anchors.fill: parent
@@ -147,7 +149,8 @@ PageBase {
source: Quickshell.iconPath(appItem.modelData.icon, "image-missing")
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+3 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import Quickshell.Services.Pipewire
import qs.Modules.Settings.Common
@@ -17,7 +18,8 @@ PageBase {
isSubPage: true
title: qsTr("App volumes")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
+6 -3
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Daemons
import ZShell.Config
import qs.Components
@@ -14,7 +15,8 @@ PageBase {
title: qsTr("Audio")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -93,7 +95,7 @@ PageBase {
onClicked: root.sState.openSubPage(1)
}
RowLayout {
SnapLayout {
id: appLayout
anchors.fill: parent
@@ -107,7 +109,8 @@ PageBase {
text: "tune"
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
@@ -1,6 +1,7 @@
pragma ComponentBehavior: Bound
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -38,7 +39,8 @@ PageBase {
isSubPage: true
title: qsTr("Clock")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -1,4 +1,5 @@
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Modules.Settings.Common
@@ -14,7 +15,8 @@ PageBase {
isSubPage: true
title: qsTr("System icons")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -1,6 +1,7 @@
pragma ComponentBehavior: Bound
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Modules.Settings.Common
@@ -10,7 +11,8 @@ PageBase {
isSubPage: true
title: qsTr("Tray")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
+3 -1
View File
@@ -1,6 +1,7 @@
pragma ComponentBehavior: Bound
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -11,7 +12,8 @@ PageBase {
isSubPage: true
title: qsTr("Taskbar")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -12,7 +13,8 @@ PageBase {
isSubPage: true
title: qsTr("Dashboard")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -12,7 +13,8 @@ PageBase {
isSubPage: true
title: qsTr("Launcher")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -12,7 +13,8 @@ PageBase {
isSubPage: true
title: qsTr("Resources")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -59,7 +60,8 @@ PageBase {
isSubPage: true
title: qsTr("Sidebar")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -22,7 +23,8 @@ PageBase {
isSubPage: true
title: qsTr("Sidebar")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
+3 -1
View File
@@ -1,4 +1,5 @@
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Modules.Settings.Common
@@ -7,7 +8,8 @@ PageBase {
title: qsTr("Panels")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
+2 -1
View File
@@ -14,7 +14,8 @@ PageBase {
title: qsTr("Screenshots")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings.Common
@@ -10,7 +11,8 @@ PageBase {
isSubPage: true
title: qsTr("Notifications")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
+3 -1
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import ZShell.Services
import qs.Components
@@ -28,7 +29,8 @@ PageBase {
title: qsTr("Services")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -4,6 +4,7 @@ import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Paths
import qs.Services
@@ -59,7 +60,8 @@ PageBase {
isSubPage: true
title: qsTr("Colors & font")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.extraSmall / 2
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Models
import qs.Paths
import qs.Helpers
@@ -16,7 +17,8 @@ PageBase {
isSubPage: true
title: qsTr("Wallpapers")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
@@ -75,7 +77,8 @@ PageBase {
implicitHeight: noWallsLayout.implicitHeight + Tokens.padding.extraLarge * 3
radius: Tokens.rounding.largeIncreased
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: noWallsLayout
anchors.centerIn: parent
+2 -1
View File
@@ -15,7 +15,8 @@ PageBase {
title: qsTr("Wallpaper & style")
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.largeIncreased