解像度の追加

このコミットが含まれているのは:
守矢諏訪子 2024-06-19 22:53:46 +09:00
コミット b2155d447c
4個のファイルの変更70行の追加10行の削除

22
main.c
ファイルの表示

@ -12,6 +12,7 @@
#include "src/recording.h" #include "src/recording.h"
#endif #endif
#include "src/packages.h" #include "src/packages.h"
#include "src/resolution.h"
#include "src/cpu.h" #include "src/cpu.h"
#include "src/gpu.h" #include "src/gpu.h"
#include "src/memory.h" #include "src/memory.h"
@ -105,10 +106,12 @@ size_t logosize = 11;
lc++; lc++;
#if defined(__linux__) #if defined(__linux__)
printf("%s ", LOGO[lc]); if (display_distro() != NULL) {
printf("%s%s%s"RESET, color, "Distro", ": "); printf("%s ", LOGO[lc]);
printf("%s\n", display_distro()); printf("%s%s%s"RESET, color, "Distro", ": ");
lc++; printf("%s\n", display_distro());
lc++;
}
#endif #endif
printf("%s ", LOGO[lc]); printf("%s ", LOGO[lc]);
@ -142,6 +145,13 @@ size_t logosize = 11;
printf("\n"); printf("\n");
lc++; lc++;
if (display_resolution()) {
printf("%s ", LOGO[lc]);
printf("%s%s%s"RESET, color, "Resolution", ": ");
printf("%s\n", display_resolution());
lc++;
}
printf("%s ", LOGO[lc]); printf("%s ", LOGO[lc]);
printf("%s%s%s"RESET, color, "CPU", ": "); printf("%s%s%s"RESET, color, "CPU", ": ");
display_cpu(); display_cpu();
@ -166,13 +176,9 @@ size_t logosize = 11;
} }
// TODO: // TODO:
// * ロゴ
// * パッケージ
// * libc // * libc
// * シェル // * シェル
// * 解像度
// * 端末 // * 端末
// * GPU
// * ストレージ // * ストレージ
return 0; return 0;

ファイルの表示

@ -2,9 +2,9 @@
#define LOGO_COLORS_H #define LOGO_COLORS_H
#if defined(__OpenBSD__) || defined(__linux__) #if defined(__OpenBSD__) || defined(__linux__)
#define MIN_SIZE 11 #define MIN_SIZE 12
#else #else
#define MIN_SIZE 10 #define MIN_SIZE 11
#endif #endif
#define LOGO_SIZE 24 #define LOGO_SIZE 24

48
src/resolution.c ノーマルファイル
ファイルの表示

@ -0,0 +1,48 @@
#include "gpu.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
const char *run_res_command(const char *command) {
char buf[128];
char *out = NULL;
size_t outsize = 0;
FILE *p = popen(command, "r");
if (!p) {
fprintf(stderr, "解像度コマンドを実効に失敗: %s", command);
return NULL;
}
while (fgets(buf, sizeof(buf), p) != NULL) {
buf[strcspn(buf, "\n")] = '\0';
size_t len = strlen(buf);
char *nout = realloc(out, outsize + len + 1);
if (nout == NULL) {
perror("メモリの役割に失敗");
free(out);
pclose(p);
return NULL;
}
out = nout;
memccpy(out + outsize, buf, sizeof(buf), len);
outsize += len;
out[outsize] = '\0';
}
pclose(p);
return out;
}
const char *display_resolution() {
return run_res_command("xrandr --nograb --current | "
"awk -F 'connected |\\\\+|\\\\(' '/ "
"connected.*[0-9]+x[0-9]+\\+/ && $2 {printf $2 "
"\", \"}' | sed 's/primary //' | sed 's/,//'");
}

6
src/resolution.h ノーマルファイル
ファイルの表示

@ -0,0 +1,6 @@
#ifndef RESOLUTION_H
#define RESOLUTION_H
const char *display_resolution();
#endif