diff options
-rw-r--r-- | main.c | 7 | ||||
-rw-r--r-- | src/gpu.c | 28 | ||||
-rw-r--r-- | src/gpu.h | 6 | ||||
-rw-r--r-- | src/logo/openbsd.h | 1 |
4 files changed, 42 insertions, 0 deletions
@@ -14,6 +14,7 @@ #endif #include "src/packages.h" #include "src/cpu.h" +#include "src/gpu.h" #include "src/memory.h" const char *sofname = "farfetch"; @@ -127,6 +128,12 @@ int main(int argc, char *argv[]) { lc++; printf("%s ", LOGO[lc]); + printf(COLOR"%s%s"RESET, "GPU", ": "); + display_gpu(); + printf("\n"); + lc++; + + printf("%s ", LOGO[lc]); printf(COLOR"%s%s"RESET, "Memory", ": "); display_memory(); printf("\n"); diff --git a/src/gpu.c b/src/gpu.c new file mode 100644 index 0000000..168fe23 --- /dev/null +++ b/src/gpu.c @@ -0,0 +1,28 @@ +#include "gpu.h" + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +void run_gpu_command(const char *command) { + char buf[128]; + + FILE *p = popen(command, "r"); + if (!p) { + fprintf(stderr, "GPUコマンドを実効に失敗: %s", command); + return; + } + + while (fgets(buf, sizeof(buf), p) != NULL) { + buf[strcspn(buf, "\n")] = '\0'; + printf("%s", buf); + } + + pclose(p); +} + +void display_gpu() { + run_gpu_command("glxinfo -B | grep -F 'OpenGL renderer string' | " + "sed 's/OpenGL renderer string: //' | sed 's/Mesa //' | " + "sed 's/DRI //' | sed 's/(R)//' | sed 's/(.*$//'"); +} diff --git a/src/gpu.h b/src/gpu.h new file mode 100644 index 0000000..0db6e79 --- /dev/null +++ b/src/gpu.h @@ -0,0 +1,6 @@ +#ifndef GPU_H +#define GPU_H + +void display_gpu(); + +#endif diff --git a/src/logo/openbsd.h b/src/logo/openbsd.h index bbd4df4..4c6c2c5 100644 --- a/src/logo/openbsd.h +++ b/src/logo/openbsd.h @@ -43,5 +43,6 @@ YELLOW " / \\ / " RESET, YELLOW " /-_____-\\ " RESET, YELLOW " " RESET, YELLOW " " RESET, +YELLOW " " RESET, YELLOW " " RESET }; |