diff options
| author | Pavel Egorov <[email protected]> | 2025-12-16 11:50:18 +0300 |
|---|---|---|
| committer | Pavel Egorov <[email protected]> | 2025-12-16 11:50:18 +0300 |
| commit | 6029273a4af8eaab0d36536b45a7d46f1887ad5e (patch) | |
| tree | eec918cca86b86bafdb2b0e3f71eeec7c59a1184 /.config | |
| parent | 8cad57be8a1661648c0282d8aa87f94d2314ae04 (diff) | |
| download | dotfiles-6029273a4af8eaab0d36536b45a7d46f1887ad5e.tar.gz dotfiles-6029273a4af8eaab0d36536b45a7d46f1887ad5e.zip | |
[fastfetch] prepare to convert into fastfetch config
Diffstat (limited to '')
| -rw-r--r-- | .config/fastfetch/confgen.py | 125 |
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 | ||
| 3 | from typing import Optional, Any | 3 | from typing import Optional, Any, Iterator |
| 4 | |||
| 5 | |||
| 6 | def 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 | ||
| 6 | class Node: | 14 | class 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 | ||
| 61 | schema = { | 75 | schema = { |
| @@ -130,51 +144,54 @@ modules = { | |||
| 130 | "version": Node("version", "Fastfetch", format="{version}"), | 144 | "version": Node("version", "Fastfetch", format="{version}"), |
| 131 | } | 145 | } |
| 132 | 146 | ||
| 133 | modules["software_root"].add_children( | 147 | roots = [ |
| 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 | ||
| 163 | modules["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 | ||
| 175 | modules["misc_root"].add_children( | 197 | modules = [flatten(root.collect_branch()) for root in roots] |
| 176 | modules["datetime"], | ||
| 177 | modules["uptime"], | ||
| 178 | modules["os_age"], | ||
| 179 | modules["version"], | ||
| 180 | ) | ||
