1
0
Fork 0
NixOS/hosts/totsugeki/home-manager/desktop/ags/config/services/ram.js
2024-09-05 21:01:29 +02:00

56 lines
1.2 KiB
JavaScript

class RAMService extends Service {
static {
Service.register(
this,
{},
{
"current-usage": ["float", "r"],
"current-usage-percentage": ["float", "r"],
"total-available": ["float", "r"],
},
);
}
#currentUsage = 0;
#totalAvailable = 0;
get current_usage() {
return this.#currentUsage;
}
get current_usage_percentage() {
return this.#currentUsage / this.#totalAvailable;
}
get total_available() {
return this.#totalAvailable;
}
constructor() {
super();
this.#totalAvailable = Number(
Utils.exec(
'sh -c \'cat /proc/meminfo | grep MemTotal | tr -s " " | cut -d " " -f 2\'',
),
);
this.#update();
const interval = setInterval(() => {
this.#update();
}, 2000);
}
#update() {
this.#currentUsage =
this.#totalAvailable -
Number(
Utils.exec(
'sh -c \'cat /proc/meminfo | grep MemAvailable | tr -s " " | cut -d " " -f 2\'',
),
);
this.emit("changed");
this.notify("current-usage");
this.notify("current-usage-percentage");
}
}
const ram = new RAMService();
export default ram;