diff --git a/config/picom/picom-animations.conf b/config/picom/picom-animations.conf new file mode 100755 index 0000000..b101824 --- /dev/null +++ b/config/picom/picom-animations.conf @@ -0,0 +1,262 @@ +# Animations for NORMAL windows. + { + match = "window_type = 'normal'"; + animations = ( + { + triggers = ["close"]; + opacity = { + curve = "cubic-bezier(0,1,1,1)"; + duration = 0.6; + start = "window-raw-opacity-before"; + end = 0; + }; + blur-opacity = "opacity"; + shadow-opacity = "opacity"; + + scale-x = { + curve = "cubic-bezier(0,1.3,1,1)"; + duration = 0.6; + start = 1; + end = 0.6; + }; + scale-y = "scale-x"; + + offset-x = "(1 - scale-x) / 2 * window-width"; + offset-y = "(1 - scale-y) / 2 * window-height"; + + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; + }, + + # Animación de APERTURA + { + triggers = ["open"]; + opacity = { + curve = "cubic-bezier(0,1,1,1)"; + duration = 0.5; + start = 0; + end = "window-raw-opacity"; + }; + blur-opacity = "opacity"; + shadow-opacity = "opacity"; + + scale-x = { + curve = "cubic-bezier(0,1.3,1,1)"; + duration = 0.5; + start = 0.6; + end = 1; + }; + scale-y = "scale-x"; + + offset-x = "(1 - scale-x) / 2 * window-width"; + offset-y = "(1 - scale-y) / 2 * window-height"; + + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; + }, + + # Animación de GEOMETRÍA (modificada para ambos casos) + { + triggers = ["geometry"]; + # Cuando la ventana CRECE (abrir/mover/redimensionar) + scale-x = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.5; + start = "window-width-before / window-width"; + end = 1; + }; + + # Cuando la ventana ENCOGE (cerrar/mover/redimensionar) + scale-x-reverse = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.6; + start = "window-width / window-width-before"; + end = 1; + }; + scale-y = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.5; + start = "window-height-before / window-height"; + end = 1; + }; + scale-y-reverse = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.6; + start = "window-height / window-height-before"; + end = 1; + }; + offset-x = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.5; + start = "window-x-before - window-x"; + end = 0; + }; + offset-y = { + curve = "cubic-bezier(0,0,0,1.28)"; + duration = 0.5; + start = "window-y-before - window-y"; + 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 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 = 'bspwm-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/config/picom/picom.conf b/config/picom/picom.conf index fd52f76..1b916bb 100644 --- a/config/picom/picom.conf +++ b/config/picom/picom.conf @@ -1,147 +1,160 @@ -animations = true; -animation-stiffness-in-tag = 120; -animation-stiffness-tag-change = 90.0; -animation-window-mass = 0.3; -animation-dampening = 5; -animation-clamping = false; +## ----- Shadows ----- ## -animation-for-open-window = "zoom"; -animation-for-unmap-window = "zoom"; -animation-for-transient-window = "zoom"; -animation-for-prev-tag = "zoom"; -animation-for-next-tag = "zoom"; -animation-for-workspace-switch-in = "zoom"; -animation-for-workspace-switch-out = "zoom"; +#shadow = true; -animation-max-size = 20; +shadow-radius = 1; +shadow-opacity = .1; +shadow-offset-x = -7; +shadow-offset-y = -7; +shadow-color = "#000000" + +## ----- Fading ----- ## -enable-fading-prev-tag = true; -enable-fading-next-tag = true; fading = true; -fade-in-step = 0.07; -fade-out-step = 0.06; -fade-delta = 5; -shadow = true; -shadow-radius = 12; -shadow-offset-x = -5; -shadow-offset-y = -5; -shadow-opacity = 0.7; -shadow-color = "#000000"; -shadow-exclude = [ - "class_g = 'slop'", - "class_g = 'maim'", - "class_g = 'import'", - "class_g = 'imagemagick'", - "name = 'slop'", - "name = 'select-region'", - "name = 'select region'", - "window_type = 'utility'", - "window_type = 'notification'", - "window_type = 'dock'", - "_NET_WM_WINDOW_TYPE@:32a *= '_NET_WM_WINDOW_TYPE_DOCK'" -]; +fade-in-step = 0.03; +fade-out-step = 0.03; +fade-delta = 5 +no-fading-openclose = false +no-fading-destroyed-argb = false -blur-background = true; -blur-background-frame = true; -blur-method = "dual_kawase"; -blur-strength = 6; -blur-kern = "3x3box"; -blur-background-fixed = false; -blur-exclude = [ - "class_g = 'slop'", - "class_g = 'maim'", - "class_g = 'import'", - "class_g = 'imagemagick'", - "name = 'slop'", - "name = 'select-region'", - "name = 'select region'", - "window_type = 'utility'", - "window_type = 'notification'", - "window_type = 'dock'", - "_NET_WM_WINDOW_TYPE@:32a *= '_NET_WM_WINDOW_TYPE_DOCK'" -]; +## ----- Transparency ----- ## -rounded-corners-exclude = [ - "class_g = 'slop'", - "class_g = 'maim'" -]; +frame-opacity = 1.0; -opacity-rule = [ - "93:class_g = 'discord'", - "93:class_g = 'spotify'", - "80:class_g = 'st'", - "80:class_g = 'urxvt'", - "80:class_g = 'dmenu'", - "85:class_g = 'dwm'", - "100:class_g = 'floorp'", - "100:class_g = 'firefox'", - "100:class_g = 'slop'" -]; +# inactive-dim-fixed = true -focus-exclude = [ - "class_g = 'slop'", - "class_g = 'maim'" -]; +## ----- Corners ----- ## -animation-exclude = [ - "class_g = 'slop'", - "class_g = 'maim'" -]; +corner-radius = 0 + +################################# +# General Settings # +################################# + +# Available backends "xrender" "glx" "egl" +backend = "xrender" -daemon = false; -backend = "glx"; dithered-present = false; vsync = true; -mark-wmwin-focused = true; -mark-ovredir-focused = true; + detect-rounded-corners = true; detect-client-opacity = true; -use-ewmh-active-win = true; -unredir-if-possible = false; detect-transient = true; -glx-no-stencil = true; -use-damage = true; -xrender-sync-fence = true; -window-shader-fg = "default"; -transparent-clipping = false; -log-level = "warn"; -wintypes: { - tooltip = { - fade = true; - shadow = true; - opacity = 0.95; - focus = true; - animations = true; - animation-for-open-window = "zoom"; - }; - dock = { - shadow = false; - clip-shadow-above = true; - }; - dnd = { - shadow = false; - }; - popup_menu = { - opacity = 0.95; - animations = true; - shadow = true; - animation-for-open-window = "zoom"; - }; - dropdown_menu = { - opacity = 0.95; - animations = true; - shadow = true; - animation-for-open-window = "zoom"; - }; - unknown = { - fade = false; - shadow = false; - opacity = 1.0; - focus = false; - full-shadow = false; - clip-shadow-above = false; - animations = false; - }; -}; +use-damage = true; +# xrender-sync-fence = false +# transparent-clipping = false + +################################# +# Rules # +################################# + + + +blur: + + { + method = "dual_kawase"; + size = 10; + deviation = 2.5; + } + +rules: ( + + { + blur-background = true; + blur-background-fixed = true; + fade = false; + }, + + { + match = "window_type = 'dock'"; + corner-radius = 0; + shadow = false; + }, + + { + match = "class_g = 'dwm' || class_g = 'Polybar' || class_g = 'dmenu'"; + corner-radius = 0; + blur-background = true; + opacity = 0.80; + shadow = false; + }, + + { + match = "fullscreen = true"; + corner-radius = 0; + }, + + { + 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 = 1.0; #-term-opacity-switch + blur-background = true; #-blur-switch + }, + + { + match = "class_g = 'Polybar' || " + "class_g = 'eww-bar' || " + "class_g = 'Viewnior' || " + "class_g = 'Rofi' || " + "class_g = 'mpv' || " + "class_g = 'bspwm-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 = 'Eww' || " + "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; + }, + +@include "picom-animations.conf" + +) + + +