quickshell and hyprland additions

This commit is contained in:
2026-03-15 13:56:00 +02:00
parent c9c27d1554
commit 1ad06b82a6
509 changed files with 68371 additions and 19 deletions

View File

@@ -0,0 +1,247 @@
import qs.config
import qs.modules.components
import qs.services
import qs.modules.functions
import QtQuick
import Quickshell
import QtQuick.Layouts
import Quickshell.Wayland
import Quickshell.Io
import QtQuick.Controls
import Quickshell.Services.Pipewire
import Qt5Compat.GraphicalEffects
import "content/"
Item {
anchors.fill: parent
anchors.leftMargin: Metrics.margin("normal")
anchors.rightMargin: Metrics.margin("normal")
anchors.topMargin: Metrics.margin("large")
anchors.bottomMargin: Metrics.margin("large")
ColumnLayout {
id: mainLayout
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: Metrics.margin("tiny")
anchors.rightMargin: Metrics.margin("tiny")
anchors.margins: Metrics.margin("large")
spacing: Metrics.margin("large")
RowLayout {
id: topSection
Layout.fillWidth: true
ColumnLayout {
Layout.fillWidth: true
Layout.leftMargin: Metrics.margin(10)
Layout.alignment: Qt.AlignVCenter
spacing: Metrics.spacing(2)
RowLayout {
spacing: Metrics.spacing(8)
StyledText {
text: SystemDetails.osIcon
font.pixelSize: Metrics.fontSize("hugeass") + 6
}
StyledText {
text: SystemDetails.uptime
font.pixelSize: Metrics.fontSize("large")
Layout.alignment: Qt.AlignBottom
Layout.bottomMargin: Metrics.margin(5)
}
}
}
Item { Layout.fillWidth: true }
Row {
spacing: Metrics.spacing(6)
Layout.leftMargin: Metrics.margin(25)
Layout.alignment: Qt.AlignVCenter
StyledRect {
id: screenshotbtncontainer
color: "transparent"
radius: Metrics.radius("large")
implicitHeight: screenshotButton.height + Metrics.margin("tiny")
implicitWidth: screenshotButton.width + Metrics.margin("small")
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.topMargin: Metrics.margin(10)
Layout.leftMargin: Metrics.margin(15)
MaterialSymbolButton {
id: screenshotButton
icon: "edit"
anchors.centerIn: parent
iconSize: Metrics.iconSize("hugeass") + 2
tooltipText: "Take a screenshot"
onButtonClicked: {
Quickshell.execDetached(["nucleus", "ipc", "call", "screen", "capture"])
Globals.visiblility.sidebarRight = false;
}
}
}
StyledRect {
id: reloadbtncontainer
color: "transparent"
radius: Metrics.radius("large")
implicitHeight: reloadButton.height + Metrics.margin("tiny")
implicitWidth: reloadButton.width + Metrics.margin("small")
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.topMargin: Metrics.margin(10)
Layout.leftMargin: Metrics.margin(15)
MaterialSymbolButton {
id: reloadButton
icon: "refresh"
anchors.centerIn: parent
iconSize: Metrics.iconSize("hugeass") + 4
tooltipText: "Reload Nucleus Shell"
onButtonClicked: {
Quickshell.execDetached(["nucleus", "run", "--reload"])
}
}
}
StyledRect {
id: settingsbtncontainer
color: "transparent"
radius: Metrics.radius("large")
implicitHeight: settingsButton.height + Metrics.margin("tiny")
implicitWidth: settingsButton.width + Metrics.margin("small")
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.topMargin: Metrics.margin(10)
Layout.leftMargin: Metrics.margin(15)
MaterialSymbolButton {
id: settingsButton
icon: "settings"
anchors.centerIn: parent
iconSize: Metrics.iconSize("hugeass") + 2
tooltipText: "Open Settings"
onButtonClicked: {
Globals.visiblility.sidebarRight = false
Globals.states.settingsOpen = true
}
}
}
StyledRect {
id: powerbtncontainer
color: "transparent"
radius: Metrics.radius("large")
implicitHeight: settingsButton.height + Metrics.margin("tiny")
implicitWidth: settingsButton.width + Metrics.margin("small")
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.topMargin: Metrics.margin(10)
Layout.leftMargin: Metrics.margin(15)
MaterialSymbolButton {
id: powerButton
icon: "power_settings_new"
anchors.centerIn: parent
iconSize: Metrics.iconSize("hugeass") + 2
tooltipText: "Open PowerMenu"
onButtonClicked: {
Globals.visiblility.sidebarRight = false
Globals.visiblility.powermenu = true
}
}
}
}
}
Rectangle {
Layout.fillWidth: true
height: 1
color: Appearance.m3colors.m3outlineVariant
radius: Metrics.radius(1)
}
ColumnLayout {
id: sliderColumn
Layout.fillWidth: true
VolumeSlider {
Layout.fillWidth: true
Layout.preferredHeight: 50
icon: "volume_up"
iconSize: Metrics.iconSize("large") + 3
}
BrightnessSlider {
Layout.fillWidth: true
Layout.preferredHeight: 50
icon: "brightness_high"
}
}
Rectangle {
Layout.fillWidth: true
height: 1
color: Appearance.m3colors.m3outlineVariant
radius: Metrics.radius(1)
}
GridLayout {
id: middleGrid
Layout.fillWidth: true
columns: 1
columnSpacing: Metrics.spacing(8)
rowSpacing: Metrics.spacing(8)
Layout.preferredWidth: parent.width
RowLayout {
NetworkToggle {
Layout.fillWidth: true
Layout.preferredHeight: 80
}
FlightModeToggle {
Layout.fillWidth: true
Layout.preferredHeight: 80
}
}
RowLayout {
BluetoothToggle {
Layout.preferredWidth: 220
Layout.preferredHeight: 80
}
ThemeToggle {
Layout.preferredHeight: 80
Layout.fillWidth: true
}
NightModeToggle {
Layout.preferredHeight: 80
Layout.fillWidth: true
}
}
}
ColumnLayout {
spacing: Metrics.margin("small")
Layout.fillWidth: true
Rectangle {
Layout.fillWidth: true
height: 1
color: Appearance.m3colors.m3outlineVariant
radius: Metrics.radius(1)
Layout.topMargin: Metrics.margin(5)
Layout.bottomMargin: Metrics.margin(5)
}
NotifModal {
Layout.preferredHeight: (Config.runtime.bar.position === "left" || Config.runtime.bar.position === "right") ? 480 : 470
}
}
}
}