From 3ecdc5730954ac1f20a0b9298be2a9aeb9f02392 Mon Sep 17 00:00:00 2001 From: Drath Date: Tue, 1 Sep 2026 21:22:44 +0200 Subject: [PATCH] distro name --- include/sys.h | 2 ++ src/main.c | 7 ++++--- src/sys.c | 13 +++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/sys.h b/include/sys.h index a634bfb..1934218 100644 --- a/include/sys.h +++ b/include/sys.h @@ -39,6 +39,8 @@ char *sys_get_date_string(char *buf, size_t bufsz, time_t t); void sys_get_load_avg(double *load_avg); +void sys_get_distro(char* name, char* ver_str); + void sys_get_ram(struct memory_t *ram); void sys_get_disk(struct disk_t *disk); diff --git a/src/main.c b/src/main.c index ff0023f..7977808 100644 --- a/src/main.c +++ b/src/main.c @@ -102,9 +102,10 @@ static void *display_thread(void *arg) { lcd_set_backlight(&lcd, true); lcd_set_contrast(&lcd, lcd_contrast); - lcd_write_buf(&lcd, 0, 14, "linuxSmartie"); - lcd_writef(&lcd, 0, 2, "git hash:"); - lcd_writef(&lcd, 0, 3, "%s", GIT_HASH); + char name[64], ver[64]; + sys_get_distro(name, ver); + lcd_writef(&lcd, 0, 0, "%s %s", name, ver); + lcd_writef(&lcd, 0, 3, "linuxSmartie %s", GIT_HASH); lcd_flush_buf(&lcd); lcd_clear_buf(&lcd); struct timespec next; diff --git a/src/sys.c b/src/sys.c index fee405b..3e0c471 100644 --- a/src/sys.c +++ b/src/sys.c @@ -28,6 +28,19 @@ void sys_get_load_avg(double *load_avg) { getloadavg(load_avg, 3); } +void sys_get_distro(char* name, char* ver_str) { + char buf[128]; + FILE *f = fopen("/etc/os-release", "r"); + if (f == nullptr) + return; + + while (fgets(buf, sizeof(buf), f)) { + sscanf(buf, "NAME=\"%s\"", name); // NOLINT we live dangerously + sscanf(buf, "VERSION=\"%s\"", ver_str); // NOLINT (its not really that dangerous) + } + fclose(f); +} + void sys_get_ram(struct memory_t *ram) { char buf[64]; memset(ram, 0, sizeof(struct memory_t)); // zero out all values so we dont break out of the loop early