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 } export default { SystemInfo }