From f148dbacfbdb17152cde9a46d1dee24aff5a8dd2 Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Thu, 17 Jun 2021 13:49:25 +0200 Subject: [PATCH] Disable linewrap and hide cursor by default --- completions/bash | 2 ++ src/common/format.c | 1 - src/common/init.c | 17 +++++++++++++++++ src/fastfetch.c | 8 ++++++++ src/fastfetch.h | 3 +++ src/flashfetch.c | 3 +++ 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/completions/bash b/completions/bash index 483806873..0b8988ad9 100644 --- a/completions/bash +++ b/completions/bash @@ -119,6 +119,8 @@ __fastfetch_completion() "--print-remaining-logo" "--multithreading" "--allow-slow-operations" + "--disable-linewrap" + "--hide-cursor" ) local FF_OPTIONS_STRING=( diff --git a/src/common/format.c b/src/common/format.c index 1d14d521b..1c618b894 100644 --- a/src/common/format.c +++ b/src/common/format.c @@ -27,7 +27,6 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg) else if(formatarg->type != FF_FORMAT_ARG_TYPE_NULL) { fprintf(stderr, "Error: format string \"%s\": argument is not implemented: %i\n", buffer->chars, formatarg->type); - exit(806); } } diff --git a/src/common/init.c b/src/common/init.c index 9c96473b4..7c88cc146 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -108,6 +108,8 @@ static void defaultConfig(FFinstance* instance) instance->config.cacheSave = true; instance->config.printRemainingLogo = true; instance->config.allowSlowOperations = false; + instance->config.disableLinewrap = true; + instance->config.hideCursor = true; //This is basically the none logo for(uint8_t i = 0; i < sizeof(instance->config.logo.colors) / sizeof(instance->config.logo.colors[0]); ++i) @@ -181,6 +183,15 @@ void ffInitInstance(FFinstance* instance) ffCacheValidate(instance); } +void ffStart(FFinstance* instance) +{ + if(instance->config.hideCursor) + fputs("\033[?25l", stdout); + + if(instance->config.disableLinewrap) + fputs("\033[?7l", stdout); +} + static void ffCleanup(FFinstance* instance) { UNUSED(instance); @@ -194,5 +205,11 @@ void ffFinish(FFinstance* instance) if(instance->config.printRemainingLogo) ffPrintRemainingLogo(instance); + if(instance->config.disableLinewrap) + fputs("\033[?7h", stdout); + + if(instance->config.hideCursor) + fputs("\033[?25h", stdout); + ffCleanup(instance); } diff --git a/src/fastfetch.c b/src/fastfetch.c index 2b4e8da76..670b40887 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -59,6 +59,8 @@ static inline void printHelp() " --multithreading : use multiple threads to detect values\n" " --load-config : load a config file (+)\n" " --allow-slow-operations : Allow operations that are usually very slow for more detailed output\n" + " --disable-linewrap : Disable linewrap during the run\n" + " --hide-cursor : Hide the cursor during the run\n" "\n" "Logo options:\n" " -l , --logo : sets the shown logo. Also changes the main color accordingly. This will also load file contents as logo if the given argument is a path\n" @@ -793,6 +795,10 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con data->multithreading = optionParseBoolean(value); else if(strcasecmp(key, "--allow-slow-operations") == 0) instance->config.allowSlowOperations = optionParseBoolean(value); + else if(strcasecmp(key, "--disable-linewrap") == 0) + instance->config.disableLinewrap = optionParseBoolean(value); + else if(strcasecmp(key, "--hide-cursor") == 0) + instance->config.hideCursor = optionParseBoolean(value); else if(strcasecmp(key, "--structure") == 0) optionParseString(key, value, &data->structure); else if(strcasecmp(key, "-l") == 0 || strcasecmp(key, "--logo") == 0) @@ -1055,6 +1061,8 @@ static void run(FFinstance* instance, FFdata* data) if(data->structure.length == 0) ffStrbufSetS(&data->structure, FASTFETCH_DEFAULT_STRUCTURE); + ffStart(instance); + uint32_t lastIndex = 0; while (lastIndex < data->structure.length) { diff --git a/src/fastfetch.h b/src/fastfetch.h index 71a799c5a..dd09b69d6 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -44,6 +44,8 @@ typedef struct FFconfig bool cacheSave; bool printRemainingLogo; bool allowSlowOperations; + bool disableLinewrap; + bool hideCursor; FFstrbuf osFormat; FFstrbuf osKey; @@ -241,6 +243,7 @@ typedef struct FFfont //common/init.c void ffInitInstance(FFinstance* instance); +void ffStart(FFinstance* instance); void ffFinish(FFinstance* instance); //common/threading.c diff --git a/src/flashfetch.c b/src/flashfetch.c index 64d1acbd9..49fd7f680 100644 --- a/src/flashfetch.c +++ b/src/flashfetch.c @@ -16,6 +16,9 @@ int main(int argc, char** argv) //Multithreading --> better performance ffStartDetectionThreads(&instance); + //Does things like disabling line wrap + ffStart(&instance); + //Printing ffPrintTitle(&instance); ffPrintSeparator(&instance);