From 20dd2fa28f62bcfdcefb2a90234b248e0c6dc15b Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Sun, 24 Oct 2021 14:47:28 +0200 Subject: [PATCH] New fedora logo --- .gitignore | 2 + CMakeLists.txt | 1 + README.md | 2 +- src/common/logo.c | 81 +++++++++++++++++++++++++++------------ src/data/logos.txt | 15 ++++++++ src/fastfetch.c | 2 +- src/fastfetch.h | 1 - src/fastfetch_config.h.in | 7 +--- 8 files changed, 78 insertions(+), 33 deletions(-) create mode 100644 src/data/logos.txt diff --git a/.gitignore b/.gitignore index 972ebe282..d2a2da19d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ **/build/ **/.vscode/ **/.cache/ +**/.kdev4/ cscope.* tags +fastfetch.kdev4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4acf4ef62..2f7cda864 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ endfunction(fastfetch_load_text) fastfetch_load_text(src/data/structure.txt DATATEXT_STRUCTURE) fastfetch_load_text(src/data/config.txt DATATEXT_CONFIG) fastfetch_load_text(src/data/modules.txt DATATEXT_MODULES) +fastfetch_load_text(src/data/logos.txt DATATEXT_LOGOS) fastfetch_load_text(src/data/help.txt DATATEXT_HELP) fastfetch_load_text(src/data/help_color.txt DATATEXT_HELP_COLOR) fastfetch_load_text(src/data/help_format.txt DATATEXT_HELP_FORMAT) diff --git a/README.md b/README.md index ba9417a91..c239fd9aa 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ All categories not listed here should work without needing a specific implementa ##### Logos ``` -Arch, Artix, Debian, Fedora, Garuda, Gentoo, Manjaro, Mint, Pop!_OS, Ubuntu, Void +Arch, Artix, Debian, Fedora, Fedora old, Garuda, Gentoo, Manjaro, Mint, Pop!_OS, Ubuntu, Void ``` > **_NOTE:_** Unknown/unsupported logos will be replaced with a question mark when running fastfetch. diff --git a/src/common/logo.c b/src/common/logo.c index ff25614f1..6ba6bb615 100644 --- a/src/common/logo.c +++ b/src/common/logo.c @@ -1,5 +1,6 @@ #include "fastfetch.h" +#include #include #include @@ -124,6 +125,32 @@ static void initLogoDebian(FFinstance* instance) } static void initLogoFedora(FFinstance* instance) +{ + instance->config.logo.lines = + "$1 .',;::::;,'. \n" + "$1 .';:cccccccccccc:;,. \n" + "$1 .;cccccccccccccccccccccc;. \n" + "$1 .:cccccccccccccccccccccccccc:. \n" + "$1 .;ccccccccccccc;$2.:dddl:.$1;ccccccc;. \n" + "$1 .:ccccccccccccc;$2OWMKOOXMWd$1;ccccccc:. \n" + "$1.:ccccccccccccc;$2KMMc$1;cc;$2xMMc$1;ccccccc:.\n" + "$1,cccccccccccccc;$2MMM.$1;cc;$2;WW:$1;cccccccc,\n" + "$1:cccccccccccccc;$2MMM.$1;cccccccccccccccc:\n" + "$1:ccccccc;$2oxOOOo$1;$2MMM000k.$1;cccccccccccc:\n" + "$1cccccc;$20MMKxdd:$1;$2MMMkddc.$1;cccccccccccc;\n" + "$1ccccc;$2XMO'$1;cccc;$2MMM.$1;cccccccccccccccc'\n" + "$1ccccc;$2MMo$1;ccccc;$2MMW.$1;ccccccccccccccc; \n" + "$1ccccc;$20MNc.$1ccc$2.xMMd$1;ccccccccccccccc; \n" + "$1cccccc;$2dNMWXXXWM0:$1;cccccccccccccc:, \n" + "$1cccccccc;$2.:odl:.$1;cccccccccccccc:,. \n" + "$1ccccccccccccccccccccccccccccc:'. \n" + "$1:ccccccccccccccccccccccc:;,.. \n" + "$1 ':cccccccccccccccc::;,. "; + instance->config.logo.colors[0] = "\033[34m"; //blue + instance->config.logo.colors[1] = "\033[37m"; //white +} + +static void initLogoFedoraOld(FFinstance* instance) { instance->config.logo.lines = "$1 /:-------------:\\ \n" @@ -348,6 +375,8 @@ static bool loadLogoSet(FFinstance* instance, const char* logo) initLogoDebian(instance); else if(strcasecmp(logo, "fedora") == 0) initLogoFedora(instance); + else if(strcasecmp(logo, "fedora_old") == 0) + initLogoFedoraOld(instance); else if(strcasecmp(logo, "garuda") == 0) initLogoGaruda(instance); else if(strcasecmp(logo, "gentoo") == 0) @@ -390,15 +419,39 @@ void ffLoadLogoSet(FFinstance* instance, const char* logo) instance->config.logo.lines = logoChars.chars; } +static bool loadLogoSetWithVersion(FFinstance* instance, const FFstrbuf* versionID, const FFstrbuf* name) +{ + bool isFedora = ffStrbufIgnCaseCompS(name, "fedora") == 0; + + if(versionID->length == 0 || ( + !isFedora + )) return loadLogoSet(instance, name->chars); + + long version = strtol(versionID->chars, NULL, 10); + if(version == 0 || version == LONG_MAX || version == LONG_MIN) + return loadLogoSet(instance, name->chars); + + if(isFedora) + { + if(version > 34) + return loadLogoSet(instance, "fedora"); + else + return loadLogoSet(instance, "fedora_old"); + } + + //This should never happen, but just in case... + return loadLogoSet(instance, name->chars); +} + void ffLoadLogo(FFinstance* instance) { const FFOSResult* result = ffDetectOS(instance); if( - !loadLogoSet(instance, result->name.chars) && - !loadLogoSet(instance, result->id.chars) && - !loadLogoSet(instance, result->systemName.chars) && - !loadLogoSet(instance, result->idLike.chars) + !loadLogoSetWithVersion(instance, &result->versionID, &result->name) && + !loadLogoSetWithVersion(instance, &result->versionID, &result->id) && + !loadLogoSetWithVersion(instance, &result->versionID, &result->systemName) && + !loadLogoSetWithVersion(instance, &result->versionID, &result->idLike) ) initLogoUnknown(instance); } @@ -533,26 +586,6 @@ void ffPrintRemainingLogo(FFinstance* instance) #ifndef FASTFETCH_BUILD_FLASHFETCH -void ffListLogos() -{ - puts( - "none\n" - "unknown\n" - "arch\n" - "artix\n" - "celos\n" - "debian\n" - "fedora\n" - "garuda\n" - "gentoo\n" - "manjaro\n" - "mint\n" - "pop\n" - "ubuntu\n" - "void" - ); -} - void ffPrintLogos(FFinstance* instance) { #define FF_LOGO_PRINT(name, loadFunction) \ diff --git a/src/data/logos.txt b/src/data/logos.txt new file mode 100644 index 000000000..751d6881a --- /dev/null +++ b/src/data/logos.txt @@ -0,0 +1,15 @@ +none +unknown +arch +artix +celos +debian +fedora +fedora_old +garuda +gentoo +manjaro +mint +pop +ubuntu +void diff --git a/src/fastfetch.c b/src/fastfetch.c index f87ede772..38eb24ea2 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -512,7 +512,7 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con } else if(strcasecmp(key, "--list-logos") == 0) { - ffListLogos(); + fputs(FASTFETCH_DATATEXT_LOGOS, stdout); exit(0); } else if(strcasecmp(key, "--print-logos") == 0) diff --git a/src/fastfetch.h b/src/fastfetch.h index cff2604a7..6ef9e4928 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -311,7 +311,6 @@ void ffPrintLogoLine(FFinstance* instance); void ffPrintRemainingLogo(FFinstance* instance); #ifndef FASTFETCH_BUILD_FLASHFATCH - void ffListLogos(); void ffPrintLogos(FFinstance* instance); #endif diff --git a/src/fastfetch_config.h.in b/src/fastfetch_config.h.in index 2c4a7bee7..583a080b2 100644 --- a/src/fastfetch_config.h.in +++ b/src/fastfetch_config.h.in @@ -4,21 +4,16 @@ #define FASTFETCH_PROJECT_NAME "@PROJECT_NAME@" #define FASTFETCH_PROJECT_VERSION "@PROJECT_VERSION@" -#ifndef FASTFETCH_BUILD_FLASHFETCH - #define FASTFETCH_DATATEXT_STRUCTURE "@DATATEXT_STRUCTURE@" #define FASTFETCH_DATATEXT_CONFIG "@DATATEXT_CONFIG@" //Requires FASTFETCH_PROJECT_VERSION and FASTFETCH_DATATEXT_STRUCTURE to be set #define FASTFETCH_DATATEXT_MODULES "@DATATEXT_MODULES@" +#define FASTFETCH_DATATEXT_LOGOS "@DATATEXT_LOGOS@" #define FASTFETCH_DATATEXT_HELP "@DATATEXT_HELP@" #define FASTFETCH_DATATEXT_HELP_COLOR "@DATATEXT_HELP_COLOR@" #define FASTFETCH_DATATEXT_HELP_FORMAT "@DATATEXT_HELP_FORMAT@" #define FASTFETCH_DATATEXT_HELP_CONFIG "@DATATEXT_HELP_CONFIG@" -#else - //Needed for flashfetch logo #define FASTFETCH_BUILD_DISTRIBUTION_ID "@BUILD_DISTRIBUTION_ID@" -#endif - #endif // FASTFETCH_INDLUDED_fastfetch_config_h_in