Skip to content

Commit 0b473e3

Browse files
committed
Fastfetch: refactor the code of --list-modules
1 parent 5a43adb commit 0b473e3

File tree

7 files changed

+219
-88
lines changed

7 files changed

+219
-88
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ fastfetch_load_text(src/data/structure.txt DATATEXT_STRUCTURE)
211211
fastfetch_load_text(src/data/config_system.txt DATATEXT_CONFIG_SYSTEM)
212212
fastfetch_load_text(src/data/config_user.txt DATATEXT_CONFIG_USER)
213213
fastfetch_load_text(src/data/config_user.jsonc DATATEXT_CONFIG_USER_JSONC)
214-
fastfetch_load_text(src/data/modules.txt DATATEXT_MODULES)
215214
fastfetch_load_text(src/data/help.txt DATATEXT_HELP)
216215
fastfetch_load_text(src/data/help_color.txt DATATEXT_HELP_COLOR)
217216
fastfetch_load_text(src/data/help_format.txt DATATEXT_HELP_FORMAT)
@@ -259,6 +258,7 @@ set(LIBFASTFETCH_SRC
259258
src/common/init.c
260259
src/common/jsonconfig.c
261260
src/common/library.c
261+
src/common/modules.c
262262
src/common/option.c
263263
src/common/parsing.c
264264
src/common/printing.c

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ All categories not listed here should work without needing a specific implementa
9696

9797
##### Available Modules
9898
```
99-
Battery, Bios, Bluetooth, Board, Break, Brightness, Colors, Command, CPU, CPUUsage, Cursor, Custom, Date, DateTime, DE, Disk, Display, Font, Gamepad, GPU, Host, Icons, Kernel, LM, Locale, LocalIP, Media, Memory, Monitor, OpenCL, OpenGL, Packages, Player, Power Adapter, Processes, PublicIP, Separator, OS, Shell, Sound, Swap, Terminal, Terminal Font, Terminal Size, Theme, Time, Title, Uptime, Vulkan, Wallpaper, Wifi, WM, WMTheme
99+
Battery, Bios, Bluetooth, Board, Break, Brightness, Colors, Command, CPU, CPUUsage, Cursor, Custom, Date, DateTime, DE, Disk, Display, Font, Gamepad, GPU, Host, Icons, Kernel, LM, Locale, LocalIP, Media, Memory, Monitor, OpenCL, OpenGL, OS, Packages, Player, Power Adapter, Processes, PublicIP, Separator, Shell, Sound, Swap, Terminal, Terminal Font, Terminal Size, Theme, Time, Title, Uptime, Vulkan, Wallpaper, Weather, Wifi, WM, WMTheme
100100
```
101101

102102
##### Builtin logos

src/common/modules.c

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
#include "fastfetch.h"
2+
3+
static FFModuleBaseInfo* A[] = {
4+
NULL,
5+
};
6+
7+
static FFModuleBaseInfo* B[] = {
8+
(void*) &instance.config.battery,
9+
(void*) &instance.config.bios,
10+
(void*) &instance.config.bluetooth,
11+
(void*) &instance.config.board,
12+
(void*) &instance.config.break_,
13+
(void*) &instance.config.brightness,
14+
NULL,
15+
};
16+
17+
static FFModuleBaseInfo* C[] = {
18+
(void*) &instance.config.chassis,
19+
(void*) &instance.config.command,
20+
(void*) &instance.config.colors,
21+
(void*) &instance.config.cpu,
22+
(void*) &instance.config.cpuUsage,
23+
(void*) &instance.config.cursor,
24+
(void*) &instance.config.custom,
25+
NULL,
26+
};
27+
28+
static FFModuleBaseInfo* D[] = {
29+
(void*) &instance.config.dateTime,
30+
(void*) &instance.config.de,
31+
(void*) &instance.config.display,
32+
(void*) &instance.config.disk,
33+
NULL,
34+
};
35+
36+
static FFModuleBaseInfo* E[] = {
37+
NULL,
38+
};
39+
40+
static FFModuleBaseInfo* F[] = {
41+
(void*) &instance.config.font,
42+
NULL,
43+
};
44+
45+
static FFModuleBaseInfo* G[] = {
46+
(void*) &instance.config.gamepad,
47+
(void*) &instance.config.gpu,
48+
NULL,
49+
};
50+
51+
static FFModuleBaseInfo* H[] = {
52+
(void*) &instance.config.host,
53+
NULL,
54+
};
55+
56+
static FFModuleBaseInfo* I[] = {
57+
(void*) &instance.config.icons,
58+
NULL,
59+
};
60+
61+
static FFModuleBaseInfo* J[] = {
62+
NULL,
63+
};
64+
65+
static FFModuleBaseInfo* K[] = {
66+
(void*) &instance.config.kernel,
67+
NULL,
68+
};
69+
70+
static FFModuleBaseInfo* L[] = {
71+
(void*) &instance.config.lm,
72+
(void*) &instance.config.locale,
73+
(void*) &instance.config.localIP,
74+
NULL,
75+
};
76+
77+
static FFModuleBaseInfo* M[] = {
78+
(void*) &instance.config.media,
79+
(void*) &instance.config.memory,
80+
(void*) &instance.config.monitor,
81+
NULL,
82+
};
83+
84+
static FFModuleBaseInfo* N[] = {
85+
NULL,
86+
};
87+
88+
static FFModuleBaseInfo* O[] = {
89+
(void*) &instance.config.openCL,
90+
(void*) &instance.config.openGL,
91+
(void*) &instance.config.os,
92+
NULL,
93+
};
94+
95+
static FFModuleBaseInfo* P[] = {
96+
(void*) &instance.config.packages,
97+
(void*) &instance.config.player,
98+
(void*) &instance.config.powerAdapter,
99+
(void*) &instance.config.processes,
100+
(void*) &instance.config.publicIP,
101+
NULL,
102+
};
103+
104+
static FFModuleBaseInfo* Q[] = {
105+
NULL,
106+
};
107+
108+
static FFModuleBaseInfo* R[] = {
109+
NULL,
110+
};
111+
112+
static FFModuleBaseInfo* S[] = {
113+
(void*) &instance.config.separator,
114+
(void*) &instance.config.shell,
115+
(void*) &instance.config.sound,
116+
(void*) &instance.config.swap,
117+
NULL,
118+
};
119+
120+
static FFModuleBaseInfo* T[] = {
121+
(void*) &instance.config.terminal,
122+
(void*) &instance.config.terminalFont,
123+
(void*) &instance.config.terminalSize,
124+
(void*) &instance.config.title,
125+
(void*) &instance.config.theme,
126+
NULL,
127+
};
128+
129+
static FFModuleBaseInfo* U[] = {
130+
(void*) &instance.config.uptime,
131+
(void*) &instance.config.users,
132+
NULL,
133+
};
134+
135+
static FFModuleBaseInfo* V[] = {
136+
(void*) &instance.config.vulkan,
137+
NULL,
138+
};
139+
140+
static FFModuleBaseInfo* W[] = {
141+
(void*) &instance.config.wallpaper,
142+
(void*) &instance.config.weather,
143+
(void*) &instance.config.wm,
144+
(void*) &instance.config.wifi,
145+
(void*) &instance.config.wmTheme,
146+
NULL,
147+
};
148+
149+
static FFModuleBaseInfo* X[] = {
150+
NULL,
151+
};
152+
153+
static FFModuleBaseInfo* Y[] = {
154+
NULL,
155+
};
156+
157+
static FFModuleBaseInfo* Z[] = {
158+
NULL,
159+
};
160+
161+
FFModuleBaseInfo** ffModuleInfos[] = {
162+
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
163+
};

src/data/modules.txt

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/fastfetch.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,19 @@ static void listDataPaths(void)
554554
}
555555
}
556556

