Files
fastfetch/src/modules/cursor.c
T
2022-11-23 17:44:57 +08:00

56 lines
1.6 KiB
C

#include "fastfetch.h"
#include "common/printing.h"
#include "detection/cursor/cursor.h"
#define FF_CURSOR_MODULE_NAME "Cursor"
#define FF_CURSOR_NUM_FORMAT_ARGS 2
static void printCursor(FFinstance* instance, FFCursorResult* cursor)
{
ffStrbufRemoveIgnCaseEndS(&cursor->theme, "cursors");
ffStrbufRemoveIgnCaseEndS(&cursor->theme, "cursor");
ffStrbufTrimRight(&cursor->theme, '_');
ffStrbufTrimRight(&cursor->theme, '-');
if(cursor->theme.length == 0)
ffStrbufAppendS(&cursor->theme, "default");
if(instance->config.cursor.outputFormat.length == 0)
{
ffPrintLogoAndKey(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor.key);
ffStrbufWriteTo(&cursor->theme, stdout);
if(cursor->size.length > 0)
printf(" (%spx)", cursor->size.chars);
putchar('\n');
}
else
{
ffPrintFormat(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, FF_CURSOR_NUM_FORMAT_ARGS, (FFformatarg[]){
{FF_FORMAT_ARG_TYPE_STRBUF, &cursor->theme},
{FF_FORMAT_ARG_TYPE_STRBUF, &cursor->size}
});
}
}
void ffPrintCursor(FFinstance* instance)
{
FFCursorResult result;
ffStrbufInit(&result.error);
ffStrbufInit(&result.theme);
ffStrbufInit(&result.size);
ffDetectCursor(instance, &result);
if(result.error.length)
ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "%s", result.error.chars);
else
printCursor(instance, &result);
ffStrbufDestroy(&result.error);
ffStrbufDestroy(&result.theme);
ffStrbufDestroy(&result.size);
}