master ohmu/fastfetch-openbsd / src / flashfetch.c
ohmu  ·  2026-10-15
  1#include "fastfetch.h"
  2
  3#include "common/init.h"
  4#include "logo/logo.h"
  5#include "modules/modules.h"
  6
  7#define MODULE_OPTION(name)                                           \
  8    [[gnu::cleanup(ffDestroy##name##Options)]] FF##name##Options options; \
  9    ffInit##name##Options(&options);
 10
 11// A dirty replicate of neofetch; demonstration only.
 12int main(void) {
 13    ffInitInstance(); // Init everything
 14
 15    // Modify global config here if needed
 16    instance.config.display.sizeMaxPrefix = 2; // MB
 17    instance.config.display.sizeNdigits = 0;
 18    instance.config.display.freqNdigits = 3;
 19    instance.config.display.freqSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER;
 20    instance.config.display.sizeSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER;
 21
 22    // Some preparation stuff
 23    ffStart();
 24
 25    // Print logo
 26    ffLogoPrintDetected(FF_LOGO_SIZE_NORMAL);
 27
 28    // Print all modules
 29    {
 30        MODULE_OPTION(Title)
 31        ffPrintTitle(&options);
 32    }
 33    {
 34        MODULE_OPTION(Separator)
 35        ffPrintSeparator(&options);
 36    }
 37    {
 38        MODULE_OPTION(OS)
 39        ffPrintOS(&options);
 40    }
 41    {
 42        MODULE_OPTION(Host)
 43        ffPrintHost(&options);
 44    }
 45    {
 46        MODULE_OPTION(Kernel)
 47        ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{release}");
 48        ffPrintKernel(&options);
 49    }
 50    {
 51        MODULE_OPTION(Uptime)
 52        ffPrintUptime(&options);
 53    }
 54    {
 55        MODULE_OPTION(Packages)
 56        options.combined = true;
 57        ffPrintPackages(&options);
 58    }
 59    {
 60        MODULE_OPTION(Shell)
 61        ffPrintShell(&options);
 62    }
 63    {
 64        MODULE_OPTION(Display)
 65        options.compactType = FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT;
 66        ffStrbufSetStatic(&options.moduleArgs.key, "Resolution");
 67        ffPrintDisplay(&options);
 68    }
 69    {
 70        MODULE_OPTION(DE)
 71        ffStrbufSetStatic(&options.moduleArgs.key, "DE");
 72        ffPrintDE(&options);
 73    }
 74    {
 75        instance.config.general.detectVersion = false;
 76        MODULE_OPTION(WM)
 77        ffStrbufSetStatic(&options.moduleArgs.key, "WM");
 78        options.detectPlugin = true;
 79        ffPrintWM(&options);
 80        instance.config.general.detectVersion = true;
 81    }
 82    {
 83        MODULE_OPTION(WMTheme)
 84        ffPrintWMTheme(&options);
 85    }
 86    {
 87        MODULE_OPTION(Theme)
 88        ffPrintTheme(&options);
 89    }
 90    {
 91        MODULE_OPTION(Icons)
 92        ffPrintIcons(&options);
 93    }
 94    {
 95        MODULE_OPTION(Terminal)
 96        ffPrintTerminal(&options);
 97    }
 98    {
 99        MODULE_OPTION(TerminalFont)
100        ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{/name}{-}{/}{name}{?size} {size}{?}");
101        ffPrintTerminalFont(&options);
102    }
103    {
104        MODULE_OPTION(CPU)
105        options.showPeCoreCount = false;
106        ffPrintCPU(&options);
107    }
108    {
109        MODULE_OPTION(GPU)
110        ffStrbufSetStatic(&options.moduleArgs.key, "GPU");
111        ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{name}");
112        ffPrintGPU(&options);
113    }
114    {
115        MODULE_OPTION(Memory)
116        ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{} / {}");
117        ffPrintMemory(&options);
118    }
119    {
120        MODULE_OPTION(Break)
121        ffPrintBreak(&options);
122    }
123    {
124        MODULE_OPTION(Colors)
125        ffPrintColors(&options);
126    }
127
128    ffLogoPrintRemaining();
129    ffFinish();
130    ffDestroyInstance();
131    return 0;
132}