diff --git a/assets/icons/hicolor/scalable/devices/fa-cpu-usage-symbolic.svg b/assets/icons/hicolor/scalable/devices/fa-cpu-usage-symbolic.svg new file mode 100644 index 0000000..4d0b8e9 --- /dev/null +++ b/assets/icons/hicolor/scalable/devices/fa-cpu-usage-symbolic.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/hicolor/scalable/devices/fa-ram-symbolic.svg b/assets/icons/hicolor/scalable/devices/fa-ram-symbolic.svg new file mode 100644 index 0000000..ba67b4b --- /dev/null +++ b/assets/icons/hicolor/scalable/devices/fa-ram-symbolic.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/hicolor/scalable/devices/fa-video-card-symbolic.svg b/assets/icons/hicolor/scalable/devices/fa-video-card-symbolic.svg index 4d0b8e9..202f08c 100644 --- a/assets/icons/hicolor/scalable/devices/fa-video-card-symbolic.svg +++ b/assets/icons/hicolor/scalable/devices/fa-video-card-symbolic.svg @@ -1 +1 @@ - + diff --git a/widgets/control-center/system-info.tsx b/widgets/control-center/system-info.tsx index d48e935..adb1d8f 100644 --- a/widgets/control-center/system-info.tsx +++ b/widgets/control-center/system-info.tsx @@ -1,61 +1,19 @@ -import { createBinding, createComputed } from "ags"; import { Gtk } from "ags/gtk4"; import { createPoll } from "ags/time"; -import AstalBattery from "gi://AstalBattery"; -import AstalNetwork from "gi://AstalNetwork"; export const SystemInfo = () => { const cpu = PollCMD("cat /sys/class/thermal/thermal_zone*/temp"); const gpu = PollCMD("supergfxctl -g"); const profile = PollCMD("asusctl profile -p"); const tailscale = PollCMD("tailscale ping homelab"); - - const battery = AstalBattery.get_default(); - - const percentage = createBinding(battery, "percentage"); - const charging = createBinding(battery, "charging"); - const state = createBinding(battery, "state"); - const energyRate = createBinding(battery, "energyRate"); - - const chargingIcon = createComputed( - [percentage, charging, state], - (percentage, charging, state) => { - const batFull = state === AstalBattery.State.FULLY_CHARGED; - const p = percentage * 100; - - if (batFull) return "fa-battery-full-symbolic"; - if (charging) return "fa-battery-charging-symbolic"; - if (p < 30) return "fa-battery-low-symbolic"; - return p < 70 ? "fa-battery-medium-symbolic" : "fa-battery-full-symbolic"; - }, + const cpuUsage = PollCMD( + `awk '{u=$2+$4; t=$2+$3+$4+$5+$6+$7+$8; if(NR==1){u1=u; t1=t}else{printf "%.1f%%",(u-u1)*100/(t-t1)}}' <(grep '^cpu ' /proc/stat; sleep 1; grep '^cpu ' /proc/stat)`, + 2000, + ); + const ramUsage = PollCMD( + `awk '/MemTotal:|MemAvailable:/ {if($1=="MemTotal:") total=$2; if($1=="MemAvailable:") avail=$2} END {used=total-avail; printf "%.1f%%", used/total*100}' /proc/meminfo`, + 2000, ); - - const network = AstalNetwork.get_default(); - const connnectivity = createBinding(network, "connectivity"); - - const getNetworkText = ( - conn: AstalNetwork.Connectivity, - net: AstalNetwork.Network, - ) => { - // no connection - if (conn == 1) return "No connection"; - - // wired - if (net.primary == 1) return "Wired"; - - // wifi - const wifi = net.wifi; - switch (wifi.internet) { - case 0: - return wifi.ssid; - case 1: - return "Connecting"; - case 2: - return "Disconnected"; - } - - return "NA"; - }; return ( <> @@ -65,10 +23,30 @@ export const SystemInfo = () => { spacing={15} orientation={Gtk.Orientation.VERTICAL} > - -