aboutsummaryrefslogtreecommitdiff
path: root/src/comet.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comet.c')
-rw-r--r--src/comet.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/comet.c b/src/comet.c
index fd393bc..45de1f6 100644
--- a/src/comet.c
+++ b/src/comet.c
@@ -43,14 +43,17 @@ static gboolean disk_update(gpointer data)
struct statvfs buffer;
g_assert(statvfs("/", &buffer) == 0);
-
const double used = 1.0 - ((double)buffer.f_bavail / (double)buffer.f_blocks);
+ size_t len1 = g_utf8_strlen(btn->text, -1);
+
g_free(btn->text);
btn->text = g_strdup_printf(" %d%%", (int)round(used * 100.0));
+ size_t len2 = g_utf8_strlen(btn->text, -1);
+
log_debug("Updated disk percentage");
- state_redraw(btn->action_data);
+ state_redraw(btn->action_data, len1 != len2);
return G_SOURCE_CONTINUE;
}
@@ -86,9 +89,13 @@ static gboolean cpu_update(gpointer data)
char *perc = cpu_percentage();
// Don't update on error
if (perc != NULL) {
+ size_t len1 = g_utf8_strlen(btn->text, -1);
+
g_free(btn->text);
btn->text = perc;
- state_redraw(btn->action_data);
+
+ size_t len2 = g_utf8_strlen(btn->text, -1);
+ state_redraw(btn->action_data, len1 != len2);
}
log_debug("Updated cpu percentage");
@@ -111,11 +118,15 @@ static gboolean ram_update(gpointer data)
&total, &unused, &buffers, &buffers, &cached));
fclose(meminfo);
+ size_t len1 = g_utf8_strlen(btn->text, -1);
+
g_free(btn->text);
btn->text = g_strdup_printf(" %d%%", (int)(100 * (total - unused - buffers - cached) / total));
+ size_t len2 = g_utf8_strlen(btn->text, -1);
+
log_debug("Updated ram percentage");
- state_redraw(btn->action_data);
+ state_redraw(btn->action_data, len1 != len2);
return G_SOURCE_CONTINUE;
}
@@ -123,11 +134,15 @@ static gboolean date_update(gpointer data)
{
Button *btn = data;
+ size_t len1 = g_utf8_strlen(btn->text, -1);
g_free(btn->text);
+
GDateTime *time = g_date_time_new_now_local();
char *date = g_date_time_format(time, "%A %d %H:%M");
g_assert(date != NULL);
+
btn->text = date;
+ size_t len2 = g_utf8_strlen(btn->text, -1);
struct {
State *state;
@@ -135,7 +150,7 @@ static gboolean date_update(gpointer data)
} *date_ctx = btn->action_data;
log_debug("Updated date and time");
- state_redraw(date_ctx->state);
+ state_redraw(date_ctx->state, len1 != len2);
struct timespec current;
clock_gettime(CLOCK_REALTIME, &current);
@@ -251,7 +266,7 @@ int main(int argc, char **argv)
guint source_term = g_unix_signal_add(SIGTERM, mainloop_quit, mainloop);
guint source_int = g_unix_signal_add(SIGINT, mainloop_quit, mainloop);
- state_redraw(state);
+ state_redraw(state, true);
log_debug("Starting main loop");
g_main_loop_run(mainloop);