557+
static void listModules()
558+
{
559+
unsigned count = 0;
560+
for (int i = 0; i <= 'Z' - 'A'; ++i)
561+
{
562+
for (FFModuleBaseInfo** modules = ffModuleInfos[i]; *modules; ++modules)
563+
{
564+
++count;
565+
printf("%d)%s%s\n", count, count > 9 ? " " : " ", (*modules)->name);
566+
}
567+
}
568+
}
569+
557570
static void parseOption(FFdata* data, const char* key, const char* value);
558571

559572
static bool parseJsoncFile(const char* path)
@@ -856,7 +869,7 @@ static void parseOption(FFdata* data, const char* key, const char* value)
856869
const char* subkey = key + strlen("--list");
857870
if(ffStrEqualsIgnCase(subkey, "-modules"))
858871
{
859-
puts(FASTFETCH_DATATEXT_MODULES);
872+
listModules();
860873
exit(0);
861874
}
862875
else if(ffStrEqualsIgnCase(subkey, "-presets"))

src/fastfetch.h

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -78,60 +78,60 @@ typedef struct FFconfig
7878
int32_t wmiTimeout;
7979
#endif
8080

81-
FFTitleOptions title;
82-
FFOSOptions os;
83-
FFHostOptions host;
81+
FFBatteryOptions battery;
8482
FFBiosOptions bios;
83+
FFBluetoothOptions bluetooth;
8584
FFBoardOptions board;
85+
FFBreakOptions break_;
8686
FFBrightnessOptions brightness;
87+
FFCPUOptions cpu;
88+
FFCPUUsageOptions cpuUsage;
8789
FFChassisOptions chassis;
90+
FFColorsOptions colors;
8891
FFCommandOptions command;
89-
FFKernelOptions kernel;
90-
FFUptimeOptions uptime;
91-
FFProcessesOptions processes;
92-
FFPackagesOptions packages;
93-
FFShellOptions shell;
94-
FFDisplayOptions display;
95-
FFDEOptions de;
96-
FFWallpaperOptions wallpaper;
97-
FFWifiOptions wifi;
98-
FFWMOptions wm;
99-
FFWMThemeOptions wmTheme;
100-
FFThemeOptions theme;
101-
FFIconsOptions icons;
102-
FFFontOptions font;
10392
FFCursorOptions cursor;
104-
FFTerminalOptions terminal;
105-
FFTerminalFontOptions terminalFont;
106-
FFTerminalSizeOptions terminalSize;
107-
FFCPUOptions cpu;
108-
FFCPUUsageOptions cpuUsage;
10993
FFCustomOptions custom;
110-
FFGPUOptions gpu;
111-
FFMemoryOptions memory;
112-
FFSwapOptions swap;
94+
FFDEOptions de;
95+
FFDateTimeOptions dateTime;
11396
FFDiskOptions disk;
114-
FFBatteryOptions battery;
115-
FFPowerAdapterOptions powerAdapter;
97+
FFDisplayOptions display;
98+
FFFontOptions font;
99+
FFGPUOptions gpu;
100+
FFGamepadOptions gamepad;
101+
FFHostOptions host;
102+
FFIconsOptions icons;
103+
FFKernelOptions kernel;
116104
FFLMOptions lm;
117-
FFLocaleOptions locale;
118105
FFLocalIpOptions localIP;
119-
FFPublicIpOptions publicIP;
120-
FFWeatherOptions weather;
121-
FFPlayerOptions player;
106+
FFLocaleOptions locale;
122107
FFMediaOptions media;
108+
FFMemoryOptions memory;
123109
FFMonitorOptions monitor;
124-
FFDateTimeOptions dateTime;
125-
FFVulkanOptions vulkan;
126-
FFOpenGLOptions openGL;
110+
FFOSOptions os;
127111
FFOpenCLOptions openCL;
128-
FFUsersOptions users;
129-
FFBluetoothOptions bluetooth;
112+
FFOpenGLOptions openGL;
113+
FFPackagesOptions packages;
114+
FFPlayerOptions player;
115+
FFPowerAdapterOptions powerAdapter;
116+
FFProcessesOptions processes;
117+
FFPublicIpOptions publicIP;
130118
FFSeparatorOptions separator;
119+
FFShellOptions shell;
131120
FFSoundOptions sound;
132-
FFGamepadOptions gamepad;
133-
FFBreakOptions break_;
134-
FFColorsOptions colors;
121+
FFSwapOptions swap;
122+
FFTerminalFontOptions terminalFont;
123+
FFTerminalOptions terminal;
124+
FFTerminalSizeOptions terminalSize;
125+
FFThemeOptions theme;
126+
FFTitleOptions title;
127+
FFUptimeOptions uptime;
128+
FFUsersOptions users;
129+
FFVulkanOptions vulkan;
130+
FFWMOptions wm;
131+
FFWMThemeOptions wmTheme;
132+
FFWallpaperOptions wallpaper;
133+
FFWeatherOptions weather;
134+
FFWifiOptions wifi;
135135

