diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-active.svg b/config/nwg-look/.config/gtk-3.0/assets/close-active.svg
new file mode 100644
index 0000000..a9b7e22
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-active.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-active.svg b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-active.svg
new file mode 100644
index 0000000..a9b7e22
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-active.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-hover.svg
new file mode 100644
index 0000000..618b2a8
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-hover.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-normal.svg
new file mode 100644
index 0000000..305552a
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-backdrop-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/close-hover.svg
new file mode 100644
index 0000000..618b2a8
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-hover.svg
@@ -0,0 +1,39 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/close-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/close-normal.svg
new file mode 100644
index 0000000..0dc673d
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/close-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-active.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-active.svg
new file mode 100644
index 0000000..01a1007
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-active.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-active.svg
new file mode 100644
index 0000000..01a1007
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-hover.svg
new file mode 100644
index 0000000..b4a179e
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-normal.svg
new file mode 100644
index 0000000..07349ae
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-backdrop-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-hover.svg
new file mode 100644
index 0000000..b4a179e
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximize-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/maximize-normal.svg
new file mode 100644
index 0000000..24767de
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximize-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-active.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-active.svg
new file mode 100644
index 0000000..a65ffdc
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-active.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-active.svg
new file mode 100644
index 0000000..a65ffdc
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-hover.svg
new file mode 100644
index 0000000..2468afa
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-normal.svg
new file mode 100644
index 0000000..0c1101c
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-backdrop-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-hover.svg
new file mode 100644
index 0000000..2468afa
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/maximized-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/maximized-normal.svg
new file mode 100644
index 0000000..2cf2f5e
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/maximized-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-active.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-active.svg
new file mode 100644
index 0000000..c51e569
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-active.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-active.svg
new file mode 100644
index 0000000..c51e569
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-active.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-hover.svg
new file mode 100644
index 0000000..ae9e72b
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-normal.svg
new file mode 100644
index 0000000..448b599
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-backdrop-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-hover.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-hover.svg
new file mode 100644
index 0000000..ae9e72b
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-hover.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/assets/minimize-normal.svg b/config/nwg-look/.config/gtk-3.0/assets/minimize-normal.svg
new file mode 100644
index 0000000..37a9579
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/assets/minimize-normal.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/config/nwg-look/.config/gtk-3.0/bookmarks b/config/nwg-look/.config/gtk-3.0/bookmarks
new file mode 100644
index 0000000..6c40a30
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/bookmarks
@@ -0,0 +1 @@
+file:///home/kolkas/Desktop
diff --git a/config/nwg-look/.config/gtk-3.0/colors.css b/config/nwg-look/.config/gtk-3.0/colors.css
new file mode 100644
index 0000000..bbdaee7
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/colors.css
@@ -0,0 +1,84 @@
+@define-color borders_breeze #454859;
+@define-color content_view_bg_breeze #1e1e2e;
+@define-color error_color_backdrop_breeze #876790;
+@define-color error_color_breeze #f38ba8;
+@define-color error_color_insensitive_backdrop_breeze #b36a83;
+@define-color error_color_insensitive_breeze #b36a83;
+@define-color insensitive_base_color_breeze #1e1e2e;
+@define-color insensitive_base_fg_color_breeze #999fb9;
+@define-color insensitive_bg_color_breeze #1a1a28;
+@define-color insensitive_borders_breeze #393b4c;
+@define-color insensitive_fg_color_breeze #999fb9;
+@define-color insensitive_selected_bg_color_breeze #1a1a28;
+@define-color insensitive_selected_fg_color_breeze #999fb9;
+@define-color insensitive_unfocused_bg_color_breeze #1a1a28;
+@define-color insensitive_unfocused_fg_color_breeze #999fb9;
+@define-color insensitive_unfocused_selected_bg_color_breeze #1a1a28;
+@define-color insensitive_unfocused_selected_fg_color_breeze #999fb9;
+@define-color link_color_breeze #89b4fa;
+@define-color link_visited_color_breeze #cba6f7;
+@define-color success_color_backdrop_breeze #728396;
+@define-color success_color_breeze #a6e3a1;
+@define-color success_color_insensitive_backdrop_breeze #7da87f;
+@define-color success_color_insensitive_breeze #7da87f;
+@define-color theme_base_color_breeze #1e1e2e;
+@define-color theme_bg_color_breeze #181825;
+@define-color theme_button_background_backdrop_breeze #202031;
+@define-color theme_button_background_backdrop_insensitive_breeze #2b2c3d;
+@define-color theme_button_background_insensitive_breeze #2b2c3d;
+@define-color theme_button_background_normal_breeze #313244;
+@define-color theme_button_decoration_focus_backdrop_breeze #6773a7;
+@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #6987bd;
+@define-color theme_button_decoration_focus_breeze #89b4fa;
+@define-color theme_button_decoration_focus_insensitive_breeze #6987bd;
+@define-color theme_button_decoration_hover_backdrop_breeze #202031;
+@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #2b2c3d;
+@define-color theme_button_decoration_hover_breeze #313244;
+@define-color theme_button_decoration_hover_insensitive_breeze #2b2c3d;
+@define-color theme_button_foreground_active_backdrop_breeze #808194;
+@define-color theme_button_foreground_active_backdrop_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_active_breeze #11111b;
+@define-color theme_button_foreground_active_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_backdrop_breeze #808194;
+@define-color theme_button_foreground_backdrop_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_normal_breeze #cdd6f4;
+@define-color theme_fg_color_breeze #cdd6f4;
+@define-color theme_header_background_backdrop_breeze #1e1e2e;
+@define-color theme_header_background_breeze #181825;
+@define-color theme_header_background_light_breeze #181825;
+@define-color theme_header_foreground_backdrop_breeze #808194;
+@define-color theme_header_foreground_breeze #cdd6f4;
+@define-color theme_header_foreground_insensitive_backdrop_breeze #808194;
+@define-color theme_header_foreground_insensitive_breeze #808194;
+@define-color theme_hovering_selected_bg_color_breeze #313244;
+@define-color theme_selected_bg_color_breeze #89b4fa;
+@define-color theme_selected_fg_color_breeze #11111b;
+@define-color theme_text_color_breeze #cdd6f4;
+@define-color theme_titlebar_background_backdrop_breeze #1e1e2e;
+@define-color theme_titlebar_background_breeze #181825;
+@define-color theme_titlebar_background_light_breeze #181825;
+@define-color theme_titlebar_foreground_backdrop_breeze #808194;
+@define-color theme_titlebar_foreground_breeze #cdd6f4;
+@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #808194;
+@define-color theme_titlebar_foreground_insensitive_breeze #808194;
+@define-color theme_unfocused_base_color_breeze #1e1e2e;
+@define-color theme_unfocused_bg_color_breeze #1e1e2e;
+@define-color theme_unfocused_fg_color_breeze #808194;
+@define-color theme_unfocused_selected_bg_color_alt_breeze #28293f;
+@define-color theme_unfocused_selected_bg_color_breeze #28293f;
+@define-color theme_unfocused_selected_fg_color_breeze #808194;
+@define-color theme_unfocused_text_color_breeze #808194;
+@define-color theme_unfocused_view_bg_color_breeze #1e1e2e;
+@define-color theme_unfocused_view_text_color_breeze #999fb9;
+@define-color theme_view_active_decoration_color_breeze #313244;
+@define-color theme_view_hover_decoration_color_breeze #313244;
+@define-color tooltip_background_breeze #1e1e2e;
+@define-color tooltip_border_breeze #4a4c60;
+@define-color tooltip_text_breeze #cdd6f4;
+@define-color unfocused_borders_breeze #363747;
+@define-color unfocused_insensitive_borders_breeze #393b4c;
+@define-color warning_color_backdrop_breeze #87848f;
+@define-color warning_color_breeze #f9e2af;
+@define-color warning_color_insensitive_backdrop_breeze #b7a788;
+@define-color warning_color_insensitive_breeze #b7a788;
diff --git a/config/nwg-look/.config/gtk-3.0/gtk.css b/config/nwg-look/.config/gtk-3.0/gtk.css
new file mode 100644
index 0000000..c9763f7
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/gtk.css
@@ -0,0 +1 @@
+@import 'colors.css';
\ No newline at end of file
diff --git a/config/nwg-look/.config/gtk-3.0/settings.ini b/config/nwg-look/.config/gtk-3.0/settings.ini
new file mode 100644
index 0000000..d5297b6
--- /dev/null
+++ b/config/nwg-look/.config/gtk-3.0/settings.ini
@@ -0,0 +1,17 @@
+[Settings]
+gtk-theme-name=catppuccin-mocha-blue-standard+default
+gtk-icon-theme-name=Papirus
+gtk-font-name=Noto Sans, 10
+gtk-cursor-theme-name=Bibata-Modern-Ice
+gtk-cursor-theme-size=24
+gtk-toolbar-style=GTK_TOOLBAR_ICONS
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=0
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=0
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle=hintslight
+gtk-xft-rgba=rgb
+gtk-application-prefer-dark-theme=1
diff --git a/config/nwg-look/.config/gtk-4.0/assets b/config/nwg-look/.config/gtk-4.0/assets
new file mode 120000
index 0000000..8e3eaff
--- /dev/null
+++ b/config/nwg-look/.config/gtk-4.0/assets
@@ -0,0 +1 @@
+/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/assets
\ No newline at end of file
diff --git a/config/nwg-look/.config/gtk-4.0/colors.css b/config/nwg-look/.config/gtk-4.0/colors.css
new file mode 100644
index 0000000..bbdaee7
--- /dev/null
+++ b/config/nwg-look/.config/gtk-4.0/colors.css
@@ -0,0 +1,84 @@
+@define-color borders_breeze #454859;
+@define-color content_view_bg_breeze #1e1e2e;
+@define-color error_color_backdrop_breeze #876790;
+@define-color error_color_breeze #f38ba8;
+@define-color error_color_insensitive_backdrop_breeze #b36a83;
+@define-color error_color_insensitive_breeze #b36a83;
+@define-color insensitive_base_color_breeze #1e1e2e;
+@define-color insensitive_base_fg_color_breeze #999fb9;
+@define-color insensitive_bg_color_breeze #1a1a28;
+@define-color insensitive_borders_breeze #393b4c;
+@define-color insensitive_fg_color_breeze #999fb9;
+@define-color insensitive_selected_bg_color_breeze #1a1a28;
+@define-color insensitive_selected_fg_color_breeze #999fb9;
+@define-color insensitive_unfocused_bg_color_breeze #1a1a28;
+@define-color insensitive_unfocused_fg_color_breeze #999fb9;
+@define-color insensitive_unfocused_selected_bg_color_breeze #1a1a28;
+@define-color insensitive_unfocused_selected_fg_color_breeze #999fb9;
+@define-color link_color_breeze #89b4fa;
+@define-color link_visited_color_breeze #cba6f7;
+@define-color success_color_backdrop_breeze #728396;
+@define-color success_color_breeze #a6e3a1;
+@define-color success_color_insensitive_backdrop_breeze #7da87f;
+@define-color success_color_insensitive_breeze #7da87f;
+@define-color theme_base_color_breeze #1e1e2e;
+@define-color theme_bg_color_breeze #181825;
+@define-color theme_button_background_backdrop_breeze #202031;
+@define-color theme_button_background_backdrop_insensitive_breeze #2b2c3d;
+@define-color theme_button_background_insensitive_breeze #2b2c3d;
+@define-color theme_button_background_normal_breeze #313244;
+@define-color theme_button_decoration_focus_backdrop_breeze #6773a7;
+@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #6987bd;
+@define-color theme_button_decoration_focus_breeze #89b4fa;
+@define-color theme_button_decoration_focus_insensitive_breeze #6987bd;
+@define-color theme_button_decoration_hover_backdrop_breeze #202031;
+@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #2b2c3d;
+@define-color theme_button_decoration_hover_breeze #313244;
+@define-color theme_button_decoration_hover_insensitive_breeze #2b2c3d;
+@define-color theme_button_foreground_active_backdrop_breeze #808194;
+@define-color theme_button_foreground_active_backdrop_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_active_breeze #11111b;
+@define-color theme_button_foreground_active_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_backdrop_breeze #808194;
+@define-color theme_button_foreground_backdrop_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_insensitive_breeze #999fb9;
+@define-color theme_button_foreground_normal_breeze #cdd6f4;
+@define-color theme_fg_color_breeze #cdd6f4;
+@define-color theme_header_background_backdrop_breeze #1e1e2e;
+@define-color theme_header_background_breeze #181825;
+@define-color theme_header_background_light_breeze #181825;
+@define-color theme_header_foreground_backdrop_breeze #808194;
+@define-color theme_header_foreground_breeze #cdd6f4;
+@define-color theme_header_foreground_insensitive_backdrop_breeze #808194;
+@define-color theme_header_foreground_insensitive_breeze #808194;
+@define-color theme_hovering_selected_bg_color_breeze #313244;
+@define-color theme_selected_bg_color_breeze #89b4fa;
+@define-color theme_selected_fg_color_breeze #11111b;
+@define-color theme_text_color_breeze #cdd6f4;
+@define-color theme_titlebar_background_backdrop_breeze #1e1e2e;
+@define-color theme_titlebar_background_breeze #181825;
+@define-color theme_titlebar_background_light_breeze #181825;
+@define-color theme_titlebar_foreground_backdrop_breeze #808194;
+@define-color theme_titlebar_foreground_breeze #cdd6f4;
+@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #808194;
+@define-color theme_titlebar_foreground_insensitive_breeze #808194;
+@define-color theme_unfocused_base_color_breeze #1e1e2e;
+@define-color theme_unfocused_bg_color_breeze #1e1e2e;
+@define-color theme_unfocused_fg_color_breeze #808194;
+@define-color theme_unfocused_selected_bg_color_alt_breeze #28293f;
+@define-color theme_unfocused_selected_bg_color_breeze #28293f;
+@define-color theme_unfocused_selected_fg_color_breeze #808194;
+@define-color theme_unfocused_text_color_breeze #808194;
+@define-color theme_unfocused_view_bg_color_breeze #1e1e2e;
+@define-color theme_unfocused_view_text_color_breeze #999fb9;
+@define-color theme_view_active_decoration_color_breeze #313244;
+@define-color theme_view_hover_decoration_color_breeze #313244;
+@define-color tooltip_background_breeze #1e1e2e;
+@define-color tooltip_border_breeze #4a4c60;
+@define-color tooltip_text_breeze #cdd6f4;
+@define-color unfocused_borders_breeze #363747;
+@define-color unfocused_insensitive_borders_breeze #393b4c;
+@define-color warning_color_backdrop_breeze #87848f;
+@define-color warning_color_breeze #f9e2af;
+@define-color warning_color_insensitive_backdrop_breeze #b7a788;
+@define-color warning_color_insensitive_breeze #b7a788;
diff --git a/config/nwg-look/.config/gtk-4.0/gtk-dark.css b/config/nwg-look/.config/gtk-4.0/gtk-dark.css
new file mode 120000
index 0000000..66ef5b1
--- /dev/null
+++ b/config/nwg-look/.config/gtk-4.0/gtk-dark.css
@@ -0,0 +1 @@
+/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/gtk-dark.css
\ No newline at end of file
diff --git a/config/nwg-look/.config/gtk-4.0/gtk.css b/config/nwg-look/.config/gtk-4.0/gtk.css
new file mode 120000
index 0000000..5af187f
--- /dev/null
+++ b/config/nwg-look/.config/gtk-4.0/gtk.css
@@ -0,0 +1 @@
+/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/gtk.css
\ No newline at end of file
diff --git a/config/nwg-look/.config/gtk-4.0/settings.ini b/config/nwg-look/.config/gtk-4.0/settings.ini
new file mode 100644
index 0000000..1586ff7
--- /dev/null
+++ b/config/nwg-look/.config/gtk-4.0/settings.ini
@@ -0,0 +1,7 @@
+[Settings]
+gtk-theme-name=catppuccin-mocha-blue-standard+default
+gtk-icon-theme-name=Papirus
+gtk-font-name=Noto Sans, 10
+gtk-cursor-theme-name=Bibata-Modern-Ice
+gtk-cursor-theme-size=24
+gtk-application-prefer-dark-theme=1
diff --git a/config/scripts/.local/scripts/change-colortheme b/config/scripts/.local/scripts/change-colortheme
index 6005111..fdb1d05 100755
--- a/config/scripts/.local/scripts/change-colortheme
+++ b/config/scripts/.local/scripts/change-colortheme
@@ -45,11 +45,16 @@ SCRIPTS = {
"nwg-look": [CONFIG_DIR / "nwg-look" / "apply-color"],
"mako": [CONFIG_DIR / "mako" / "apply-color"],
"niri": [CONFIG_DIR / "niri" / "apply-color"],
- "oh-my-posh": [CONFIG_DIR / "fish" / "apply-color-omp"], # borrowing fish's directory
+ "oh-my-posh": [
+ CONFIG_DIR / "fish" / "apply-color-omp"
+ ], # borrowing fish's directory
"quickshell": [CONFIG_DIR / "quickshell" / "apply-color"],
"rofi": [CONFIG_DIR / "rofi" / "apply-color"],
"waybar": [CONFIG_DIR / "waybar" / "apply-color"],
- "wlogout": [CONFIG_DIR / ".alt" / "wlogout-default" / "apply-color", CONFIG_DIR / ".alt" / "wlogout-niri" / "apply-color"],
+ "wlogout": [
+ CONFIG_DIR / ".alt" / "wlogout-default" / "apply-color",
+ CONFIG_DIR / ".alt" / "wlogout-niri" / "apply-color",
+ ],
"yazi": [CONFIG_DIR / "yazi" / "apply-color"],
}
# or simply `find -L ${CONFIG_DIR} -type f -iname 'apply-color*'` to get all available scripts,
@@ -58,7 +63,7 @@ SCRIPTS = {
def hex2rgb(hex_color: str) -> tuple[int, int, int]:
"""#rrggbb to (r, g, b)"""
- return tuple(int(hex_color[i:i + 2], 16) for i in (0, 2, 4)) # type: ignore
+ return tuple(int(hex_color[i : i + 2], 16) for i in (0, 2, 4)) # type: ignore
def clamp(x, minimum, maximum) -> float:
@@ -68,27 +73,27 @@ def clamp(x, minimum, maximum) -> float:
def rgb2hsv(rr: int, gg: int, bb: int) -> tuple[float, float, float]:
"""(r, g, b) 0-255 to (h, s, v)"""
- r, g, b = rr/255.0, gg/255.0, bb/255.0
+ r, g, b = rr / 255.0, gg / 255.0, bb / 255.0
r = clamp(r, 0.0, 1.0)
g = clamp(g, 0.0, 1.0)
b = clamp(b, 0.0, 1.0)
mx = max(r, g, b)
mn = min(r, g, b)
- df = mx-mn
+ df = mx - mn
h = 0.0
if mx == mn:
h = 0.0
elif mx == r:
- h = (60 * ((g-b)/df) + 360) % 360
+ h = (60 * ((g - b) / df) + 360) % 360
elif mx == g:
- h = (60 * ((b-r)/df) + 120) % 360
+ h = (60 * ((b - r) / df) + 120) % 360
elif mx == b:
- h = (60 * ((r-g)/df) + 240) % 360
+ h = (60 * ((r - g) / df) + 240) % 360
if mx == 0:
s = 0.0
else:
- s = (df/mx)*100
- v = mx*100
+ s = (df / mx) * 100
+ v = mx * 100
return h, s, v
@@ -96,6 +101,7 @@ def extract_color(image_path: str) -> str:
"""Extract a dominant color from the image and return it as a #rrggbb string."""
# Only import when needed
from colorthief import ColorThief
+
ct = ColorThief(image_path)
# Get first 5 dominant colors
@@ -131,13 +137,15 @@ def extract_color(image_path: str) -> str:
def match_color(color: str, palette: dict[str, str]) -> str:
"""Match the given #rrggbb color to the closest flavor in the palette."""
- color = color.lower().strip().removeprefix('#')
+ color = color.lower().strip().removeprefix("#")
target_rgb = hex2rgb(color)
target_h, target_s, target_v = rgb2hsv(*target_rgb)
# Warn if not representative (nearly grayscale)
if target_s < 5:
- print(f"Warning: Extracted color {color} is nearly grayscale. Matching might be inaccurate.")
+ print(
+ f"Warning: Extracted color {color} is nearly grayscale. Matching might be inaccurate."
+ )
def get_weighted_distance(hex_val: str) -> float:
p_rgb = hex2rgb(hex_val)
@@ -148,7 +156,9 @@ def match_color(color: str, palette: dict[str, str]) -> str:
dr = target_rgb[0] - p_rgb[0]
dg = target_rgb[1] - p_rgb[1]
db = target_rgb[2] - p_rgb[2]
- rgb_distance = ((2 + rmean / 256) * dr**2 + 4 * dg**2 + (2 + (255 - rmean) / 256) * db**2) ** 0.5
+ rgb_distance = (
+ (2 + rmean / 256) * dr**2 + 4 * dg**2 + (2 + (255 - rmean) / 256) * db**2
+ ) ** 0.5
# Hue difference (with wrapping)
hue_diff = abs(target_h - p_h)
@@ -160,24 +170,27 @@ def match_color(color: str, palette: dict[str, str]) -> str:
return rgb_distance + (hue_diff * hue_weight * 3)
- closest_flavor = min(palette.keys(), key=lambda k: get_weighted_distance(palette[k]))
+ closest_flavor = min(
+ palette.keys(), key=lambda k: get_weighted_distance(palette[k])
+ )
print(f"Matched color #{color} to {closest_flavor} (#{palette[closest_flavor]})")
return closest_flavor
def pick_flavor_interactive(palette: dict[str, str]) -> str:
"""Prompt the user to pick a flavor interactively."""
+
def is_interactive() -> bool:
return sys.stdin.isatty() and sys.stdout.isatty()
def is_truecolor() -> bool:
- colorterm = os.environ.get('COLORTERM', '')
- term = os.environ.get('TERM', '')
+ colorterm = os.environ.get("COLORTERM", "")
+ term = os.environ.get("TERM", "")
return (
- 'truecolor' in colorterm or
- '24bit' in colorterm or
- term.endswith('-256color')
+ "truecolor" in colorterm
+ or "24bit" in colorterm
+ or term.endswith("-256color")
)
if is_interactive():
@@ -186,7 +199,9 @@ def pick_flavor_interactive(palette: dict[str, str]) -> str:
for i, flavor in enumerate(palette.keys(), 1):
r, g, b = hex2rgb(palette[flavor])
if isTruecolor:
- print(f"\033[38;2;{r};{g};{b}m█ {i}. {flavor}: #{palette[flavor]}\033[0m")
+ print(
+ f"\033[38;2;{r};{g};{b}m█ {i}. {flavor}: #{palette[flavor]}\033[0m"
+ )
else:
print(f"{i}. {flavor}")
while True:
@@ -221,13 +236,20 @@ def run_script(script_path: Path, args: list[str]):
def main():
- parser = argparse.ArgumentParser(description="Change color theme for various applications.")
- parser.add_argument('-i', '--image', type=str, help="Path to the image")
- parser.add_argument('-f', '--flavor', type=str, help="Flavor to apply")
- parser.add_argument('-c', '--color', type=str, help="Color to match from the palette")
- parser.add_argument('apps', nargs='*',
- help="'app1 !app2' to include(only) / exclude(all but) specific applications. "
- "Available apps: " + ', '.join(SCRIPTS.keys()))
+ parser = argparse.ArgumentParser(
+ description="Change color theme for various applications."
+ )
+ parser.add_argument("-i", "--image", type=str, help="Path to the image")
+ parser.add_argument("-f", "--flavor", type=str, help="Flavor to apply")
+ parser.add_argument(
+ "-c", "--color", type=str, help="Color to match from the palette"
+ )
+ parser.add_argument(
+ "apps",
+ nargs="*",
+ help="'app1 !app2' to include(only) / exclude(all but) specific applications. "
+ "Available apps: " + ", ".join(SCRIPTS.keys()),
+ )
arguments = parser.parse_args()
@@ -238,7 +260,9 @@ def main():
def parse_flavor(palette: dict[str, str]) -> str:
if arguments.flavor:
if arguments.flavor not in palette:
- print(f"Unknown flavor: {arguments.flavor}. Available flavors: {', '.join(palette.keys())}")
+ print(
+ f"Unknown flavor: {arguments.flavor}. Available flavors: {', '.join(palette.keys())}"
+ )
sys.exit(1)
flavor = arguments.flavor
elif arguments.color:
@@ -259,8 +283,8 @@ def main():
def parse_apps() -> tuple[set[str], set[str]]:
includes = set()
excludes = set()
- for arg in arguments.arguments:
- if arg.startswith('!'):
+ for arg in arguments.apps:
+ if arg.startswith("!"):
excludes.add(arg[1:])
else:
includes.add(arg)
@@ -278,7 +302,9 @@ def main():
if app in SCRIPTS:
apps.add(app)
else:
- print(f"Unknown application: {app}. Available applications: {', '.join(SCRIPTS.keys())}")
+ print(
+ f"Unknown application: {app}. Available applications: {', '.join(SCRIPTS.keys())}"
+ )
sys.exit(1)
else:
apps = set(SCRIPTS.keys())
@@ -297,10 +323,15 @@ def main():
for script in SCRIPTS[app]:
tasks.append(executor.submit(run_script, script, script_args))
- subprocess.run([
- "notify-send", "-a", "change-colortheme", "Colortheme Changed",
- f"Palette: {palette_name}\nFlavor: {flavor}"
- ])
+ subprocess.run(
+ [
+ "notify-send",
+ "-a",
+ "change-colortheme",
+ "Colortheme Changed",
+ f"Palette: {palette_name}\nFlavor: {flavor}",
+ ]
+ )
if __name__ == "__main__":