65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { exec, GLib } from "astal"
|
|
|
|
const featureTest = () => {
|
|
// Check if awk is available
|
|
try {
|
|
exec( 'awk -V' );
|
|
exec( 'sed --version' );
|
|
enabled = true;
|
|
} catch ( e ) {
|
|
printerr( '[ SysInfo ] AWK or SED missing! No system info will be available' );
|
|
enabled = false;
|
|
return;
|
|
}
|
|
try {
|
|
exec( 'mpstat' );
|
|
} catch ( e ) {
|
|
availableFeatures.cpu = false;
|
|
printerr( '[ SysInfo ] Feature Test for CPU info failed. mpstat from the sysstat package missing!' );
|
|
}
|
|
|
|
// Screen brightness... CTL might be available, but no screen controllable
|
|
// Battery... acpi might be present, but potentially no bat
|
|
}
|
|
|
|
let enabled = false;
|
|
|
|
const availableFeatures = {
|
|
cpu: true,
|
|
ram: true,
|
|
bat: true,
|
|
net: false,
|
|
brightness: true,
|
|
}
|
|
|
|
const sysInfoFetcher = () => {
|
|
if ( enabled ) {
|
|
if ( availableFeatures.cpu ) {
|
|
const cpuUtil = exec( 'mpstat | awk "/all/ {print(100 - $NF)"}' );
|
|
}
|
|
if ( availableFeatures.ram ) {
|
|
const ramUtil = exec( `free | awk '/Mem/ { printf("%.2f\\n", ($3/$2)*100) }'` );
|
|
}
|
|
if ( availableFeatures.bat ) {
|
|
const acpi = exec( `acpi -i | grep 'Battery'` );
|
|
// TODO: Parse acpi output
|
|
}
|
|
// if ( availableFeatures.net ) {
|
|
// // Using ifstat or vnstat probably, get current network de
|
|
// }
|
|
if ( availableFeatures.brightness ) {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
const SystemInfo = () => {
|
|
|
|
return <box></box>
|
|
}
|
|
|
|
|
|
export default {
|
|
SystemInfo
|
|
}
|