2021-02-18 22:25:36 +01:00
|
|
|
#include "fastfetch.h"
|
|
|
|
|
|
2021-02-19 18:02:36 +01:00
|
|
|
static void loadUnknownLogo(FFlogo* logo)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-02-19 18:02:36 +01:00
|
|
|
logo->width = 23;
|
|
|
|
|
logo->height = 18;
|
|
|
|
|
strcpy(logo->name, "unknown");
|
|
|
|
|
strcpy(logo->color, "");
|
|
|
|
|
strcpy(logo->chars[0], FASTFETCH_TEXT_MODIFIER_BOLT" ________ "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[1], FASTFETCH_TEXT_MODIFIER_BOLT" _jgN########Ngg_ "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[2], FASTFETCH_TEXT_MODIFIER_BOLT" _N##N@@\"\" \"\"9NN##Np_ "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[3], FASTFETCH_TEXT_MODIFIER_BOLT"d###P N####p"FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"\"^^\" T####"FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[5], FASTFETCH_TEXT_MODIFIER_BOLT" d###P"FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[6], FASTFETCH_TEXT_MODIFIER_BOLT" _g###@F "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[7], FASTFETCH_TEXT_MODIFIER_BOLT" _gN##@P "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[8], FASTFETCH_TEXT_MODIFIER_BOLT" gN###F\" "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT" d###F "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[10], FASTFETCH_TEXT_MODIFIER_BOLT" 0###F "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[11], FASTFETCH_TEXT_MODIFIER_BOLT" 0###F "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[12], FASTFETCH_TEXT_MODIFIER_BOLT" 0###F "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[13], FASTFETCH_TEXT_MODIFIER_BOLT" \"NN@' "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[14], FASTFETCH_TEXT_MODIFIER_BOLT" "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[15], FASTFETCH_TEXT_MODIFIER_BOLT" ___ "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[16], FASTFETCH_TEXT_MODIFIER_BOLT" q###r "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
strcpy(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT" \"\" "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
|
|
|
}
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
static void loadNoneLogo(FFlogo* logo)
|
2021-02-19 18:02:36 +01:00
|
|
|
{
|
2021-02-25 18:38:00 +01:00
|
|
|
logo->width = 0;
|
|
|
|
|
logo->height = 0;
|
|
|
|
|
strcpy(logo->name, "none");
|
|
|
|
|
strcpy(logo->color, "");
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
static void loadArchLogo(FFlogo* logo, bool doColor)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-02-25 18:38:00 +01:00
|
|
|
logo->width = 37;
|
|
|
|
|
logo->height = 20;
|
|
|
|
|
strcpy(logo->name, "arch");
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
const char* color = doColor ? "\033[36m" : "";
|
|
|
|
|
strcpy(logo->color, "\033[36m");
|
2021-02-19 18:02:36 +01:00
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
sprintf(logo->chars[0], FASTFETCH_TEXT_MODIFIER_BOLT"%s -` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[1], FASTFETCH_TEXT_MODIFIER_BOLT"%s -` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[2], FASTFETCH_TEXT_MODIFIER_BOLT"%s .o+` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[3], FASTFETCH_TEXT_MODIFIER_BOLT"%s `ooo/ "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"%s `+oooo: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[5], FASTFETCH_TEXT_MODIFIER_BOLT"%s `+oooooo: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[6], FASTFETCH_TEXT_MODIFIER_BOLT"%s -+oooooo+: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[7], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/:-:++oooo+: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[8], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/++++/+++++++: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/++++++++++++++: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[10], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/+++ooooooooooooo/` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[11], FASTFETCH_TEXT_MODIFIER_BOLT"%s ./ooosssso++osssssso+` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[12], FASTFETCH_TEXT_MODIFIER_BOLT"%s .oossssso-````/ossssss+` "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[13], FASTFETCH_TEXT_MODIFIER_BOLT"%s -osssssso. :ssssssso. "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[14], FASTFETCH_TEXT_MODIFIER_BOLT"%s :osssssss/ osssso+++. "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[15], FASTFETCH_TEXT_MODIFIER_BOLT"%s /ossssssss/ +ssssooo/- "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[16], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/ossssso+/:- -:/+osssso+- "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT"%s `+sso+:-` `.-/+oso: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[18], FASTFETCH_TEXT_MODIFIER_BOLT"%s`++:. `-/+/"FASTFETCH_TEXT_MODIFIER_RESET, color);
|
|
|
|
|
sprintf(logo->chars[19], FASTFETCH_TEXT_MODIFIER_BOLT"%s.` `/"FASTFETCH_TEXT_MODIFIER_RESET, color);
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
void ffLoadLogoSet(FFconfig* config, const char* logo)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-02-25 18:38:00 +01:00
|
|
|
if(strcasecmp(logo, "none") == 0)
|
|
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
loadNoneLogo(&config->logo);
|
|
|
|
|
config->logo_seperator = 0; //This is wanted in most cases, so just set it
|
2021-02-25 18:38:00 +01:00
|
|
|
}
|
|
|
|
|
else if(strcasecmp(logo, "arch") == 0)
|
2021-02-19 18:07:46 +01:00
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
loadArchLogo(&config->logo, config->colorLogo);
|
2021-02-19 18:07:46 +01:00
|
|
|
}
|
2021-02-18 22:25:36 +01:00
|
|
|
else
|
2021-02-19 18:07:46 +01:00
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
if(config->showErrors)
|
2021-02-19 18:07:46 +01:00
|
|
|
printf(FASTFETCH_TEXT_MODIFIER_ERROR"Error: unknown logo: %s"FASTFETCH_TEXT_MODIFIER_RESET"\n", logo);
|
2021-02-27 18:30:05 +01:00
|
|
|
loadUnknownLogo(&config->logo);
|
2021-02-19 18:07:46 +01:00
|
|
|
}
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
void ffLoadLogo(FFconfig* config)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
|
|
|
|
char id[256];
|
|
|
|
|
ffParsePropFile("/etc/os-release", "ID=%[^\n]", id);
|
2021-02-19 18:02:36 +01:00
|
|
|
if(id[0] == '\0')
|
|
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
if(config->showErrors)
|
2021-02-19 18:02:36 +01:00
|
|
|
puts(FASTFETCH_TEXT_MODIFIER_ERROR"Error: \"ID=%[^\\n]\" not found in \"/etc/os-release\""FASTFETCH_TEXT_MODIFIER_RESET);
|
2021-02-27 18:30:05 +01:00
|
|
|
loadUnknownLogo(&config->logo);
|
2021-02-19 18:02:36 +01:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
ffLoadLogoSet(config, id);
|
2021-02-19 18:02:36 +01:00
|
|
|
}
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
void ffPrintLogoLine(FFinstance* instance)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
for(int16_t i = 0; i < instance->config.offsetx; i++)
|
2021-02-25 18:38:00 +01:00
|
|
|
putchar(' ');
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
int16_t cut = instance->config.offsetx >= 0 ? 0 :
|
|
|
|
|
(instance->config.logo.width > instance->config.offsetx * -1 ? instance->config.offsetx * -1 : instance->config.logo.width);
|
2021-02-25 18:38:00 +01:00
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
if(instance->state.current_row < instance->config.logo.height)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
printf(instance->config.logo.chars[instance->state.current_row] + cut);
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2021-02-27 18:30:05 +01:00
|
|
|
for(uint8_t i = 0; i < instance->config.logo.width - cut; i++)
|
2021-02-18 22:25:36 +01:00
|
|
|
putchar(' ');
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
for(uint16_t i = 0; i < instance->config.logo_seperator; i++)
|
2021-02-18 22:25:36 +01:00
|
|
|
putchar(' ');
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
++instance->state.current_row;
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
2021-02-19 16:23:41 +01:00
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
#ifndef FASTFETCH_BUILD_FLASHFETCH
|
|
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
static FFlogo* getLogos(uint8_t* size, bool color)
|
|
|
|
|
{
|
|
|
|
|
#define FASTFETCH_LOGO_AMOUNT 3
|
|
|
|
|
|
|
|
|
|
*size = FASTFETCH_LOGO_AMOUNT;
|
|
|
|
|
static FFlogo logos[FASTFETCH_LOGO_AMOUNT];
|
|
|
|
|
|
|
|
|
|
#undef FASTFETCH_LOGO_AMOUNT
|
|
|
|
|
|
|
|
|
|
loadNoneLogo(&logos[0]);
|
|
|
|
|
loadUnknownLogo(&logos[1]);
|
|
|
|
|
loadArchLogo(&logos[2], color);
|
|
|
|
|
|
|
|
|
|
return logos;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-19 16:23:41 +01:00
|
|
|
void ffListLogos()
|
|
|
|
|
{
|
2021-02-19 18:02:36 +01:00
|
|
|
uint8_t size;
|
2021-02-25 18:38:00 +01:00
|
|
|
FFlogo* logos = getLogos(&size, false);
|
2021-02-19 18:02:36 +01:00
|
|
|
|
|
|
|
|
for(uint8_t i = 0; i < size; i++)
|
|
|
|
|
puts(logos[i].name);
|
2021-02-19 16:23:41 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-25 18:38:00 +01:00
|
|
|
void ffPrintLogos(bool doColor)
|
2021-02-19 16:23:41 +01:00
|
|
|
{
|
2021-02-19 18:02:36 +01:00
|
|
|
uint8_t size;
|
2021-02-25 18:38:00 +01:00
|
|
|
FFlogo* logos = getLogos(&size, doColor);
|
2021-02-19 18:02:36 +01:00
|
|
|
|
|
|
|
|
for(uint8_t i = 0; i < size; i++)
|
|
|
|
|
{
|
2021-02-25 18:38:00 +01:00
|
|
|
printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET":\n", doColor ? logos[i].color : "", logos[i].name);
|
2021-02-19 18:02:36 +01:00
|
|
|
for(uint8_t k = 0; k < logos[i].height; k++)
|
|
|
|
|
puts(logos[i].chars[k]);
|
|
|
|
|
putchar('\n');
|
|
|
|
|
}
|
2021-02-27 18:30:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|