diff --git a/README.md b/README.md
new file mode 100644
index 0000000..26b72e1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,46 @@
+
+

+
janishutz dotfiles
+
+
+Full system configuration using [Decman](https://github.com/kiviktnm/decman).
+For my neovim config, see [here](https://git.janishutz.com/janishutz/nvim)
+
+*Screenshot outdated, a new screenshot will be added when this update is completed*
+
+
+
+## Features
+- QuickShell-based status bar and QuickActions menu (Coming soon)
+- QuickShell-based
+- Astal4 based Status Bar and Quick Actions menu
+ - System info
+ - Hyprland info
+ - Date & Time
+ - Bluetooth picker
+ - some networking settings (more coming later)
+ - Audio and brightness control
+ - battery monitoring
+ - Logout, Reboot, Shutdown, etc
+- `hyprlauncher` for the app launcher
+- Wlogout config
+- Automatically generated GTK Theme and theming of the rest of the desktop using `matugen`
+- Fish config (with some handy aliases, based on one from ohh-my-fish)
+- Fastfetch config
+- kitty config with cursor trail
+- notification manager uses `swaync`
+- Linter configs (eslint, clang-format, latexindent and more)
+- mpv config
+- zathura configs
+- yazi configs with links to various directories I use commonly plus a few plugins and themes that are applied by the script
+
+
+## TODOs
+- [ ] Migrate status bar to QuickShell
+- [ ] Rewrite Hyprland configs using lua
+- [ ] Waylogout still needed?
+- [ ] Add the formatter configs back in
+- [ ] Add the scripts back in
+- [ ] Finish decman configuration to copy all the files
+- [ ] Custom yazi theme
+- [ ] Notifier
diff --git a/config/matugen/README.md b/config/matugen/README.md
new file mode 100644
index 0000000..4a4e04e
--- /dev/null
+++ b/config/matugen/README.md
@@ -0,0 +1,9 @@
+# Matugen configs
+Shamelessly copied from [End-4's dotfiles](https://github.com/end-4/dots-hyprland/tree/main/dots/.config/matugen)
+
+
+# TODOs
+- [ ] Custom yazi theme
+- [ ] Qt theme
+- [ ] Remove unneeded elements
+- [ ] Quickshell stuff
diff --git a/config/matugen/config.toml b/config/matugen/config.toml
new file mode 100644
index 0000000..ca3ffb0
--- /dev/null
+++ b/config/matugen/config.toml
@@ -0,0 +1,30 @@
+[config]
+version_check = false
+
+[templates.m3colors]
+input_path = '~/.config/matugen/templates/colors.json'
+output_path = '~/.local/state/quickshell/user/generated/colors.json'
+
+[templates.hyprland]
+input_path = '~/.config/matugen/templates/hyprland/colors.lua'
+output_path = '~/.config/hypr/hyprland/colors.lua'
+
+[templates.hyprlock]
+input_path = '~/.config/matugen/templates/hyprland/hyprlock-colors.conf'
+output_path = '~/.config/hypr/hyprlock/colors.conf'
+
+[templates.gtk3]
+input_path = '~/.config/matugen/templates/gtk-3.0/gtk.css'
+output_path = '~/.config/gtk-3.0/gtk.css'
+
+[templates.gtk4]
+input_path = '~/.config/matugen/templates/gtk-4.0/gtk.css'
+output_path = '~/.config/gtk-4.0/gtk.css'
+
+[templates.kde_colors]
+input_path = '~/.config/matugen/templates/kde/color.txt'
+output_path = '~/.local/state/quickshell/user/generated/color.txt'
+
+[templates.wallpaper]
+input_path = '~/.config/matugen/templates/wallpaper.txt'
+output_path = '~/.local/state/quickshell/user/generated/wallpaper/path.txt'
diff --git a/config/matugen/templates/ags/_material.scss b/config/matugen/templates/ags/_material.scss
new file mode 100644
index 0000000..81acbfe
--- /dev/null
+++ b/config/matugen/templates/ags/_material.scss
@@ -0,0 +1,70 @@
+$darkmode: False;
+$transparent: False;
+$background: {{colors.background.default.hex}};
+$onBackground: {{colors.on_background.default.hex}};
+$surface: {{colors.surface.default.hex}};
+$surfaceDim: {{colors.surface_dim.default.hex}};
+$surfaceBright: {{colors.surface_bright.default.hex}};
+$surfaceContainerLowest: {{colors.surface_container_lowest.default.hex}};
+$surfaceContainerLow: {{colors.surface_container_low.default.hex}};
+$surfaceContainer: {{colors.surface_container.default.hex}};
+$surfaceContainerHigh: {{colors.surface_container_high.default.hex}};
+$surfaceContainerHighest: {{colors.surface_container_highest.default.hex}};
+$onSurface: {{colors.on_surface.default.hex}};
+$surfaceVariant: {{colors.surface_variant.default.hex}};
+$onSurfaceVariant: {{colors.on_surface_variant.default.hex}};
+$inverseSurface: {{colors.inverse_surface.default.hex}};
+$inverseOnSurface: {{colors.inverse_on_surface.default.hex}};
+$outline: {{colors.outline.default.hex}};
+$outlineVariant: {{colors.outline_variant.default.hex}};
+$shadow: {{colors.shadow.default.hex}};
+$scrim: {{colors.scrim.default.hex}};
+$primary: {{colors.primary.default.hex}};
+$onPrimary: {{colors.on_primary.default.hex}};
+$primaryContainer: {{colors.primary_container.default.hex}};
+$onPrimaryContainer: {{colors.on_primary_container.default.hex}};
+$inversePrimary: {{colors.inverse_primary.default.hex}};
+$secondary: {{colors.secondary.default.hex}};
+$onSecondary: {{colors.on_secondary.default.hex}};
+$secondaryContainer: {{colors.secondary_container.default.hex}};
+$onSecondaryContainer: {{colors.on_secondary_container.default.hex}};
+$tertiary: {{colors.tertiary.default.hex}};
+$onTertiary: {{colors.on_tertiary.default.hex}};
+$tertiaryContainer: {{colors.tertiary_container.default.hex}};
+$onTertiaryContainer: {{colors.on_tertiary_container.default.hex}};
+$error: {{colors.error.default.hex}};
+$onError: {{colors.on_error.default.hex}};
+$errorContainer: {{colors.error_container.default.hex}};
+$onErrorContainer: {{colors.on_error_container.default.hex}};
+$primaryFixed: {{colors.primary_fixed.default.hex}};
+$primaryFixedDim: {{colors.primary_fixed_dim.default.hex}};
+$onPrimaryFixed: {{colors.on_primary_fixed.default.hex}};
+$onPrimaryFixedVariant: {{colors.on_primary_fixed_variant.default.hex}};
+$secondaryFixed: {{colors.secondary_fixed.default.hex}};
+$secondaryFixedDim: {{colors.secondary_fixed_dim.default.hex}};
+$onSecondaryFixed: {{colors.on_secondary_fixed.default.hex}};
+$onSecondaryFixedVariant: {{colors.on_secondary_fixed_variant.default.hex}};
+$tertiaryFixed: {{colors.tertiary_fixed.default.hex}};
+$tertiaryFixedDim: {{colors.tertiary_fixed_dim.default.hex}};
+$onTertiaryFixed: {{colors.on_tertiary_fixed.default.hex}};
+$onTertiaryFixedVariant: {{colors.on_tertiary_fixed_variant.default.hex}};
+$success: #B5CCBA;
+$onSuccess: #213528;
+$successContainer: #374B3E;
+$onSuccessContainer: #D1E9D6;
+$term0: #0D1C20;
+$term1: #8383FF;
+$term2: #63DFD4;
+$term3: #75FCDD;
+$term4: #76B4BD;
+$term5: #7AAEEA;
+$term6: #81D8D7;
+$term7: #CCDBD5;
+$term8: #B1BCB5;
+$term9: #BCB9FF;
+$term10: #F6FFFD;
+$term11: #FFFFFF;
+$term12: #BEE3E5;
+$term13: #C8DAFF;
+$term14: #E5FFFE;
+$term15: #ADEDF6;
diff --git a/config/matugen/templates/ags/sourceviewtheme-light.xml b/config/matugen/templates/ags/sourceviewtheme-light.xml
new file mode 100644
index 0000000..d501c31
--- /dev/null
+++ b/config/matugen/templates/ags/sourceviewtheme-light.xml
@@ -0,0 +1,95 @@
+
+
+ end_4
+ <_description>Catppuccin port but very random
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/matugen/templates/ags/sourceviewtheme.xml b/config/matugen/templates/ags/sourceviewtheme.xml
new file mode 100644
index 0000000..7198099
--- /dev/null
+++ b/config/matugen/templates/ags/sourceviewtheme.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ Leo Iannacone
+ <_description>Based on SublimeText Monokai Extended - Generated with tm2gtksw2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/matugen/templates/colors.json b/config/matugen/templates/colors.json
new file mode 100644
index 0000000..25f80e8
--- /dev/null
+++ b/config/matugen/templates/colors.json
@@ -0,0 +1,51 @@
+{
+ "background": "{{colors.background.default.hex}}",
+ "error": "{{colors.error.default.hex}}",
+ "error_container": "{{colors.error_container.default.hex}}",
+ "inverse_on_surface": "{{colors.inverse_on_surface.default.hex}}",
+ "inverse_primary": "{{colors.inverse_primary.default.hex}}",
+ "inverse_surface": "{{colors.inverse_surface.default.hex}}",
+ "on_background": "{{colors.on_background.default.hex}}",
+ "on_error": "{{colors.on_error.default.hex}}",
+ "on_error_container": "{{colors.on_error_container.default.hex}}",
+ "on_primary": "{{colors.on_primary.default.hex}}",
+ "on_primary_container": "{{colors.on_primary_container.default.hex}}",
+ "on_primary_fixed": "{{colors.on_primary_fixed.default.hex}}",
+ "on_primary_fixed_variant": "{{colors.on_primary_fixed_variant.default.hex}}",
+ "on_secondary": "{{colors.on_secondary.default.hex}}",
+ "on_secondary_container": "{{colors.on_secondary_container.default.hex}}",
+ "on_secondary_fixed": "{{colors.on_secondary_fixed.default.hex}}",
+ "on_secondary_fixed_variant": "{{colors.on_secondary_fixed_variant.default.hex}}",
+ "on_surface": "{{colors.on_surface.default.hex}}",
+ "on_surface_variant": "{{colors.on_surface_variant.default.hex}}",
+ "on_tertiary": "{{colors.on_tertiary.default.hex}}",
+ "on_tertiary_container": "{{colors.on_tertiary_container.default.hex}}",
+ "on_tertiary_fixed": "{{colors.on_tertiary_fixed.default.hex}}",
+ "on_tertiary_fixed_variant": "{{colors.on_tertiary_fixed_variant.default.hex}}",
+ "outline": "{{colors.outline.default.hex}}",
+ "outline_variant": "{{colors.outline_variant.default.hex}}",
+ "primary": "{{colors.primary.default.hex}}",
+ "primary_container": "{{colors.primary_container.default.hex}}",
+ "primary_fixed": "{{colors.primary_fixed.default.hex}}",
+ "primary_fixed_dim": "{{colors.primary_fixed_dim.default.hex}}",
+ "scrim": "{{colors.scrim.default.hex}}",
+ "secondary": "{{colors.secondary.default.hex}}",
+ "secondary_container": "{{colors.secondary_container.default.hex}}",
+ "secondary_fixed": "{{colors.secondary_fixed.default.hex}}",
+ "secondary_fixed_dim": "{{colors.secondary_fixed_dim.default.hex}}",
+ "shadow": "{{colors.shadow.default.hex}}",
+ "surface": "{{colors.surface.default.hex}}",
+ "surface_bright": "{{colors.surface_bright.default.hex}}",
+ "surface_container": "{{colors.surface_container.default.hex}}",
+ "surface_container_high": "{{colors.surface_container_high.default.hex}}",
+ "surface_container_highest": "{{colors.surface_container_highest.default.hex}}",
+ "surface_container_low": "{{colors.surface_container_low.default.hex}}",
+ "surface_container_lowest": "{{colors.surface_container_lowest.default.hex}}",
+ "surface_dim": "{{colors.surface_dim.default.hex}}",
+ "surface_tint": "{{colors.surface_tint.default.hex}}",
+ "surface_variant": "{{colors.surface_variant.default.hex}}",
+ "tertiary": "{{colors.tertiary.default.hex}}",
+ "tertiary_container": "{{colors.tertiary_container.default.hex}}",
+ "tertiary_fixed": "{{colors.tertiary_fixed.default.hex}}",
+ "tertiary_fixed_dim": "{{colors.tertiary_fixed_dim.default.hex}}"
+}
diff --git a/config/matugen/templates/gtk-3.0/gtk.css b/config/matugen/templates/gtk-3.0/gtk.css
new file mode 100644
index 0000000..0d8cb9c
--- /dev/null
+++ b/config/matugen/templates/gtk-3.0/gtk.css
@@ -0,0 +1,38 @@
+/*
+* GTK colors generated with Matugen
+* The source template is here: ~/.config/matugen/templates/gtk-3.0/gtk.css
+*/
+
+/* Accents */
+@define-color accent_color {{colors.primary.default.hex}};
+@define-color accent_fg_color {{colors.on_primary.default.hex}};
+@define-color accent_bg_color {{colors.primary.default.hex}};
+@define-color destructive_bg_color {{colors.error_container.default.hex}};
+@define-color destructive_fg_color {{colors.on_error_container.default.hex}};
+@define-color destructive_color {{colors.error.default.hex}};
+@define-color success_bg_color #374B3E;
+@define-color success_fg_color #D1E9D6;
+@define-color success_color #B5CCBA;
+/* Base surfaces */
+@define-color window_bg_color {{colors.background.default.hex}};
+@define-color window_fg_color {{colors.on_background.default.hex}};
+@define-color headerbar_bg_color {{colors.surface_container.default.hex}};
+@define-color headerbar_backdrop_color {{colors.surface_container.default.hex}};
+@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
+@define-color card_bg_color {{colors.surface_container.default.hex}};
+@define-color card_fg_color {{colors.on_surface.default.hex}};
+@define-color sidebar_bg_color {{colors.surface_container.default.hex}};
+@define-color sidebar_fg_color {{colors.on_surface.default.hex}};
+@define-color secondary_sidebar_bg_color {{colors.surface_container_low.default.hex}};
+@define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}};
+@define-color sidebar_border_color @sidebar_bg_color;
+@define-color sidebar_backdrop_color @sidebar_bg_color;
+@define-color view_bg_color {{colors.surface_container_lowest.default.hex}};
+@define-color view_fg_color {{colors.on_surface.default.hex}};
+@define-color overview_bg_color {{colors.surface_container_lowest.default.hex}};
+@define-color overview_fg_color {{colors.on_surface.default.hex}};
+/* Popups */
+@define-color popover_bg_color {{colors.surface_container_highest.default.hex}};
+@define-color popover_fg_color {{colors.on_surface.default.hex}};
+@define-color dialog_bg_color {{colors.surface_container_high.default.hex}};
+@define-color dialog_fg_color {{colors.on_surface.default.hex}};
diff --git a/config/matugen/templates/gtk-4.0/gtk.css b/config/matugen/templates/gtk-4.0/gtk.css
new file mode 100644
index 0000000..6f24e30
--- /dev/null
+++ b/config/matugen/templates/gtk-4.0/gtk.css
@@ -0,0 +1,541 @@
+/*
+* GTK colors generated with Matugen
+* The source template is here: ~/.config/matugen/templates/gtk-4.0/gtk.css
+*/
+
+@media (prefers-color-scheme: light) {
+ /* Accents */
+ @define-color accent_color {{colors.primary.light.hex}};
+ @define-color accent_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.08);
+ @define-color accent_vibrant_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.18);
+ @define-color accent_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.1);
+ @define-color accent_vibrant_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.26);
+ @define-color accent_fg_color {{colors.on_primary.light.hex}};
+ @define-color accent_bg_color {{colors.primary.light.hex}};
+ @define-color destructive_bg_color {{colors.error_container.light.hex}};
+ @define-color destructive_fg_color {{colors.on_error_container.light.hex}};
+ @define-color destructive_color {{colors.error.light.hex}};
+ @define-color success_bg_color #B5CCBA;
+ @define-color success_fg_color #213528;
+ @define-color success_color #374B3E;
+ /* Base surfaces */
+ @define-color window_bg_color {{colors.background.light.hex}};
+ @define-color window_fg_color {{colors.on_background.light.hex}};
+ @define-color headerbar_bg_color {{colors.surface_container.light.hex}};
+ @define-color headerbar_backdrop_color {{colors.surface_container.light.hex}};
+ @define-color headerbar_fg_color {{colors.on_surface.light.hex}};
+ @define-color card_bg_color {{colors.surface_container.light.hex}};
+ @define-color card_fg_color {{colors.on_surface.light.hex}};
+ @define-color sidebar_bg_color {{colors.background.light.hex}};
+ @define-color sidebar_fg_color {{colors.on_surface.light.hex}};
+ @define-color sidebar_row_active_bg_color {{colors.secondary_container.light.hex}};
+ @define-color sidebar_row_active_fg_color {{colors.on_secondary_container.light.hex}};
+ @define-color secondary_sidebar_bg_color {{colors.surface_container_low.light.hex}};
+ @define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.light.hex}};
+ @define-color secondary_sidebar_fg_color {{colors.on_surface_variant.light.hex}};
+ @define-color sidebar_border_color @sidebar_bg_color;
+ @define-color sidebar_backdrop_color @sidebar_bg_color;
+ @define-color view_bg_color {{colors.surface_container_lowest.light.hex}};
+ @define-color view_fg_color {{colors.on_surface.light.hex}};
+ @define-color overview_bg_color {{colors.surface_container_lowest.light.hex}};
+ @define-color overview_fg_color {{colors.on_surface.light.hex}};
+ /* Popups */
+ @define-color popover_bg_color {{colors.surface_container_highest.light.hex}};
+ @define-color popover_fg_color {{colors.on_surface.light.hex}};
+ @define-color popover_fg_hover_color rgba({{colors.on_surface.light.red}}, {{colors.on_surface.light.green}}, {{colors.on_surface.light.blue}}, 0.08);
+ @define-color dialog_bg_color {{colors.surface_container_high.light.hex}};
+ @define-color dialog_fg_color {{colors.on_surface.light.hex}};
+ @define-color thumbnail_bg_color {{colors.surface_container_high.light.hex}};
+ @define-color thumbnail_fg_color {{colors.on_surface.light.hex}};
+
+ /* Material */
+ @define-color inverse_on_surface {{colors.inverse_on_surface.light.hex}};
+ @define-color inverse_primary {{colors.inverse_primary.light.hex}};
+ @define-color inverse_surface {{colors.inverse_surface.light.hex}};
+ @define-color surface_container_highest {{colors.surface_container_highest.light.hex}};
+ @define-color surface_container_high {{colors.surface_container_high.light.hex}};
+ @define-color on_surface_variant {{colors.on_surface_variant.light.hex}};
+ @define-color surface_variant {{colors.surface_variant.light.hex}};
+
+ @define-color outline {{colors.outline.light.hex}};
+
+ /* Material state layers */
+ @define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.08);
+ @define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.18);
+ @define-color inverse_primary_hover rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.08);
+ @define-color inverse_primary_active rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.18);
+}
+
+@media (prefers-color-scheme: dark) {
+ /* Accents */
+ @define-color accent_color {{colors.primary.dark.hex}};
+ @define-color accent_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.08);
+ @define-color accent_vibrant_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.18);
+ @define-color accent_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.1);
+ @define-color accent_vibrant_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.2);
+ @define-color accent_fg_color {{colors.on_primary.dark.hex}};
+ @define-color accent_bg_color {{colors.primary.dark.hex}};
+ @define-color destructive_bg_color {{colors.error_container.dark.hex}};
+ @define-color destructive_fg_color {{colors.on_error_container.dark.hex}};
+ @define-color destructive_color {{colors.error.dark.hex}};
+ @define-color success_bg_color #374B3E;
+ @define-color success_fg_color #D1E9D6;
+ @define-color success_color #B5CCBA;
+ /* Base surfaces */
+ @define-color window_bg_color {{colors.background.dark.hex}};
+ @define-color window_fg_color {{colors.on_background.dark.hex}};
+ @define-color headerbar_bg_color {{colors.surface_container.dark.hex}};
+ @define-color headerbar_backdrop_color {{colors.surface_container.dark.hex}};
+ @define-color headerbar_fg_color {{colors.on_surface.dark.hex}};
+ @define-color card_bg_color {{colors.surface_container.dark.hex}};
+ @define-color card_fg_color {{colors.on_surface.dark.hex}};
+ @define-color sidebar_bg_color {{colors.background.dark.hex}};
+ @define-color sidebar_fg_color {{colors.on_surface.dark.hex}};
+ @define-color sidebar_row_active_bg_color {{colors.secondary_container.dark.hex}};
+ @define-color sidebar_row_active_fg_color {{colors.on_secondary_container.dark.hex}};
+ @define-color secondary_sidebar_bg_color {{colors.surface_container_low.dark.hex}};
+ @define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.dark.hex}};
+ @define-color secondary_sidebar_fg_color {{colors.on_surface_variant.dark.hex}};
+ @define-color sidebar_border_color @sidebar_bg_color;
+ @define-color sidebar_backdrop_color @sidebar_bg_color;
+ @define-color view_bg_color {{colors.surface_container_lowest.dark.hex}};
+ @define-color view_fg_color {{colors.on_surface.dark.hex}};
+ @define-color overview_bg_color {{colors.surface_container_lowest.dark.hex}};
+ @define-color overview_fg_color {{colors.on_surface.dark.hex}};
+ /* Popups */
+ @define-color popover_bg_color {{colors.surface_container_highest.dark.hex}};
+ @define-color popover_fg_color {{colors.on_surface.dark.hex}};
+ @define-color popover_fg_hover_color rgba({{colors.on_surface.dark.red}}, {{colors.on_surface.dark.green}}, {{colors.on_surface.dark.blue}}, 0.08);
+ @define-color dialog_bg_color {{colors.surface_container_high.dark.hex}};
+ @define-color dialog_fg_color {{colors.on_surface.dark.hex}};
+ @define-color thumbnail_bg_color {{colors.surface_container_high.dark.hex}};
+ @define-color thumbnail_fg_color {{colors.on_surface.dark.hex}};
+
+ /* Material */
+ @define-color inverse_on_surface {{colors.inverse_on_surface.dark.hex}};
+ @define-color inverse_primary {{colors.inverse_primary.dark.hex}};
+ @define-color inverse_surface {{colors.inverse_surface.dark.hex}};
+ @define-color surface_container_highest {{colors.surface_container_highest.dark.hex}};
+ @define-color surface_container_high {{colors.surface_container_high.dark.hex}};
+ @define-color on_surface_variant {{colors.on_surface_variant.dark.hex}};
+ @define-color surface_variant {{colors.surface_variant.dark.hex}};
+
+ @define-color outline {{colors.outline.dark.hex}};
+
+ /* Material state layers */
+ @define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.08);
+ @define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.18);
+ @define-color inverse_primary_hover rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.08);
+ @define-color inverse_primary_active rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.18);
+}
+
+* {
+ caret-color: @accent_color;
+}
+
+window {
+ background: @window_bg_color;
+}
+
+.text-button {
+ border-radius: 999px;
+}
+
+.text-button,
+.text-button * {
+ font-weight: 500;
+}
+
+splitbutton {
+ background-color: transparent;
+}
+
+splitbutton button {
+ border-top-left-radius: 999px;
+ border-bottom-left-radius: 999px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+splitbutton separator {
+ color: transparent;
+}
+
+splitbutton menubutton {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ border-top-right-radius: 999px;
+ border-bottom-right-radius: 999px;
+}
+
+.popup-menu-item {
+ background-color: transparent;
+ border-radius: 999px;
+}
+
+#NautilusPathBar #NautilusPathButton *,
+.nautilus-pathbar .nautilus-path-button * {
+ color: @sidebar_row_active_fg_color;
+ font-weight: 400;
+}
+
+#NautilusPathBar #NautilusPathButton,
+.nautilus-pathbar .nautilus-path-button {
+ background: @accent_active_color;
+ border-radius: 4px;
+ margin: 0;
+ margin-right: 2px;
+}
+
+#NautilusPathBar #NautilusPathButton:hover,
+.nautilus-pathbar .nautilus-path-button:hover {
+ background: @accent_vibrant_hover_color;
+}
+
+#NautilusPathBar #NautilusPathButton:active,
+.nautilus-pathbar .nautilus-path-button:active {
+ background: @accent_vibrant_active_color;
+}
+
+#NautilusPathButton,
+.nautilus-pathbar {
+ background: transparent;
+}
+
+#NautilusPathBar box box:first-child #NautilusPathButton,
+.nautilus-pathbar box box:first-child .nautilus-path-button {
+ border-radius: 24px 4px 4px 24px;
+}
+
+#NautilusPathBar box box:last-child #NautilusPathButton,
+.nautilus-pathbar box box:last-child .nautilus-path-button {
+ border-radius: 4px 24px 24px 4px;
+}
+
+#NautilusPathBar #NautilusPathButton.current-dir.current-dir,
+.nautilus-pathbar .nautilus-path-button.current-dir.current-dir {
+ border-radius: 999px;
+}
+
+#NautilusPathBar .dim-label,
+.nautilus-pathbar .dim-label {
+ font-size: 0;
+}
+
+#NautilusPathBar button .dim-label,
+.nautilus-pathbar button .dim-label {
+ font-size: 14px;
+ opacity: 100%;
+}
+
+#NautilusPathBar button,
+.nautilus-pathbar button {
+ border-radius: 8px;
+}
+#NautilusPathBar button:checked,
+.nautilus-pathbar button:checked {
+ background: @accent_vibrant_hover_color;
+}
+
+headerbar button {
+ border-radius: 999px;
+}
+
+headerbar >windowhandle box stack > box:nth-child(2) {
+ background: @accent_active_color;
+ border-radius: 8px;
+}
+
+.nautilus-list-view,
+.nautilus-grid-view {
+ background: @secondary_sidebar_bg_color;
+ border-radius: 16px;
+}
+
+.navigation-sidebar row * {
+ color: @sidebar_fg_color;
+ font-weight: 500;
+ font-size: 13px;
+}
+
+.navigation-sidebar row {
+ border-radius: 999px;
+ padding: 2px;
+}
+
+.navigation-sidebar row:hover {
+ background: @accent_hover_color;
+}
+
+.navigation-sidebar row:active {
+ background: @accent_active_color;
+}
+
+.navigation-sidebar row:selected {
+ background: @sidebar_row_active_bg_color;
+}
+
+.navigation-sidebar row:selected * {
+ color: @sidebar_row_active_fg_color;
+}
+
+banner widget {
+ border-radius: 16px 0 0 16px;
+ margin-bottom: 8px;
+ background-color: @secondary_sidebar_bg_color;
+}
+
+.boxed-list {
+ box-shadow: none;
+ background-color: @window_bg_color;
+}
+
+.boxed-list row {
+ background: @card_bg_color;
+ border-radius: 4px;
+ border: none;
+ margin-bottom: 2px;
+}
+
+.boxed-list row.activatable:hover {
+ background-color: @thumbnail_bg_color;
+}
+
+.boxed-list row.activatable:active {
+ background-color: @popover_bg_color;
+}
+
+.horizontal>listview>row {
+ background-color: transparent;
+}
+
+.boxed-list row:insensitive {
+ background-color: @card_bg_color;
+}
+
+.text-button.toggle {
+ border-radius: 4px;
+ background-color: @surface_container_highest;
+ margin-left: 2px;
+}
+
+.text-button.toggle:hover {
+ background-color: @surface_variant;
+}
+
+.text-button.toggle:active {
+ background-color: @surface_container_highest;
+}
+
+.text-button.toggle * {
+ color: @on_surface_variant;
+ font-weight: 400;
+}
+
+.boxed-list row:first-child {
+ border-radius: 16px 16px 4px 4px;
+}
+
+.boxed-list row:last-child {
+ border-radius: 4px 4px 16px 16px;
+ margin-bottom: 0;
+}
+
+.text-button.toggle:first-child {
+ border-radius: 16px 4px 4px 16px;
+}
+
+.text-button.toggle:last-child {
+ border-radius: 4px 16px 16px 4px;
+}
+
+.boxed-list row:first-child:last-child,
+.text-button.toggle:first-child:last-child {
+ border-radius: 16px;
+}
+
+.text-button.toggle:checked {
+ background-color: @accent_bg_color;
+ border-radius: 999px;
+}
+
+.text-button.toggle:checked * {
+ color: @accent_fg_color;
+ font-weight: 500;
+}
+
+button.back {
+ border-radius: 999px;
+ background-color: @accent_hover_color;
+ padding-left: 4px;
+ padding-right: 6px;
+}
+
+button.back * {
+ font-size: 12px;
+}
+
+button.back:hover {
+ background-color: @accent_hover_color;
+}
+
+button.back:active {
+ background-color: @accent_active_color;
+}
+
+/* switch */
+
+switch {
+ background: @secondary_sidebar_bg_color;
+ border: @outline 2px solid;
+ padding: 0;
+}
+
+switch:checked {
+ background: @accent_color;
+ border-color: @accent_color;
+}
+
+switch slider {
+ background: @outline;
+ margin: 3px;
+ min-width: 0;
+ min-height: 0;
+}
+
+switch:checked slider {
+ background: @accent_fg_color;
+ outline: transparent 2px solid;
+ margin: 0px;
+}
+
+/* toast */
+
+toast {
+ border-radius: 999px;
+ padding: 6px 6px 6px 10px;
+ background-color: @inverse_surface;
+ color: @inverse_on_surface;
+}
+
+toast .heading {
+ font-weight: 400;
+}
+
+toast button {
+ background-color: transparent;
+ color: @inverse_primary;
+}
+
+toast button:hover {
+ background-color: @inverse_primary_hover;
+}
+
+toast button:active {
+ background-color: @inverse_primary_active;
+}
+
+toast button:last-child {
+ color: @inverse_on_surface;
+}
+
+toast button:last-child:hover {
+ background-color: @inverse_on_surface_hover;
+}
+
+toast button:last-child:active {
+ background-color: @inverse_on_surface_active;
+}
+
+.collapse-spacing.vertical {
+ padding-bottom: 0;
+}
+
+tabbox {
+ padding: 0;
+}
+
+tabbox tabboxchild tab,
+tabbox tabboxchild {
+ background: transparent;
+ padding: 0 8px 3px;
+ border-radius: 999px;
+}
+
+tabbox tabboxchild tab {
+ padding: 3px 8px;
+}
+
+tab:hover {
+ background: @accent_hover_color;
+}
+
+tab:active,
+tab:selected {
+ background: @accent_active_color;
+}
+
+tab .tab-title {
+ padding: 0 12px;
+ color: @secondary_sidebar_fg_color;
+}
+
+tab .tab-title label {
+ border: none;
+ font-weight: 500;
+}
+
+tab:selected .tab-title label {
+ padding: 6px 0;
+ color: @accent_color;
+}
+
+/* popup menu */
+
+popover listview.view row,
+popover listview.view row:first-child,
+popover listview.view row:last-child {
+ background: transparent;
+ border-radius: 8px;
+}
+
+popover contents,
+popover arrow {
+ background: @secondary_sidebar_bg_color;
+}
+
+popover listview.view row:hover {
+ background: @popover_fg_hover_color;
+}
+
+popover listview.view row:active {
+ background: @popover_fg_active_color;
+}
+
+modelbutton {
+ padding: 2px 10px;
+}
+
+modelbutton * {
+ color: @popover_fg_color;
+}
+
+modelbutton:hover {
+ background-color: @popover_fg_hover_color;
+}
+
+tooltip {
+ background-color: @inverse_surface;
+ color: @inverse_on_surface;
+ font-size: 11px;
+ padding: 5px 9px;
+}
+
+/* search */
+
+.entry-completion.entry-completion.entry-completion contents {
+ padding: 0;
+}
+.image-button.flat arrow {
+ background: transparent;
+}
diff --git a/config/matugen/templates/hyprland/colors.lua b/config/matugen/templates/hyprland/colors.lua
new file mode 100644
index 0000000..0175f2d
--- /dev/null
+++ b/config/matugen/templates/hyprland/colors.lua
@@ -0,0 +1,16 @@
+hl.config({
+ general = {
+ col = {
+ active_border = "rgba({{colors.outline_variant.default.hex_stripped}}77)",
+ inactive_border = "rgba({{colors.surface_container_low.default.hex_stripped}}33)",
+ },
+ },
+ misc = {
+ background_color = "rgba({{colors.surface.dark.hex_stripped}}FF)",
+ },
+})
+
+hl.window_rule({
+ match = { pin = 1 },
+ border_color = "rgba({{colors.primary.default.hex_stripped}}AA) rgba({{colors.primary.default.hex_stripped}}77)",
+})
diff --git a/config/matugen/templates/hyprland/hyprlock-colors.conf b/config/matugen/templates/hyprland/hyprlock-colors.conf
new file mode 100644
index 0000000..debb4d8
--- /dev/null
+++ b/config/matugen/templates/hyprland/hyprlock-colors.conf
@@ -0,0 +1,12 @@
+# This configuration is generated by matugen
+# Changing these variables with matugen still enabled will overwrite them.
+
+$text_color = rgba({{colors.primary_fixed.default.hex_stripped}}FF)
+$entry_background_color = rgba({{colors.on_primary_fixed.default.hex_stripped}}11)
+$entry_border_color = rgba({{colors.outline.default.hex_stripped}}55)
+$entry_color = rgba({{colors.primary_fixed.default.hex_stripped}}FF)
+$font_family = Google Sans Flex Medium
+$font_family_clock = Google Sans Flex Medium
+$font_material_symbols = Material Symbols Rounded
+
+$background_image = {{image}}
diff --git a/config/matugen/templates/kde/color.txt b/config/matugen/templates/kde/color.txt
new file mode 100644
index 0000000..3514290
--- /dev/null
+++ b/config/matugen/templates/kde/color.txt
@@ -0,0 +1 @@
+{{colors.source_color.default.hex}}
\ No newline at end of file
diff --git a/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh b/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh
new file mode 100755
index 0000000..058ef15
--- /dev/null
+++ b/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
+
+color=$(tr -d '\n' < "$XDG_STATE_HOME/quickshell/user/generated/color.txt")
+
+current_mode=$(gsettings get org.gnome.desktop.interface color-scheme 2>/dev/null | tr -d "'")
+if [[ "$current_mode" == "prefer-dark" ]]; then
+ mode_flag="-d"
+else
+ mode_flag="-l"
+fi
+
+# Parse --scheme-variant flag
+scheme_variant_str=""
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --scheme-variant)
+ scheme_variant_str="$2"
+ shift 2
+ ;;
+ *)
+ shift
+ ;;
+ esac
+done
+
+# Map string variant to integer
+case "$scheme_variant_str" in
+ scheme-content) sv_num=0 ;;
+ scheme-expressive) sv_num=1 ;;
+ scheme-fidelity) sv_num=2 ;;
+ scheme-monochrome) sv_num=3 ;;
+ scheme-neutral) sv_num=4 ;;
+ scheme-tonal-spot) sv_num=5 ;;
+ scheme-vibrant) sv_num=6 ;;
+ scheme-rainbow) sv_num=7 ;;
+ scheme-fruit-salad) sv_num=8 ;;
+ "") sv_num=5 ;;
+ *)
+ echo "Unknown scheme variant: $scheme_variant_str" >&2
+ exit 1
+ ;;
+esac
+
+source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
+kde-material-you-colors "$mode_flag" --color "$color" -sv "$sv_num"
+deactivate
diff --git a/config/matugen/templates/wallpaper.txt b/config/matugen/templates/wallpaper.txt
new file mode 100644
index 0000000..33b0c5b
--- /dev/null
+++ b/config/matugen/templates/wallpaper.txt
@@ -0,0 +1 @@
+{{image}}
diff --git a/config/quickshell/README.md b/config/quickshell/README.md
new file mode 100644
index 0000000..f08a525
--- /dev/null
+++ b/config/quickshell/README.md
@@ -0,0 +1 @@
+# Quickshell Status bar