mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2025-02-20 11:43:27 +08:00
no color options
This commit is contained in:
parent
3d902c1c86
commit
16239be51c
@ -19,7 +19,7 @@ set(PROJECT_VERSION "r${GIT_REV_LIST}.${GIT_REV_PARSE}")
|
|||||||
|
|
||||||
include (${CMAKE_ROOT}/Modules/FindX11.cmake)
|
include (${CMAKE_ROOT}/Modules/FindX11.cmake)
|
||||||
|
|
||||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -march=native -O3 -pipe -fno-plt") # for testing
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -march=native -O3 -pipe -fno-plt") # for testing
|
||||||
|
|
||||||
configure_file(src/fastfetch_config.h.in fastfetch_config.h)
|
configure_file(src/fastfetch_config.h.in fastfetch_config.h)
|
||||||
include_directories(${PROJECT_BINARY_DIR})
|
include_directories(${PROJECT_BINARY_DIR})
|
||||||
|
@ -186,6 +186,9 @@ static void printHelp()
|
|||||||
" -l <name>, --logo <name>: sets the shown logo. Also changes the main color accordingly\n"
|
" -l <name>, --logo <name>: sets the shown logo. Also changes the main color accordingly\n"
|
||||||
" -c <color>, --color <color>: sets the color of the keys. Must be a linux console color code\n"
|
" -c <color>, --color <color>: sets the color of the keys. Must be a linux console color code\n"
|
||||||
" -s <width>, --seperator <width>: sets the distance between logo and text\n"
|
" -s <width>, --seperator <width>: sets the distance between logo and text\n"
|
||||||
|
" -x <offset>, --offsetx <offset>: sets the x offset. Can be negative to cut the logo, but no more than logo width.\n"
|
||||||
|
" --no-color: disables all colors. This MUST be before -l/--logo or --print-logos\n"
|
||||||
|
" --no-color-logo: disables the coloring of the logo. This MUST be before -l/--logo or --print-logos\n"
|
||||||
" -r --recache: dont use cached values and generate new ones\n"
|
" -r --recache: dont use cached values and generate new ones\n"
|
||||||
" --show-errors: if an error occurs, show it instead of discarding the category\n"
|
" --show-errors: if an error occurs, show it instead of discarding the category\n"
|
||||||
" --list-logos: lists the names of available logos and exits\n"
|
" --list-logos: lists the names of available logos and exits\n"
|
||||||
@ -218,19 +221,22 @@ static void printCommandHelp(const char* command)
|
|||||||
|
|
||||||
static void initState(FFstate* state)
|
static void initState(FFstate* state)
|
||||||
{
|
{
|
||||||
ffLoadLogo(state); //also sets color
|
|
||||||
state->current_row = 0;
|
state->current_row = 0;
|
||||||
state->passwd = getpwuid(getuid());
|
state->passwd = getpwuid(getuid());
|
||||||
uname(&state->utsname);
|
uname(&state->utsname);
|
||||||
sysinfo(&state->sysinfo);
|
sysinfo(&state->sysinfo);
|
||||||
state->logo_seperator = 4;
|
state->logo_seperator = 4;
|
||||||
|
state->offsetx = 0;
|
||||||
state->titleLength = 20; // This is overwritten by ffPrintTitle
|
state->titleLength = 20; // This is overwritten by ffPrintTitle
|
||||||
|
state->colorLogo = true;
|
||||||
state->showErrors = false;
|
state->showErrors = false;
|
||||||
state->recache = false;
|
state->recache = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parseArguments(int argc, char** argv, FFstate* state)
|
static void parseArguments(int argc, char** argv, FFstate* state)
|
||||||
{
|
{
|
||||||
|
bool colorText = true;
|
||||||
|
|
||||||
for(int i = 1; i < argc; i++)
|
for(int i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
if(strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0)
|
if(strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0)
|
||||||
@ -254,7 +260,7 @@ static void parseArguments(int argc, char** argv, FFstate* state)
|
|||||||
}
|
}
|
||||||
else if(strcmp(argv[i], "--print-logos") == 0)
|
else if(strcmp(argv[i], "--print-logos") == 0)
|
||||||
{
|
{
|
||||||
ffPrintLogos();
|
ffPrintLogos(state->colorLogo);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else if(strcmp(argv[i], "--show-errors") == 0)
|
else if(strcmp(argv[i], "--show-errors") == 0)
|
||||||
@ -302,16 +308,45 @@ static void parseArguments(int argc, char** argv, FFstate* state)
|
|||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
else if(strcmp(argv[i], "-x") == 0 || strcmp(argv[i], "--offsetx") == 0)
|
||||||
|
{
|
||||||
|
if(i == argc -1)
|
||||||
|
{
|
||||||
|
printf("Error: usage: %s <offset>\n", argv[i]);
|
||||||
|
exit(46);
|
||||||
|
}
|
||||||
|
if(sscanf(argv[i + 1], "%hi", &state->offsetx) != 1)
|
||||||
|
{
|
||||||
|
printf("Error: couldn't parse %s to int16_t\n", argv[i + 1]);
|
||||||
|
exit(47);
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
else if(strcmp(argv[i], "-r") == 0 || strcmp(argv[i], "--recache") == 0)
|
else if(strcmp(argv[i], "-r") == 0 || strcmp(argv[i], "--recache") == 0)
|
||||||
{
|
{
|
||||||
state->recache = true;
|
state->recache = true;
|
||||||
}
|
}
|
||||||
|
else if(strcmp(argv[i], "--no-color") == 0)
|
||||||
|
{
|
||||||
|
colorText = false;
|
||||||
|
state->colorLogo = false;
|
||||||
|
}
|
||||||
|
else if(strcmp(argv[i], "--no-color-logo") == 0)
|
||||||
|
{
|
||||||
|
state->colorLogo = false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Error: unknown option: %s\n", argv[i]);
|
printf("Error: unknown option: %s\n", argv[i]);
|
||||||
exit(40);
|
exit(40);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ffLoadLogo(state); //We need to do this here, because of --no-color
|
||||||
|
if(colorText)
|
||||||
|
strcpy(state->color, state->logo.color);
|
||||||
|
else
|
||||||
|
state->color[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
|
@ -36,8 +36,10 @@ typedef struct FFstate
|
|||||||
//Configuration stuff
|
//Configuration stuff
|
||||||
FFlogo logo;
|
FFlogo logo;
|
||||||
uint16_t logo_seperator;
|
uint16_t logo_seperator;
|
||||||
|
int16_t offsetx;
|
||||||
char color[32];
|
char color[32];
|
||||||
uint8_t titleLength;
|
uint8_t titleLength;
|
||||||
|
bool colorLogo;
|
||||||
bool showErrors;
|
bool showErrors;
|
||||||
bool recache;
|
bool recache;
|
||||||
|
|
||||||
@ -61,7 +63,7 @@ void ffPrintAndSaveCachedValue(FFstate* state, const char* key, const char* valu
|
|||||||
void ffLoadLogoSet(FFstate* state, const char* logo);
|
void ffLoadLogoSet(FFstate* state, const char* logo);
|
||||||
void ffLoadLogo(FFstate* state);
|
void ffLoadLogo(FFstate* state);
|
||||||
void ffListLogos();
|
void ffListLogos();
|
||||||
void ffPrintLogos();
|
void ffPrintLogos(bool color);
|
||||||
|
|
||||||
void ffPrintBreak(FFstate* state);
|
void ffPrintBreak(FFstate* state);
|
||||||
void ffPrintTitle(FFstate* state);
|
void ffPrintTitle(FFstate* state);
|
||||||
|
111
src/logo.c
111
src/logo.c
@ -28,54 +28,55 @@ static void loadUnknownLogo(FFlogo* logo)
|
|||||||
strcpy(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT" \"\" "FASTFETCH_TEXT_MODIFIER_RESET);
|
strcpy(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT" \"\" "FASTFETCH_TEXT_MODIFIER_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadArchLogo(FFlogo* logo)
|
static void loadNoneLogo(FFlogo* logo)
|
||||||
|
{
|
||||||
|
logo->width = 0;
|
||||||
|
logo->height = 0;
|
||||||
|
strcpy(logo->name, "none");
|
||||||
|
strcpy(logo->color, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void loadArchLogo(FFlogo* logo, bool doColor)
|
||||||
{
|
{
|
||||||
logo->width = 37;
|
logo->width = 37;
|
||||||
logo->height = 20;
|
logo->height = 20;
|
||||||
strcpy(logo->name, "arch");
|
strcpy(logo->name, "arch");
|
||||||
|
|
||||||
|
const char* color = doColor ? "\033[36m" : "";
|
||||||
strcpy(logo->color, "\033[36m");
|
strcpy(logo->color, "\033[36m");
|
||||||
strcpy(logo->chars[0], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m -` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[1], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m -` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[2], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m .o+` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[3], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `ooo/ "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `+oooo: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[5], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `+oooooo: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[6], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m -+oooooo+: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[7], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `/:-:++oooo+: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[8], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `/++++/+++++++: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `/++++++++++++++: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[10], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `/+++ooooooooooooo/` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[11], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m ./ooosssso++osssssso+` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[12], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m .oossssso-````/ossssss+` "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[13], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m -osssssso. :ssssssso. "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[14], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m :osssssss/ osssso+++. "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[15], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m /ossssssss/ +ssssooo/- "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[16], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `/ossssso+/:- -:/+osssso+- "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[17], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m `+sso+:-` `.-/+oso: "FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[18], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m`++:. `-/+/"FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
strcpy(logo->chars[19], FASTFETCH_TEXT_MODIFIER_BOLT"\033[36m.` `/"FASTFETCH_TEXT_MODIFIER_RESET);
|
|
||||||
}
|
|
||||||
|
|
||||||
static FFlogo* getLogos(uint8_t* size)
|
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);
|
||||||
#define FASTFETCH_LOGO_AMOUNT 2
|
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);
|
||||||
*size = FASTFETCH_LOGO_AMOUNT;
|
sprintf(logo->chars[4], FASTFETCH_TEXT_MODIFIER_BOLT"%s `+oooo: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
||||||
static FFlogo logos[FASTFETCH_LOGO_AMOUNT];
|
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);
|
||||||
#undef FASTFETCH_LOGO_AMOUNT
|
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);
|
||||||
loadUnknownLogo(&logos[0]);
|
sprintf(logo->chars[9], FASTFETCH_TEXT_MODIFIER_BOLT"%s `/++++++++++++++: "FASTFETCH_TEXT_MODIFIER_RESET, color);
|
||||||
loadArchLogo(&logos[1]);
|
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);
|
||||||
return logos;
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ffLoadLogoSet(FFstate* state, const char* logo)
|
void ffLoadLogoSet(FFstate* state, const char* logo)
|
||||||
{
|
{
|
||||||
if(strcmp(logo, "arch") == 0)
|
if(strcasecmp(logo, "none") == 0)
|
||||||
{
|
{
|
||||||
loadArchLogo(&state->logo);
|
loadNoneLogo(&state->logo);
|
||||||
|
state->logo_seperator = 0; //This is wanted in most cases, so just set it
|
||||||
|
}
|
||||||
|
else if(strcasecmp(logo, "arch") == 0)
|
||||||
|
{
|
||||||
|
loadArchLogo(&state->logo, state->colorLogo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -83,8 +84,6 @@ void ffLoadLogoSet(FFstate* state, const char* logo)
|
|||||||
printf(FASTFETCH_TEXT_MODIFIER_ERROR"Error: unknown logo: %s"FASTFETCH_TEXT_MODIFIER_RESET"\n", logo);
|
printf(FASTFETCH_TEXT_MODIFIER_ERROR"Error: unknown logo: %s"FASTFETCH_TEXT_MODIFIER_RESET"\n", logo);
|
||||||
loadUnknownLogo(&state->logo);
|
loadUnknownLogo(&state->logo);
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(state->color, state->logo.color);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ffLoadLogo(FFstate* state)
|
void ffLoadLogo(FFstate* state)
|
||||||
@ -105,13 +104,19 @@ void ffLoadLogo(FFstate* state)
|
|||||||
|
|
||||||
void ffPrintLogoLine(FFstate* state)
|
void ffPrintLogoLine(FFstate* state)
|
||||||
{
|
{
|
||||||
|
for(int16_t i = 0; i < state->offsetx; i++)
|
||||||
|
putchar(' ');
|
||||||
|
|
||||||
|
int16_t cut = state->offsetx >= 0 ? 0 :
|
||||||
|
(state->logo.width > state->offsetx * -1 ? state->offsetx * -1 : state->logo.width);
|
||||||
|
|
||||||
if(state->current_row < state->logo.height)
|
if(state->current_row < state->logo.height)
|
||||||
{
|
{
|
||||||
printf(state->logo.chars[state->current_row]);
|
printf(state->logo.chars[state->current_row] + cut);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(uint8_t i = 0; i < state->logo.width; i++)
|
for(uint8_t i = 0; i < state->logo.width - cut; i++)
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,23 +126,39 @@ void ffPrintLogoLine(FFstate* state)
|
|||||||
++state->current_row;
|
++state->current_row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
void ffListLogos()
|
void ffListLogos()
|
||||||
{
|
{
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
FFlogo* logos = getLogos(&size);
|
FFlogo* logos = getLogos(&size, false);
|
||||||
|
|
||||||
for(uint8_t i = 0; i < size; i++)
|
for(uint8_t i = 0; i < size; i++)
|
||||||
puts(logos[i].name);
|
puts(logos[i].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ffPrintLogos()
|
void ffPrintLogos(bool doColor)
|
||||||
{
|
{
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
FFlogo* logos = getLogos(&size);
|
FFlogo* logos = getLogos(&size, doColor);
|
||||||
|
|
||||||
for(uint8_t i = 0; i < size; i++)
|
for(uint8_t i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET":\n", logos[i].color, logos[i].name);
|
printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET":\n", doColor ? logos[i].color : "", logos[i].name);
|
||||||
for(uint8_t k = 0; k < logos[i].height; k++)
|
for(uint8_t k = 0; k < logos[i].height; k++)
|
||||||
puts(logos[i].chars[k]);
|
puts(logos[i].chars[k]);
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user