Files
dotfiles/.config/quickshell/nucleus-shell/modules/interface/sidebarRight/SidebarRightContent.qml

248 lines
8.5 KiB
QML

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
}
}
}
}