feat(noctalia): add modular Hyprland profiles
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
-- Read the tiny kernel meminfo pseudo-file every five seconds. This avoids a
|
||||
-- resident helper process and reuses Noctalia's lightweight widget lifecycle.
|
||||
local command = [[awk '
|
||||
$1 == "MemTotal:" { total = $2 }
|
||||
$1 == "MemAvailable:" { available = $2 }
|
||||
$1 == "SwapTotal:" { swap_total = $2 }
|
||||
$1 == "SwapFree:" { swap_free = $2 }
|
||||
END {
|
||||
if (!total || !available) exit 1
|
||||
used = total - available
|
||||
if (swap_total > 0) {
|
||||
swap_used = (swap_total - swap_free) * 100 / swap_total
|
||||
printf "RAM %.1f/%.1f GiB S %.0f%%\n", used / 1048576, total / 1048576, swap_used
|
||||
} else {
|
||||
printf "RAM %.1f/%.1f GiB S —\n", used / 1048576, total / 1048576
|
||||
}
|
||||
}' /proc/meminfo]]
|
||||
|
||||
local request_in_flight = false
|
||||
|
||||
function update()
|
||||
noctalia.setUpdateInterval(5000)
|
||||
|
||||
if request_in_flight then
|
||||
return
|
||||
end
|
||||
|
||||
request_in_flight = true
|
||||
noctalia.runAsync(command, function(result)
|
||||
request_in_flight = false
|
||||
|
||||
if result.exitCode ~= 0 then
|
||||
barWidget.setText("RAM —")
|
||||
barWidget.setTooltip("Unable to read /proc/meminfo")
|
||||
return
|
||||
end
|
||||
|
||||
local text = string.gsub(result.stdout, "%s+$", "")
|
||||
barWidget.setGlyph("memory")
|
||||
barWidget.setText(text)
|
||||
barWidget.setTooltip("RAM used / total · S = swap used")
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user