mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-04 05:54:17 +01:00
75d2c668d0
Moves module option structs out of global config and removes dynamic allocation, using static buffers and size assertions for safer, simpler management. Refactors module initialization and destruction to work with isolated option structs, eliminating the need for the previous modules container and related code. Unifies module option header usage and updates detection logic to leverage statically-sized option buffers, improving encapsulation and maintainability. Simplifies module function signatures and reduces coupling between modules and config. Enhances future extensibility and reliability by enforcing max size constraints and removing unnecessary indirections.
143 lines
4.7 KiB
C
143 lines
4.7 KiB
C
#include "fastfetch.h"
|
|
|
|
#include "common/init.h"
|
|
#include "modules/modules.h"
|
|
|
|
// A dirty replicate of neofetch
|
|
int main(void)
|
|
{
|
|
ffInitInstance(); // Init everything
|
|
|
|
// Modify global config here if needed
|
|
instance.config.display.sizeMaxPrefix = 2; // MB
|
|
instance.config.display.sizeNdigits = 2;
|
|
instance.config.display.freqNdigits = 3;
|
|
instance.config.display.freqSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER;
|
|
instance.config.display.sizeSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER;
|
|
|
|
// Logo printing and other preparation stuff
|
|
ffStart();
|
|
|
|
// Print all modules
|
|
{
|
|
__attribute__((cleanup(ffDestroyTitleOptions))) FFTitleOptions options;
|
|
ffInitTitleOptions(&options);
|
|
ffPrintTitle(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroySeparatorOptions))) FFSeparatorOptions options;
|
|
ffInitSeparatorOptions(&options);
|
|
ffPrintSeparator(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyOSOptions))) FFOSOptions options;
|
|
ffInitOSOptions(&options);
|
|
ffPrintOS(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyHostOptions))) FFHostOptions options;
|
|
ffInitHostOptions(&options);
|
|
ffPrintHost(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyKernelOptions))) FFKernelOptions options;
|
|
ffInitKernelOptions(&options);
|
|
ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{release}");
|
|
ffPrintKernel(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyUptimeOptions))) FFUptimeOptions options;
|
|
ffInitUptimeOptions(&options);
|
|
ffPrintUptime(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyPackagesOptions))) FFPackagesOptions options;
|
|
ffInitPackagesOptions(&options);
|
|
options.combined = true;
|
|
ffPrintPackages(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyShellOptions))) FFShellOptions options;
|
|
ffInitShellOptions(&options);
|
|
ffPrintShell(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyDisplayOptions))) FFDisplayOptions options;
|
|
ffInitDisplayOptions(&options);
|
|
options.compactType = FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT;
|
|
ffStrbufSetStatic(&options.moduleArgs.key, "Resolution");
|
|
ffPrintDisplay(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyDEOptions))) FFDEOptions options;
|
|
ffInitDEOptions(&options);
|
|
ffPrintDE(&options);
|
|
}
|
|
{
|
|
instance.config.general.detectVersion = false;
|
|
__attribute__((cleanup(ffDestroyWMOptions))) FFWMOptions options;
|
|
ffInitWMOptions(&options);
|
|
options.detectPlugin = true;
|
|
ffPrintWM(&options);
|
|
instance.config.general.detectVersion = true;
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyWMThemeOptions))) FFWMThemeOptions options;
|
|
ffInitWMThemeOptions(&options);
|
|
ffPrintWMTheme(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyThemeOptions))) FFThemeOptions options;
|
|
ffInitThemeOptions(&options);
|
|
ffPrintTheme(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyIconsOptions))) FFIconsOptions options;
|
|
ffInitIconsOptions(&options);
|
|
ffPrintIcons(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyTerminalOptions))) FFTerminalOptions options;
|
|
ffInitTerminalOptions(&options);
|
|
ffPrintTerminal(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyTerminalFontOptions))) FFTerminalFontOptions options;
|
|
ffInitTerminalFontOptions(&options);
|
|
ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{/name}{-}{/}{name}{?size} {size}{?}");
|
|
ffPrintTerminalFont(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyCPUOptions))) FFCPUOptions options;
|
|
ffInitCPUOptions(&options);
|
|
ffPrintCPU(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyGPUOptions))) FFGPUOptions options;
|
|
ffInitGPUOptions(&options);
|
|
ffStrbufSetStatic(&options.moduleArgs.key, "GPU");
|
|
ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{name}");
|
|
ffPrintGPU(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyMemoryOptions))) FFMemoryOptions options;
|
|
ffInitMemoryOptions(&options);
|
|
ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{} / {}");
|
|
ffPrintMemory(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyBreakOptions))) FFBreakOptions options;
|
|
ffInitBreakOptions(&options);
|
|
ffPrintBreak(&options);
|
|
}
|
|
{
|
|
__attribute__((cleanup(ffDestroyColorsOptions))) FFColorsOptions options;
|
|
ffInitColorsOptions(&options);
|
|
ffPrintColors(&options);
|
|
}
|
|
|
|
ffFinish();
|
|
ffDestroyInstance();
|
|
return 0;
|
|
}
|