# Needed Colours
- accent_colour_1
- accent_colour_2
- accent_colour_3
- primary_colour
- background_colour
- shadow_colour
- inactive_colour

# TODO
- [ ] Astal
    - [x] Bar
    - [x] Notifications
    - [x] Quick controls
    - [ ] ~Wlogout replacement~
    - [x] Media controls
    - [ ] AppLauncher (possibly, if anyrun is no good, probably not)
    - [ ] OSD (see [here](https://github.com/Aylur/astal/tree/main/examples/gtk3/js))
    - [x] Open Window List for bar when hovering over window title and per-workspace when hovering over workspace
- [ ] Text recognition
- [ ] Theming
    - [x] Vivado dark mode
    - [x] GTK
    - [x] QT (via environment variable)
    - [ ] Librewolf
    - [x] Astal
    - [x] Hyprland
    - [ ] Rofi
    - [x] ~nvim~
    - [x] yazi
    - [x] kitty
    - [ ] DisplayManager (see https://github.com/apognu/tuigreet?tab=readme-ov-file#theming and https://github.com/ratatui/ratatui/blob/main/ratatui-core/src/style/color.rs)
    - [ ] Cursor (maybe stick with oreo cursor, or otherwise find good replacement)
- [ ] Rofi
    - [ ] Spotlight-Search (or replace with anyrun) or multiple modes with different keybinds
    - [x] ~Wallpaper selector (that automatically triggers the theming script)~
- [x] Kitty
    - [x] ~Configure colours~
- [ ] Hyprland
    - [ ] Keybinds: Resize window, move window, open calculator, plus more programs
    - [ ] Read docs
    - [ ] battery management
- [ ] Programs
    - [ ] New image viewer (eog, vimiv)
    - [x] Other pdf reader (maybe -> zathura)
    - [x] Maybe TUI archive manager (~felix-rs~, ouch in yazi)
- [ ] Lazygit: Configure
- [ ] Nvim (other repo)
    - [x] Replace notification handler (noice)
    - [ ] Configure formatters (of Java, Cpp, TS/JS/Vue, Python)
    - [ ] Maybe: Add extra configs to commentbox
    - [ ] Remove trouble (useless for my purposes)
- [ ] Yazi
    - [x] More keybinds
    - [ ] Configure
    - [ ] Drag and drop support?
    - [ ] Check out plugins
    - [x] Use as file picker
- [ ] SDDM
    - [ ] Replace with LightDM or ensure theming works, but prefer replacing, consider greetd + tuigreet
- [ ] Scripts
    - [ ] Installer (after the basic OS setup is done (= from chroot onwards))
    - [ ] Theming script
    - [ ] Installer for configs
    - [ ] Vivado cleanup (run after vivado and hope vivado is blocking (or simply execute vivado in /tmp))
    - [x] migrate to zoxide from autojump
    - [ ] properly swap escape and caps (at lowest level possible)


Using astal (https://aylur.github.io/astal, which is gjs based), write a component that takes as argument a UIComponent array (pre-defined interface) and depending on what subclass of that interface it is renders a different component for each element. 
I have the type definitions of UIComponent below. The possible subclasses are LargeUIComponent, MediumUIComponent, ListUIComponent and CalculationUIComponent. 
Design-wise, I would like to have something similar to GNOME's layout.