136136
FFstrbuf libPCI;
137137
FFstrbuf libVulkan;
@@ -175,6 +175,7 @@ typedef struct FFinstance
175175
FFstate state;
176176
} FFinstance;
177177
extern FFinstance instance; // Defined in `common/init.c`
178+
extern FFModuleBaseInfo** ffModuleInfos[];
178179

179180
//////////////////////
180181
// Init functions //

src/fastfetch_datatext.h.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#define FASTFETCH_DATATEXT_CONFIG_SYSTEM "@DATATEXT_CONFIG_SYSTEM@"
88
#define FASTFETCH_DATATEXT_CONFIG_USER "@DATATEXT_CONFIG_USER@" //Requires FASTFETCH_PROJECT_VERSION and FASTFETCH_DATATEXT_STRUCTURE to be set
99
#define FASTFETCH_DATATEXT_CONFIG_USER_JSONC "@DATATEXT_CONFIG_USER_JSONC@"
10-
#define FASTFETCH_DATATEXT_MODULES "@DATATEXT_MODULES@"
1110
#define FASTFETCH_DATATEXT_HELP "@DATATEXT_HELP@"
1211
#define FASTFETCH_DATATEXT_HELP_COLOR "@DATATEXT_HELP_COLOR@"
1312
#define FASTFETCH_DATATEXT_HELP_FORMAT "@DATATEXT_HELP_FORMAT@"

0 commit comments

Comments
 (0)