aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/comet.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/comet.c b/src/comet.c
index 2bf642a..556ba75 100644
--- a/src/comet.c
+++ b/src/comet.c
@@ -56,6 +56,29 @@ static gboolean disk_update(gpointer data)
return G_SOURCE_CONTINUE;
}
+static gboolean ram_update(gpointer data)
+{
+ Button *btn = data;
+
+ FILE *meminfo = fopen("/proc/meminfo", "rb");
+
+ uintmax_t total, unused, buffers, cached;
+ g_assert(5 == fscanf(meminfo,
+ "MemTotal: %ju kB\n"
+ "MemFree: %ju kB\n"
+ "MemAvailable: %ju kB\n"
+ "Buffers: %ju kB\n"
+ "Cached: %ju kB\n",
+ &total, &unused, &buffers, &buffers, &cached));
+
+ g_free(btn->text);
+ btn->text = g_strdup_printf(" %d%%", (int)(100 * (total - unused - buffers - cached) / total));
+
+ log_debug("Updated ram percentage");
+ state_redraw(btn->action_data);
+ return G_SOURCE_CONTINUE;
+}
+
static gboolean date_update(gpointer data)
{
Button *btn = data;
@@ -141,6 +164,14 @@ int main(int argc, char **argv)
disk_update(disk_btn);
g_timeout_add(60 * 1000, disk_update, disk_btn);
+ Button *ram_btn = button_create("ram", PANGO_ALIGN_RIGHT);
+ button_set_colors(ram_btn, background, foreground, stroke);
+ button_set_action(ram_btn, show_action, state);
+ state_add_button(state, ram_btn);
+
+ ram_update(ram_btn);
+ g_timeout_add(60 * 1000, ram_update, ram_btn);
+
struct {
State *state;
timer_t timer;