V-Panel/panels/memory/memory_collector.gd

36 lines
824 B
GDScript

extends RefCounted
class_name MemoryCollector
func collect() -> float:
var meminfo := _read_meminfo()
if meminfo.is_empty():
return 0.0
var total: int = meminfo.get("MemTotal", 0)
var available: int = meminfo.get("MemAvailable", 0)
if total == 0:
return 0.0
return 100.0 * (1.0 - float(available) / float(total))
func _read_meminfo() -> Dictionary:
var file := FileAccess.open("/proc/meminfo", FileAccess.READ)
if file == null:
return {}
var result: Dictionary = {}
while not file.eof_reached():
var line: String = file.get_line().strip_edges()
if line.is_empty():
continue
var parts := line.split(":", false)
if parts.size() < 2:
continue
var key := parts[0].strip_edges()
var val_str := parts[1].strip_edges().split(" ", false)[0]
result[key] = val_str.to_int()
return result