Files
dotfiles/.config/quickshell/nucleus-shell/modules/interface/sidebarLeft/SystemOverview.qml

487 lines
14 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell
import Quickshell.Io
import qs.modules.functions
import qs.services
import qs.config
import qs.modules.components
Item {
id: root
implicitWidth: 300
implicitHeight: parent ? parent.height : 500
ColumnLayout {
anchors.topMargin: Metrics.margin(90)
anchors.fill: parent
anchors.margins: Metrics.margin("normal")
spacing: Metrics.margin("small")
// Header
RowLayout {
Layout.fillWidth: true
RowLayout {
spacing: Metrics.margin("normal")
StyledText {
text: SystemDetails.osIcon
font.family: Metrics.fontFamily("nerdIcons")
font.pixelSize: Metrics.fontSize(48)
color: Appearance.colors.colPrimary
}
ColumnLayout {
spacing: Metrics.spacing(2)
StyledText {
text: SystemDetails.osName
font.pixelSize: Metrics.fontSize("large")
color: Appearance.m3colors.m3onSurface
}
StyledText {
text: `${SystemDetails.username}@${SystemDetails.hostname}`
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
}
}
}
Item {
Layout.fillWidth: true
}
ColumnLayout {
spacing: Metrics.spacing(2)
Layout.alignment: Qt.AlignRight
StyledText {
text: `qs ${SystemDetails.qsVersion}`
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
}
StyledText {
text: `nucleus-shell v${Config.runtime.shell.version}`
font.pixelSize: Metrics.fontSize("smaller")
color: Appearance.colors.colSubtext
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 56
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
StyledText {
text: "Uptime"
font.pixelSize: Metrics.fontSize("normal")
color: Appearance.colors.colPrimary
}
Item {
Layout.fillWidth: true
}
StyledText {
text: SystemDetails.uptime
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 56
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
StyledText {
text: "Operating System"
font.pixelSize: Metrics.fontSize("normal")
color: Appearance.colors.colPrimary
}
Item {
Layout.fillWidth: true
}
StyledText {
text: SystemDetails.osName
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
elide: Text.ElideRight
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 320
radius: Metrics.radius("large")
color: Appearance.colors.colLayer2
ColumnLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("large")
spacing: Metrics.margin("normal")
ColumnLayout {
spacing: Metrics.spacing(6)
RowLayout {
StyledText {
text: "CPU Usage"
color: Appearance.colors.colSubtext
}
Item {
Layout.fillWidth: true
}
StyledText {
animate: false
text: SystemDetails.cpuLoad
color: Appearance.colors.colSubtext
}
}
Rectangle {
Layout.fillWidth: true
height: 10
radius: Metrics.radius(5)
color: Appearance.colors.colLayer1
Rectangle {
width: parent.width * SystemDetails.cpuPercent
height: parent.height
radius: Metrics.radius(5)
color: Appearance.colors.colPrimary
}
}
}
ColumnLayout {
spacing: Metrics.spacing(6)
RowLayout {
StyledText {
text: "Ram Usage"
color: Appearance.colors.colSubtext
}
Item {
Layout.fillWidth: true
}
StyledText {
animate: false
text: SystemDetails.ramUsage
color: Appearance.colors.colSubtext
}
}
Rectangle {
Layout.fillWidth: true
height: 10
radius: Metrics.radius(5)
color: Appearance.colors.colLayer1
Rectangle {
width: parent.width * SystemDetails.ramPercent
height: parent.height
radius: Metrics.radius(5)
color: Appearance.colors.colPrimary
}
}
}
ColumnLayout {
spacing: Metrics.spacing(6)
RowLayout {
StyledText {
text: "Disk Usage"
color: Appearance.colors.colSubtext
}
Item {
Layout.fillWidth: true
}
StyledText {
animate: false
text: SystemDetails.diskUsage
color: Appearance.colors.colSubtext
}
}
Rectangle {
Layout.fillWidth: true
height: 10
radius: Metrics.radius(5)
color: Appearance.colors.colLayer1
Rectangle {
width: parent.width * SystemDetails.diskPercent
height: parent.height
radius: Metrics.radius(5)
color: Appearance.colors.colPrimary
}
}
}
ColumnLayout {
spacing: Metrics.spacing(6)
RowLayout {
StyledText {
text: "Swap Usage"
color: Appearance.colors.colSubtext
}
Item {
Layout.fillWidth: true
}
StyledText {
text: SystemDetails.swapUsage
color: Appearance.colors.colSubtext
}
}
Rectangle {
Layout.fillWidth: true
height: 10
radius: Metrics.radius(5)
color: Appearance.colors.colLayer1
Rectangle {
width: parent.width * SystemDetails.swapPercent
height: parent.height
radius: Metrics.radius(5)
color: Appearance.colors.colPrimary
}
}
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 72
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
spacing: Metrics.margin("large")
ColumnLayout {
spacing: Metrics.spacing(2)
StyledText {
text: "Kernel"
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
}
StyledText {
text: SystemDetails.kernelVersion
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
}
}
Item {
Layout.fillWidth: true
}
ColumnLayout {
spacing: Metrics.spacing(2)
Layout.alignment: Qt.AlignRight
StyledText {
text: "Architecture"
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
horizontalAlignment: Text.AlignRight
}
StyledText {
text: SystemDetails.architecture
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
horizontalAlignment: Text.AlignRight
}
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 72
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
visible: UPower.batteryPresent
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
spacing: Metrics.margin("large")
ColumnLayout {
spacing: Metrics.spacing(2)
StyledText {
text: "Battery"
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
}
StyledText {
text: `${Math.round(UPower.percentage)}%`
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
}
}
Item {
Layout.fillWidth: true
}
ColumnLayout {
spacing: Metrics.spacing(2)
Layout.alignment: Qt.AlignRight
StyledText {
text: "AC"
font.pixelSize: Metrics.fontSize("small")
color: Appearance.colors.colSubtext
horizontalAlignment: Text.AlignRight
}
StyledText {
text: UPower.acOnline ? "online" : "battery"
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
horizontalAlignment: Text.AlignRight
}
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 56
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
StyledText {
text: "Running Processes"
font.pixelSize: Metrics.fontSize("normal")
color: Appearance.colors.colPrimary
}
Item {
Layout.fillWidth: true
}
StyledText {
text: SystemDetails.runningProcesses
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
}
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 56
radius: Metrics.radius("normal")
color: Appearance.colors.colLayer2
RowLayout {
anchors.fill: parent
anchors.margins: Metrics.margin("small")
StyledText {
text: "Logged-in Users"
font.pixelSize: Metrics.fontSize("normal")
color: Appearance.colors.colPrimary
}
Item {
Layout.fillWidth: true
}
StyledText {
text: SystemDetails.loggedInUsers
font.pixelSize: Metrics.fontSize("small")
color: Appearance.m3colors.m3onSurface
}
}
}
Item {
Layout.fillHeight: true
}
}
}