Improved gpu output customization (#195)

This commit is contained in:
TheDarkBug 2022-04-17 19:55:28 +02:00
parent 680d718d77
commit 904160f9df
3 changed files with 35 additions and 11 deletions

View file

@ -7,6 +7,8 @@ host=true
kernel=true kernel=true
cpu=true cpu=true
gpu=0 gpu=0
gpu=3
gpu=1
ram=true ram=true
resolution=true resolution=true
shell=true shell=true

View file

@ -53,6 +53,8 @@ host=true
kernel=true kernel=true
cpu=true cpu=true
gpu=0 gpu=0
gpu=3
gpu=1
ram=true ram=true
resolution=true resolution=true
shell=true shell=true

View file

@ -93,13 +93,16 @@ struct package_manager {
// all configuration flags available // all configuration flags available
struct configuration { struct configuration {
int ascii_image_flag, // when (0) ascii is printed, when (1) image is printed int
// when (0) ascii is printed, when (1) image is printed
ascii_image_flag,
show_user_info, // all the following flags are 1 (true) by default show_user_info, // all the following flags are 1 (true) by default
show_os, show_os,
show_host, show_host,
show_kernel, show_kernel,
show_cpu, show_cpu,
show_gpu, // if show_gpu[0] == -2, all gpus are shown, if == -3 no gpu is shown
show_gpu[256],
show_ram, show_ram,
show_resolution, show_resolution,
show_shell, show_shell,
@ -158,7 +161,12 @@ char* MOVE_CURSOR = "\033[18C";
// reads the config file // reads the config file
struct configuration parse_config(struct info* user_info) { struct configuration parse_config(struct info* user_info) {
char buffer[256]; // buffer for the current line char buffer[256]; // buffer for the current line
struct configuration config_flags = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; // enabling all flags by default // enabling all flags by default
struct configuration config_flags;
memset(&config_flags, 1, sizeof(config_flags));
memset(&config_flags.show_gpu, -1, 256 * sizeof(int)); // -1 means 'undefined'
config_flags.show_gpu[0] = -2; // show all gpus
config_flags.ascii_image_flag = 0;
FILE* config = NULL; // config file pointer FILE* config = NULL; // config file pointer
if (user_info->config_directory == NULL) { // if config directory is not set, try to open the default if (user_info->config_directory == NULL) { // if config directory is not set, try to open the default
@ -179,6 +187,8 @@ struct configuration parse_config(struct info* user_info) {
config = fopen(user_info->config_directory, "r"); config = fopen(user_info->config_directory, "r");
if (config == NULL) return config_flags; // if config file does not exist, return the defaults if (config == NULL) return config_flags; // if config file does not exist, return the defaults
int gpu_cfg_count = 0;
// reading the config file // reading the config file
while (fgets(buffer, sizeof(buffer), config)) { while (fgets(buffer, sizeof(buffer), config)) {
sscanf(buffer, "distro=%s", user_info->os_name); sscanf(buffer, "distro=%s", user_info->os_name);
@ -206,8 +216,12 @@ struct configuration parse_config(struct info* user_info) {
config_flags.show_kernel = strcmp(buffer, "false"); config_flags.show_kernel = strcmp(buffer, "false");
if (sscanf(buffer, "cpu=%[truefalse]", buffer)) if (sscanf(buffer, "cpu=%[truefalse]", buffer))
config_flags.show_cpu = strcmp(buffer, "false"); config_flags.show_cpu = strcmp(buffer, "false");
if (sscanf(buffer, "gpu=%[truefalse]", buffer)) if (sscanf(buffer, "gpu=%d", &config_flags.show_gpu[gpu_cfg_count])) // enabling single gpu
config_flags.show_gpu = strcmp(buffer, "false"); gpu_cfg_count++;
if (sscanf(buffer, "gpu=%[truefalse]", buffer)) { // enabling all gpus
if (strcmp(buffer, "false") == 0)
config_flags.show_gpu[0] = -3; // disable all gpus
}
if (sscanf(buffer, "ram=%[truefalse]", buffer)) if (sscanf(buffer, "ram=%[truefalse]", buffer))
config_flags.show_ram = strcmp(buffer, "false"); config_flags.show_ram = strcmp(buffer, "false");
if (sscanf(buffer, "resolution=%[truefalse]", buffer)) if (sscanf(buffer, "resolution=%[truefalse]", buffer))
@ -453,7 +467,6 @@ int print_info(struct configuration* config_flags, struct info* user_info) {
responsively_printf(print_buf, "%s%s%sOWOS %s%s", responsively_printf(print_buf, "%s%s%sOWOS %s%s",
MOVE_CURSOR, NORMAL, BOLD, NORMAL, MOVE_CURSOR, NORMAL, BOLD, NORMAL,
user_info->os_name); user_info->os_name);
// Comment this section, to get rid of the ¨To Be Filled By O.E.M.¨ text, if your computer hasn't had any OEM distributor filled in.
if (config_flags->show_host) if (config_flags->show_host)
responsively_printf(print_buf, "%s%s%sMOWODEL %s%s", responsively_printf(print_buf, "%s%s%sMOWODEL %s%s",
MOVE_CURSOR, NORMAL, BOLD, NORMAL, MOVE_CURSOR, NORMAL, BOLD, NORMAL,
@ -467,10 +480,17 @@ int print_info(struct configuration* config_flags, struct info* user_info) {
MOVE_CURSOR, NORMAL, BOLD, NORMAL, MOVE_CURSOR, NORMAL, BOLD, NORMAL,
user_info->cpu_model); user_info->cpu_model);
// print the gpus if (config_flags->show_gpu[0] == -2) { // print all gpu models
if (config_flags->show_gpu) for (int i = 0; i < 256 && user_info->gpu_model[i][0]; i++) {
for (int i = 0; user_info->gpu_model[i][0]; i++)
responsively_printf(print_buf, "%s%s%sGPUWU %s%s", MOVE_CURSOR, NORMAL, BOLD, NORMAL, user_info->gpu_model[i]); responsively_printf(print_buf, "%s%s%sGPUWU %s%s", MOVE_CURSOR, NORMAL, BOLD, NORMAL, user_info->gpu_model[i]);
}
} else if (config_flags->show_gpu[0] != -3) { // print only the configured gpu models
for (int i = 0; i < 256; i++) {
if (config_flags->show_gpu[i] >= 0)
if (user_info->gpu_model[config_flags->show_gpu[i]][0])
responsively_printf(print_buf, "%s%s%sGPUWU %s%s", MOVE_CURSOR, NORMAL, BOLD, NORMAL, user_info->gpu_model[config_flags->show_gpu[i]]);
}
}
if (config_flags->show_ram) // print ram if (config_flags->show_ram) // print ram
responsively_printf(print_buf, "%s%s%sWAM %s%i MiB/%i MiB", MOVE_CURSOR, NORMAL, BOLD, NORMAL, (user_info->ram_used), user_info->ram_total); responsively_printf(print_buf, "%s%s%sWAM %s%i MiB/%i MiB", MOVE_CURSOR, NORMAL, BOLD, NORMAL, (user_info->ram_used), user_info->ram_total);