diff --git a/home/dwm/default.nix b/home/dwm/default.nix index 38c57f3..7c2a41c 100644 --- a/home/dwm/default.nix +++ b/home/dwm/default.nix @@ -73,9 +73,6 @@ ".zprofile" = { source = ./.zprofile; }; - ".config/picom/black_to_transparent.frag" = { - source = ./black_to_transparent.frag; - }; ".config/bar.sh" = { source = ./bar.sh; }; diff --git a/home/dwm/picom-animations.conf b/home/dwm/picom-animations.conf new file mode 100644 index 0000000..570938b --- /dev/null +++ b/home/dwm/picom-animations.conf @@ -0,0 +1,257 @@ +# Animations for NORMAL windows. + { + match = "window_type = 'normal'"; + animations = ( + { + triggers = ["close", "hide"]; + opacity = { + curve = "linear"; + duration = 0.1; + start = "window-raw-opacity-before"; + end = 0; + }; + blur-opacity = "opacity"; + shadow-opacity = "opacity"; + }, + { + triggers = ["open", "show"]; + opacity = { + curve = "cubic-bezier(0,1,1,1)"; + duration = 0.5; + start = 0; + end = "window-raw-opacity"; + }; + blur-opacity = "opacity"; + shadow-opacity = "opacity"; + offset-x = "(1 - scale-x) / 2 * window-width"; + offset-y = "(1 - scale-y) / 2 * window-height"; + scale-x = { + curve = "cubic-bezier(0,1.3,1,1)"; + duration = 0.5; + start = 0.6; + end = 1; + }; + scale-y = "scale-x"; + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; + }, + { + triggers = ["geometry"]; + scale-x = { + curve = "cubic-bezier(0,0,0,1.15)"; + duration = 0.5; + start = "window-width-before / window-width"; + end = 1; + } + scale-y = { + curve = "cubic-bezier(0,0,0,1.15)"; + duration = 0.5; + start = "window-height-before / window-height"; + end = 1; + } + # offset-x = { + # curve = "cubic-bezier(0,0,0,1.15)"; + # duration = 0.5; + # start = 0; + # end = 0; + # } + # offset-y = { + # curve = "cubic-bezier(0,0,0,1.15)"; + # duration = 0.3; + # start = "window-height"; + # end = 0; + # } + # offset-x = { + # curve = "cubic-bezier(0,0,0,1.15)"; + # duration = 0.3; + # start = "window-x-before - window-monitor-x - window-x"; + # end = 0; + # } + offset-y = { + curve = "cubic-bezier(0,0,0,1.15)"; + duration = 0.3; + start = "window-height / 2"; + end = 0; + } + + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + # shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; + } + ) + }, + +# Animations for Rofi launchers. + { + match = "class_g = 'Rofi'"; + animations = ( + { + triggers = ["close", "hide"]; + preset = "disappear"; + duration = 0.05; + scale = 0.5; + }, + { + triggers = ["open", "show"]; + preset = "appear"; + duration = 0.2; + scale = 0.5; + } + ) + }, + + +# Animations for Flameshot. + { + match = "class_g = 'flameshot'"; + animations = ( + { + triggers = ["close", "hide"]; + preset = "disappear"; + duration = 0.1; + scale = 1; + }, + { + triggers = ["open", "show"]; + preset = "appear"; + duration = 0.1; + scale = 1; + } + ) + }, + +# Animations for Dunst notifications. + { + match = "class_g = 'Dunst'"; + animations = ( + { + triggers = ["close", "hide"]; + preset = "fly-out"; #-dunst-close-preset + direction = "up"; #-dunst-close-direction + duration = 0.2; + }, + { + triggers = ["open", "show"]; + preset = "fly-in"; #-dunst-open-preset + direction = "up"; #-dunst-open-direction + duration = 0.2; + } + ) + }, + +# # Animations for Jgmenu. +# { +# match = "class_g = 'jgmenu'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "disappear"; +# duration = 0.08; +# scale = 0.5; +# }, +# { +# triggers = ["open", "show"]; +# preset = "appear"; +# duration = 0.15; +# scale = 0.5; +# } +# ) +# }, +# +# # Animations for Scratchpad. +# { +# match = "class_g = 'Scratch'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "fly-out"; +# direction = "up"; +# duration = 0.2; +# }, +# { +# triggers = ["open", "show"]; +# preset = "fly-in"; +# direction = "up"; +# duration = 0.2; +# } +# ) +# }, +# +# # Animations for Eww Profile card. +# { +# match = "name = 'Eww - launchermenu'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "slide-out"; +# direction = "right"; +# duration = 0.2; +# }, +# { +# triggers = ["open", "show"]; +# preset = "slide-in"; +# direction = "right"; +# duration = 0.2; +# } +# ) +# }, +# +# # Animations for Eww Music player. +# { +# match = "name = 'Eww - music'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "slide-out"; +# direction = "up"; +# duration = 0.2; +# }, +# { +# triggers = ["open", "show"]; +# preset = "slide-in"; +# direction = "up"; +# duration = 0.2; +# } +# ) +# }, +# +# # Animations for Eww calendar. +# { +# match = "name = 'Eww - date'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "fly-out"; +# direction = "up"; +# duration = 0.2; +# }, +# { +# triggers = ["open", "show"]; +# preset = "fly-in"; +# direction = "up"; +# duration = 0.2; +# } +# ) +# }, +# +# # Animations for Eww Cheatsheet. +# { +# match = "name = 'Eww - csheet'"; +# animations = ( +# { +# triggers = ["close", "hide"]; +# preset = "disappear"; +# duration = 0.08; +# scale = 0.5; +# }, +# { +# triggers = ["open", "show"]; +# preset = "appear"; +# duration = 0.15; +# scale = 0.5; +# } +# ) +# } diff --git a/home/dwm/picom.conf b/home/dwm/picom.conf new file mode 100644 index 0000000..2ef7b5a --- /dev/null +++ b/home/dwm/picom.conf @@ -0,0 +1,146 @@ +## ----- Shadows ----- ## + +shadow = true; + +shadow-radius = 7; +#shadow-opacity = .6 +shadow-offset-x = -7; +shadow-offset-y = -7; +shadow-color = "#000000" + +## ----- Fading ----- ## + +fading = true; + +fade-in-step = 0.03; +fade-out-step = 0.03; +fade-delta = 5 +no-fading-openclose = false +no-fading-destroyed-argb = false + +## ----- Transparency ----- ## + +frame-opacity = 1.0; + +# inactive-dim-fixed = true + +## ----- Corners ----- ## + +corner-radius = 10 + +################################# +# General Settings # +################################# + +# Available backends "xrender" "glx" "egl" +backend = "glx" + +dithered-present = false; +vsync = true; + +detect-rounded-corners = true; +detect-client-opacity = true; +detect-transient = true; + +use-damage = true; +# xrender-sync-fence = false +# transparent-clipping = false + +################################# +# Rules # +################################# + +blur: + + { + method = "gaussian"; + size = 90; + deviation = 30; + } + +rules: ( + + { + blur-background = false; + fade = false; + }, + + { + match = "window_type = 'normal'"; + fade = true; #-fade-switch + shadow = true; #-shadow-switch + }, + + { + match = "window_type = 'dialog'"; + shadow = true; #-shadow-switch + }, + + { + match = "window_type = 'tooltip'"; + corner-radius = 0; + opacity = 0.90; + }, + + { + match = "window_type = 'dock'"; + corner-radius = 0; + fade = true; + }, + + { + match = "window_type = 'dropdown_menu' || window_type = 'menu' || window_type = 'popup' || window_type = 'popup_menu'"; + corner-radius = 0; + }, + + { + match = "class_g = 'Alacritty' || class_g = 'kitty' || class_g = 'FloaTerm'"; + opacity = 0.95; #-term-opacity-switch + blur-background = true; #-blur-switch + }, + + { + match = "class_g = 'Scratch' || class_g = 'Updating'"; + opacity = 0.93; + blur-background = false; #-blur-switch + }, + + { + match = "class_g = 'Polybar' || " + "class_g = 'eww-bar' || " + "class_g = 'Viewnior' || " + "class_g = 'Rofi' || " + "class_g = 'mpv' || " + "class_g = 'scratch' || " + "class_g = 'Dunst' || " + "class_g = 'retroarch'"; + corner-radius = 0; + }, + + { + match = "name = 'Notification' || " + "class_g ?= 'Notify-osd' || " + "class_g = 'Dunst' || " + "class_g = 'Polybar' || " + "class_g = 'jgmenu' || " + "class_g = 'scratch' || " + "class_g = 'Spotify' || " + "class_g = 'retroarch' || " + "class_g = 'firefox' || " + "class_g = 'Rofi' || " + "class_g = 'Screenkey' || " + "class_g = 'mpv' || " + "class_g = 'Viewnior' || " + "_GTK_FRAME_EXTENTS@"; + shadow = false; + }, + + { + match = "class_g = 'i3lock'"; + shader = "black_to_transparent.frag"; + blur-background = true; + }, + +@include "picom-animations.conf" + +) diff --git a/home/dwm/picom.nix b/home/dwm/picom.nix index 1bd7a6e..e08ee1b 100644 --- a/home/dwm/picom.nix +++ b/home/dwm/picom.nix @@ -4,6 +4,21 @@ pkgs, ... }: { + + home.file = { + # ".config/picom/picom.conf" = { + # text = builtins.readFile ./picom.conf; + # }; + + ".config/picom/picom-animations.conf" = { + text = builtins.readFile ./picom-animations.conf; + }; + + ".config/picom/black_to_transparent.frag" = { + text = builtins.readFile ./black_to_transparent.frag; + }; + }; + services.picom = { enable = true; package = pkgs.picom;