mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
Logo: fix while chars not visible in terminal of light theme
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include "common/parsing.h"
|
||||
#include "common/thread.h"
|
||||
#include "detection/displayserver/displayserver.h"
|
||||
#include "detection/terminaltheme/terminaltheme.h"
|
||||
#include "util/textModifier.h"
|
||||
#include "logo/logo.h"
|
||||
|
||||
@@ -22,10 +23,18 @@ static void initState(FFstate* state)
|
||||
state->logoWidth = 0;
|
||||
state->logoHeight = 0;
|
||||
state->keysHeight = 0;
|
||||
state->terminalLightTheme = false;
|
||||
|
||||
ffPlatformInit(&state->platform);
|
||||
state->configDoc = NULL;
|
||||
state->resultDoc = NULL;
|
||||
|
||||
{
|
||||
// don't enable bright color if the terminal is in light mode
|
||||
FFTerminalThemeResult result;
|
||||
if (ffDetectTerminalTheme(&result, true /* forceEnv for performance */) && !result.bg.dark)
|
||||
state->terminalLightTheme = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void defaultConfig(void)
|
||||
|
||||
@@ -74,17 +74,17 @@ static bool detectByEnv(FFTerminalThemeResult* result)
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline bool detectColor(FFTerminalThemeResult* result)
|
||||
static inline bool detectColor(FFTerminalThemeResult* result, bool forceEnv)
|
||||
{
|
||||
if (detectByEscapeCode(result))
|
||||
if (!forceEnv && detectByEscapeCode(result))
|
||||
return true;
|
||||
|
||||
return detectByEnv(result);
|
||||
}
|
||||
|
||||
bool ffDetectTerminalTheme(FFTerminalThemeResult* result)
|
||||
bool ffDetectTerminalTheme(FFTerminalThemeResult* result, bool forceEnv)
|
||||
{
|
||||
if (!detectColor(result)) return false;
|
||||
if (!detectColor(result, forceEnv)) return false;
|
||||
result->fg.dark = result->fg.r * 299 + result->fg.g * 587 + result->fg.b * 114 < 128000;
|
||||
result->bg.dark = result->bg.r * 299 + result->bg.g * 587 + result->bg.b * 114 < 128000;
|
||||
return true;
|
||||
|
||||
@@ -16,4 +16,4 @@ typedef struct FFTerminalThemeResult
|
||||
FFTerminalThemeColor bg;
|
||||
} FFTerminalThemeResult;
|
||||
|
||||
bool ffDetectTerminalTheme(FFTerminalThemeResult* result);
|
||||
bool ffDetectTerminalTheme(FFTerminalThemeResult* result, bool forceEnv);
|
||||
|
||||
@@ -43,6 +43,7 @@ typedef struct FFstate
|
||||
uint32_t logoWidth;
|
||||
uint32_t logoHeight;
|
||||
uint32_t keysHeight;
|
||||
bool terminalLightTheme;
|
||||
|
||||
FFPlatform platform;
|
||||
yyjson_doc* configDoc;
|
||||
|
||||
@@ -13,7 +13,7 @@ void ffPrintTerminalTheme(FFTerminalThemeOptions* options)
|
||||
{
|
||||
FFTerminalThemeResult result = {};
|
||||
|
||||
if(!ffDetectTerminalTheme(&result))
|
||||
if(!ffDetectTerminalTheme(&result, false))
|
||||
{
|
||||
ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Failed to detect terminal theme");
|
||||
}
|
||||
@@ -81,7 +81,7 @@ void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* option
|
||||
{
|
||||
FFTerminalThemeResult result = {};
|
||||
|
||||
if(!ffDetectTerminalTheme(&result))
|
||||
if(!ffDetectTerminalTheme(&result, false))
|
||||
{
|
||||
yyjson_mut_obj_add_str(doc, module, "error", "Failed to detect terminal theme");
|
||||
return;
|
||||
|
||||
@@ -364,7 +364,7 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
|
||||
ffStrbufInit(&options->colorTitle);
|
||||
ffStrbufInit(&options->colorOutput);
|
||||
ffStrbufInit(&options->colorSeparator);
|
||||
options->brightColor = true;
|
||||
options->brightColor = !instance.state.terminalLightTheme;
|
||||
ffStrbufInitStatic(&options->keyValueSeparator, ": ");
|
||||
|
||||
options->showErrors = false;
|
||||
@@ -387,8 +387,8 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
|
||||
options->tempUnit = FF_TEMPERATURE_UNIT_CELSIUS;
|
||||
options->tempNdigits = 1;
|
||||
ffStrbufInitStatic(&options->tempColorGreen, FF_COLOR_FG_GREEN);
|
||||
ffStrbufInitStatic(&options->tempColorYellow, FF_COLOR_FG_LIGHT_YELLOW);
|
||||
ffStrbufInitStatic(&options->tempColorRed, FF_COLOR_FG_LIGHT_RED);
|
||||
ffStrbufInitStatic(&options->tempColorYellow, instance.state.terminalLightTheme ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_LIGHT_YELLOW);
|
||||
ffStrbufInitStatic(&options->tempColorRed, instance.state.terminalLightTheme ? FF_COLOR_FG_RED : FF_COLOR_FG_LIGHT_RED);
|
||||
|
||||
ffStrbufInitStatic(&options->barCharElapsed, "■");
|
||||
ffStrbufInitStatic(&options->barCharTotal, "-");
|
||||
@@ -397,8 +397,8 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
|
||||
options->percentType = 9;
|
||||
options->percentNdigits = 0;
|
||||
ffStrbufInitStatic(&options->percentColorGreen, FF_COLOR_FG_GREEN);
|
||||
ffStrbufInitStatic(&options->percentColorYellow, FF_COLOR_FG_LIGHT_YELLOW);
|
||||
ffStrbufInitStatic(&options->percentColorRed, FF_COLOR_FG_LIGHT_RED);
|
||||
ffStrbufInitStatic(&options->percentColorYellow, instance.state.terminalLightTheme ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_LIGHT_YELLOW);
|
||||
ffStrbufInitStatic(&options->percentColorRed, instance.state.terminalLightTheme ? FF_COLOR_FG_RED : FF_COLOR_FG_LIGHT_RED);
|
||||
|
||||
options->tsVersion = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user