diff --git a/completions/bash b/completions/bash index 0f3a9369c..a460b30dc 100644 --- a/completions/bash +++ b/completions/bash @@ -192,6 +192,7 @@ __fastfetch_completion() local FF_OPTIONS_LOGO=( "-l" "--logo" + "--logo-file" ) if __fastfetch_previous_matches "${FF_OPTIONS_SINGLE[@]}"; then diff --git a/src/common/logo.c b/src/common/logo.c index 6169e26c6..bd39a3a3b 100644 --- a/src/common/logo.c +++ b/src/common/logo.c @@ -302,28 +302,37 @@ static void loadLogoFromFile(FFlogo* logo, bool doColor, FFstrbuf* configColor, void ffLoadLogoSet(FFconfig* config, const char* logo) { - if(strcasecmp(logo, "none") == 0) - { - loadNoneLogo(&config->logo); - config->logo_spacing = 0; //This is wanted in most cases, so just set it + if(config->readLogoFromFile) { + ffLoadLogoFromFile(config, logo); + } else { + if(strcasecmp(logo, "none") == 0) + { + loadNoneLogo(&config->logo); + config->logo_spacing = 0; //This is wanted in most cases, so just set it + } + else if(strcasecmp(logo, "arch") == 0) + loadArchLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "artix") == 0) + loadArtixLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "ubuntu") == 0) + loadUbuntuLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "debian") == 0) + loadDebianLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "manjaro") == 0) + loadManjaroLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "void") == 0) + loadVoidLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "garuda") == 0) + loadGarudaLogo(&config->logo, config->colorLogo); + else if(strcasecmp(logo, "unknown") == 0) + loadUnknownLogo(&config->logo); + else + ffLoadLogoFromFile(config, logo); } - else if(strcasecmp(logo, "arch") == 0) - loadArchLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "artix") == 0) - loadArtixLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "ubuntu") == 0) - loadUbuntuLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "debian") == 0) - loadDebianLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "manjaro") == 0) - loadManjaroLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "void") == 0) - loadVoidLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "garuda") == 0) - loadGarudaLogo(&config->logo, config->colorLogo); - else if(strcasecmp(logo, "unknown") == 0) - loadUnknownLogo(&config->logo); - else if(access(logo, R_OK) == 0) +} + +void ffLoadLogoFromFile(FFconfig* config, const char* logo) { + if(access(logo, R_OK) == 0) loadLogoFromFile(&config->logo, config->colorLogo, &config->color, logo); else { diff --git a/src/fastfetch.c b/src/fastfetch.c index 1e23cef68..2b0bd255d 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -62,6 +62,7 @@ static inline void printHelp() "\n" "Logo options:\n" " -l , --logo : sets the shown logo. Also changes the main color accordingly\n" + " --logo-file : sets the path of the file to use as the logo\n" " --color-logo : if set to false, the logo will be black / white\n" "\n" "Format options: Provide the format string for custom output. Use fastfetch --help *-format for specific help.\n" @@ -789,8 +790,15 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con instance->config.allowSlowOperations = optionParseBoolean(value); else if(strcasecmp(key, "--structure") == 0) optionParseString(key, value, &data->structure); - else if(strcasecmp(key, "-l") == 0 || strcasecmp(key, "--logo") == 0) + else if(strcasecmp(key, "--logo-file") == 0) + { optionParseString(key, value, &data->logoName); + instance->config.readLogoFromFile = true; + } + else if(strcasecmp(key, "-l") == 0 || strcasecmp(key, "--logo") == 0) { + optionParseString(key, value, &data->logoName); + instance->config.readLogoFromFile = false; + } else if(strcasecmp(key, "-s") == 0 || strcasecmp(key, "--separator") == 0) optionParseString(key, value, &instance->config.separator); else if(strcasecmp(key, "-c") == 0 || strcasecmp(key, "--color") == 0) diff --git a/src/fastfetch.h b/src/fastfetch.h index 0cecc551b..a84f58017 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -41,6 +41,7 @@ typedef struct FFconfig int16_t offsetx; FFstrbuf color; uint32_t titleLength; + bool readLogoFromFile; bool colorLogo; bool showErrors; bool recache;