Initial commit
This commit is contained in:
commit
a8c2f88654
53 changed files with 9269 additions and 0 deletions
158
Widgets/Sidebar/Panel/SystemMonitor.qml
Normal file
158
Widgets/Sidebar/Panel/SystemMonitor.qml
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
import QtQuick 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
import QtQuick.Controls 2.15
|
||||
import Quickshell.Io
|
||||
import "root:/Settings" as Settings
|
||||
import "root:/Components" as Components
|
||||
|
||||
Rectangle {
|
||||
id: systemMonitor
|
||||
width: 70
|
||||
height: 200
|
||||
color: "transparent"
|
||||
|
||||
property real cpuUsage: 0
|
||||
property real memoryUsage: 0
|
||||
property real diskUsage: 0
|
||||
property bool isVisible: false
|
||||
|
||||
// Timers to control when processes run
|
||||
Timer {
|
||||
id: cpuTimer
|
||||
interval: 2000
|
||||
repeat: true
|
||||
running: isVisible
|
||||
onTriggered: cpuInfo.running = true
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: memoryTimer
|
||||
interval: 3000
|
||||
repeat: true
|
||||
running: isVisible
|
||||
onTriggered: memoryInfo.running = true
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: diskTimer
|
||||
interval: 5000
|
||||
repeat: true
|
||||
running: isVisible
|
||||
onTriggered: diskInfo.running = true
|
||||
}
|
||||
|
||||
// Process for getting CPU usage
|
||||
Process {
|
||||
id: cpuInfo
|
||||
command: ["sh", "-c", "top -bn1 | grep 'Cpu(s)' | awk '{print $2}' | awk -F'%' '{print $1}'"]
|
||||
running: false
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
let usage = parseFloat(data.trim())
|
||||
if (!isNaN(usage)) {
|
||||
systemMonitor.cpuUsage = usage
|
||||
}
|
||||
cpuInfo.running = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process for getting memory usage
|
||||
Process {
|
||||
id: memoryInfo
|
||||
command: ["sh", "-c", "free | grep Mem | awk '{print int($3/$2 * 100)}'"]
|
||||
running: false
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
let usage = parseFloat(data.trim())
|
||||
if (!isNaN(usage)) {
|
||||
systemMonitor.memoryUsage = usage
|
||||
}
|
||||
memoryInfo.running = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process for getting disk usage
|
||||
Process {
|
||||
id: diskInfo
|
||||
command: ["sh", "-c", "df / | tail -1 | awk '{print int($5)}'"]
|
||||
running: false
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
let usage = parseFloat(data.trim())
|
||||
if (!isNaN(usage)) {
|
||||
systemMonitor.diskUsage = usage
|
||||
}
|
||||
diskInfo.running = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function to start monitoring
|
||||
function startMonitoring() {
|
||||
isVisible = true
|
||||
// Trigger initial readings
|
||||
cpuInfo.running = true
|
||||
memoryInfo.running = true
|
||||
diskInfo.running = true
|
||||
}
|
||||
|
||||
// Function to stop monitoring
|
||||
function stopMonitoring() {
|
||||
isVisible = false
|
||||
cpuInfo.running = false
|
||||
memoryInfo.running = false
|
||||
diskInfo.running = false
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: card
|
||||
anchors.fill: parent
|
||||
color: Settings.Theme.surface
|
||||
radius: 18
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 8
|
||||
spacing: 12
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
// CPU Usage
|
||||
Components.CircularProgressBar {
|
||||
progress: cpuUsage / 100
|
||||
size: 50
|
||||
strokeWidth: 4
|
||||
hasNotch: true
|
||||
notchIcon: "speed"
|
||||
notchIconSize: 14
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
}
|
||||
|
||||
// Memory Usage
|
||||
Components.CircularProgressBar {
|
||||
progress: memoryUsage / 100
|
||||
size: 50
|
||||
strokeWidth: 4
|
||||
hasNotch: true
|
||||
notchIcon: "memory"
|
||||
notchIconSize: 14
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
}
|
||||
|
||||
// Disk Usage
|
||||
Components.CircularProgressBar {
|
||||
progress: diskUsage / 100
|
||||
size: 50
|
||||
strokeWidth: 4
|
||||
hasNotch: true
|
||||
notchIcon: "storage"
|
||||
notchIconSize: 14
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue