summaryrefslogtreecommitdiffstats
path: root/.config/fastfetch/confgen.py
diff options
context:
space:
mode:
authorPavel Egorov <[email protected]>2025-12-16 11:50:18 +0300
committerPavel Egorov <[email protected]>2025-12-16 11:50:18 +0300
commit6029273a4af8eaab0d36536b45a7d46f1887ad5e (patch)
treeeec918cca86b86bafdb2b0e3f71eeec7c59a1184 /.config/fastfetch/confgen.py
parent8cad57be8a1661648c0282d8aa87f94d2314ae04 (diff)
downloaddotfiles-6029273a4af8eaab0d36536b45a7d46f1887ad5e.tar.gz
dotfiles-6029273a4af8eaab0d36536b45a7d46f1887ad5e.zip
[fastfetch] prepare to convert into fastfetch config
Diffstat (limited to '')
-rw-r--r--.config/fastfetch/confgen.py125
1 files changed, 71 insertions, 54 deletions
diff --git a/.config/fastfetch/confgen.py b/.config/fastfetch/confgen.py
index c5c068a..de1bda5 100644
--- a/.config/fastfetch/confgen.py
+++ b/.config/fastfetch/confgen.py
@@ -1,6 +1,14 @@
1#!/usr/bin/env python3 1#!/usr/bin/env python3
2 2
3from typing import Optional, Any 3from typing import Optional, Any, Iterator
4
5
6def flatten(obj) -> Iterator[Any]:
7 for value in obj:
8 if isinstance(value, list):
9 yield from flatten(value)
10 else:
11 yield value
4 12
5 13
6class Node: 14class Node:
@@ -23,17 +31,21 @@ class Node:
23 self.children = [] 31 self.children = []
24 32
25 def __str__(self) -> str: 33 def __str__(self) -> str:
26 return str(self.construct_fastfetch_description()) 34 return f'Node {self.construct_module()}, children: {self.children}'
27 35
28 def construct_fastfetch_description(self) -> dict[str, str]: 36 def __repr__(self) -> str:
37 return self.__str__()
38
39 def construct_module(self) -> dict[str, type[Any]]:
29 40
30 module = {"type": self.module} 41 module = {"type": self.module}
31 42
32 if self.font_effect: 43 # if self.font_effect:
33 font_effect = self.font_effect 44 # font_effect = self.font_effect
34 else: 45 # else:
35 font_effect = font_effects["reset"] 46 # font_effect = font_effects["reset"]
36 key = {"key": f"{{{font_effect}}} {self.key}"} 47 # key = {"key": f"{{{font_effect}}} {self.key}"}
48 key = {"key": self.key}
37 49
38 if self.format: 50 if self.format:
39 format = {"format": self.format} 51 format = {"format": self.format}
@@ -52,10 +64,12 @@ class Node:
52 64
53 return module | key | format | text | additional_entries 65 return module | key | format | text | additional_entries
54 66
55 def add_children(self, *nodes: type["Node"]): 67 def collect_branch(self):
56 self.children += nodes 68 return [self.construct_module()] + [node.collect_branch() for node in self.children]
57
58 69
70 def add_children(self, *nodes: type["Node"]) -> type["Node"]:
71 self.children += nodes
72 return self
59 73
60 74
61schema = { 75schema = {
@@ -130,51 +144,54 @@ modules = {
130 "version": Node("version", "Fastfetch", format="{version}"), 144 "version": Node("version", "Fastfetch", format="{version}"),
131} 145}
132 146
133modules["software_root"].add_children( 147roots = [
134 modules["os"].add_children( 148 modules["software_root"].add_children(
135 modules["bootmgr"], 149 modules["os"].add_children(
136 modules["init"], 150 modules["bootmgr"],
137 modules["kernel"], 151 modules["init"],
138 modules["lm"], 152 modules["kernel"],
139 modules["packages"], 153 modules["lm"],
154 modules["packages"],
155 ),
156 modules["terminal"].add_children(
157 modules["shell"],
158 modules["terminal_font"],
159 ),
160 modules["graphics"].add_children(
161 modules["de"],
162 modules["wm"],
163 modules["icons"],
164 modules["cursor"],
165 modules["font"],
166 modules["theme"],
167 ),
168 modules["development"].add_children(
169 modules["editor"],
170 modules["git"],
171 modules["python"],
172 modules["gcc"],
173 modules["clang"],
174 modules["nodejs"],
175 ),
140 ), 176 ),
141 modules["terminal"].add_children( 177 modules["hardware_root"].add_children(
142 modules["shell"], 178 modules["chassis"].add_children(
143 modules["terminal_font"], 179 modules["host"],
180 modules["board"].add_children(modules["bios"]),
181 modules["cpu"].add_children(modules["cpu_cache"]),
182 modules["gpu"].add_children(modules["gpu_driver"]),
183 modules["disk"],
184 modules["ram"].add_children(modules["swap"]),
185 ),
186 modules["display"]
144 ), 187 ),
145 modules["graphics"].add_children( 188 modules["misc_root"].add_children(
146 modules["de"], 189 modules["datetime"],
147 modules["wm"], 190 modules["uptime"],
148 modules["icons"], 191 modules["os_age"],
149 modules["cursor"], 192 modules["version"],
150 modules["font"],
151 modules["theme"],
152 ), 193 ),
153 modules["development"].add_children( 194]
154 modules["editor"],
155 modules["git"],
156 modules["python"],
157 modules["gcc"],
158 modules["clang"],
159 modules["nodejs"],
160 ),
161)
162 195
163modules["hardware_root"].add_children(
164 modules["chassis"].add_children(
165 modules["host"],
166 modules["board"].add_children(modules["bios"]),
167 modules["cpu"].add_children(modules["cpu_cache"]),
168 modules["gpu"].add_children(modules["gpu_driver"]),
169 modules["disk"],
170 modules["ram"].add_children(modules["swap"]),
171 ),
172 modules["display"]
173)
174 196
175modules["misc_root"].add_children( 197modules = [flatten(root.collect_branch()) for root in roots]
176 modules["datetime"],
177 modules["uptime"],
178 modules["os_age"],
179 modules["version"],
180)