From e0a2d6bade93dbeef87da3c5f69d503f25a4bfe5 Mon Sep 17 00:00:00 2001 From: Daryl Ronningen Date: Wed, 13 Jul 2022 07:43:30 -0700 Subject: [PATCH] use custom picom fork --- .config/bspwm/bspwmrc | 2 +- .config/picom/picom.conf | 185 +++++++++++++++++---------------------- .gitmodules | 4 + picom | 1 + 4 files changed, 85 insertions(+), 107 deletions(-) create mode 160000 picom diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc index b2a0af9..09b82d9 100755 --- a/.config/bspwm/bspwmrc +++ b/.config/bspwm/bspwmrc @@ -9,7 +9,7 @@ pgrep -x polkit-gnome-au > /dev/null || /usr/lib/polkit-gnome/polkit-gnome-authe feh --bg-fill --randomize $HOME/backgrounds/* /usr/share/backgrounds/* & pgrep -x pasystray > /dev/null || pasystray & pgrep -x xscreensaver > /dev/null || xscreensaver -no-splash & -pgrep -x picom > /dev/null || picom --config $HOME/.config/picom/picom.conf --experimental-backends & +pgrep -x picom > /dev/null || picom --config $HOME/.config/picom/picom.conf --experimental-backends --animations --animation-for-open-window zoom & wmname LG3D & while pgrep -u $UID -f windows.sh >/dev/null; do pkill -f windows.sh; done diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf index ea017e2..082b0f3 100644 --- a/.config/picom/picom.conf +++ b/.config/picom/picom.conf @@ -1,58 +1,37 @@ ################################# -# Animations # +# Animations # ################################# -# requires https://github.com/jonaburg/picom -# (These are also the default values) -transition-length = 300 -transition-pow-x = 0.1 -transition-pow-y = 0.1 -transition-pow-w = 0.1 -transition-pow-h = 0.1 -size-transition = true -################################# -# Corners # -################################# -# requires: https://github.com/sdhand/compton or https://github.com/jonaburg/picom -corner-radius = 10.0; -rounded-corners-exclude = [ - "class_g = 'Polybar'", - "class_g = 'Dunst'" -]; -round-borders = 1; -round-borders-exclude = [ - "class_g = 'Polybar'", - "class_g = 'Dunst'" -]; +animations = true; +animation-for-open-window = "zoom"; +animation-for-transient-window = "zoom"; +animation-for-unmap-window = "zoom"; +animation-for-workspace-switch-in = "zoom"; +animation-for-workspace-switch-out = "zoom"; + ################################# # Shadows # ################################# + + # Enabled client-side shadows on windows. Note desktop windows # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, # unless explicitly requested using the wintypes option. shadow = false; # The blur radius for shadows, in pixels. (defaults to 12) -shadow-radius = 7; +# shadow-radius = 7; # The opacity of shadows. (0.0 - 1.0, defaults to 0.75) # shadow-opacity = .75 # The left offset for shadows, in pixels. (defaults to -15) -shadow-offset-x = -7; +# shadow-offset-x = -7; # The top offset for shadows, in pixels. (defaults to -15) -shadow-offset-y = -7; - -# Avoid drawing shadows on dock/panel windows. This option is deprecated, -# you should use the *wintypes* option in your config file instead. -# no-dock-shadow = false - -# Don't draw shadows on drag-and-drop windows. This option is deprecated, -# you should use the *wintypes* option in your config file instead. -# no-dnd-shadow = false +# shadow-offset-y = -7; # Red color value of shadow (0.0 - 1.0, defaults to 0). # shadow-red = 0 @@ -63,21 +42,17 @@ shadow-offset-y = -7; # Blue color value of shadow (0.0 - 1.0, defaults to 0). # shadow-blue = 0 -# Do not paint shadows on shaped windows. Note shaped windows -# here means windows setting its shape through X Shape extension. -# Those using ARGB background is beyond our control. -# Deprecated, use -# shadow-exclude = 'bounding_shaped' -# or -# shadow-exclude = 'bounding_shaped && !rounded_corners' -# instead. -# shadow-ignore-shaped = '' +# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue) +# shadow-color = "#000000" # Specify a list of conditions of windows that should have no shadow. # # examples: # shadow-exclude = "n:e:Notification"; -shadow-exclude = []; +# shadow-exclude = [] + +# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window. +# clip-shadow-above = [] # Specify a X geometry that describes the region in which shadow should not # be painted in, such as a dock window region. Use @@ -92,24 +67,23 @@ shadow-exclude = []; ################################# # Fading # ################################# + + # Fade windows in/out when opening/closing and when opacity changes, # unless no-fading-openclose is used. -fading = true; +fading = false; # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) -# fade-in-step = 0.028 fade-in-step = 0.03; # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) -# fade-out-step = 0.03 fade-out-step = 0.03; # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) # fade-delta = 10 # Specify a list of conditions of windows that should not be faded. -# don't need this, we disable fading for all normal windows with wintypes: {} -fade-exclude = [] +# fade-exclude = [] # Do not fade on window open/close. # no-fading-openclose = false @@ -121,29 +95,24 @@ fade-exclude = [] ################################# # Transparency / Opacity # ################################# + + # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) inactive-opacity = 0.8; # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) frame-opacity = 0.7; -# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0) -# menu-opacity = 1.0 - -#If using these 2 below change their values in line 510 & 511 aswell -popup_menu = { opacity = 0.8; } -dropdown_menu = { opacity = 0.8; } - -# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. -inactive-opacity-override = false; +# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows. +inactive-opacity-override = true; # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) -active-opacity = 1.0; +# active-opacity = 1.0 # Dim inactive windows. (0.0 - 1.0, defaults to 0.0) # inactive-dim = 0.0 -# Specify a list of conditions of windows that should always be considered focused. +# Specify a list of conditions of windows that should never be considered focused. # focus-exclude = [] # Use fixed inactive dim value, instead of adjusting according to window opacity. @@ -155,72 +124,83 @@ active-opacity = 1.0; # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. # example: # opacity-rule = [ "80:class_g = 'URxvt'" ]; -# # opacity-rule = [] +################################# +# Corners # +################################# + +# Sets the radius of rounded window corners. When > 0, the compositor will +# round the corners of windows. Does not interact well with +# `transparent-clipping`. +corner-radius = 10 + +# Exclude conditions for rounded corners. +rounded-corners-exclude = [ + "class_g = 'Polybar'", + "class_g = 'Dunst'" +]; + + ################################# # Background-Blurring # ################################# + + # Parameters for background blurring, see the *BLUR* section for more information. -# blur-method = -# blur-size = 12 -# blur-deviation = false +blur-method = "dual_kawase" +blur-size = 12 +blur-deviation = true +blur-strength = 7 # Blur background of semi-transparent / ARGB windows. # Bad in performance, with driver-dependent behavior. # The name of the switch may change without prior notifications. -# blur-background = true; +blur-background = true # Blur background of windows when the window frame is not opaque. # Implies: # blur-background # Bad in performance, with driver-dependent behavior. The name may change. -# blur-background-frame = false; +blur-background-frame = true + # Use fixed blur strength rather than adjusting according to window opacity. -# blur-background-fixed = false; +blur-background-fixed = true + # Specify the blur convolution kernel, with the following format: # example: # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; -# blur-kern = "3x3box"; +blur-kern = "3x3box"; -blur: { - method = "kawase"; - strength = 7; - background = false; - background-frame = false; - background-fixed = false; - kern = "3x3box"; -} # Exclude conditions for background blur. -blur-background-exclude = []; - +# blur-background-exclude = [] ################################# # General Settings # ################################# +# Enable remote control via D-Bus. See the man page for more details. +# dbus = true + # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. # daemon = false # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. # `xrender` is the default one. -experimental-backends = true; -backend = "glx"; - +backend = "glx" # Enable/disable VSync. -vsync = true +vsync = true; # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. # dbus = false # Try to detect WM windows (a non-override-redirect window with no # child that has 'WM_STATE') and mark them as active. -# mark-wmwin-focused = true; # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. @@ -230,21 +210,10 @@ mark-ovredir-focused = true; # shaped windows. The accuracy is not very high, unfortunately. detect-rounded-corners = true; -# Detect '_NET_WM_OPACITY' on client windows, useful for window managers -# not passing '_NET_WM_OPACITY' of client windows to frame windows. +# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers +# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. detect-client-opacity = true; -# Specify refresh rate of the screen. If not specified or 0, picom will -# try detecting this with X RandR extension. -refresh-rate = 0 - -# Limit picom to repaint at most once every 1 / 'refresh_rate' second to -# boost performance. This should not be used with -# vsync drm/opengl/opengl-oml -# as they essentially does sw-opti's job already, -# unless you wish to specify a lower refresh rate than the actual value. -# sw-opti = - # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, # provided that the WM supports it. @@ -252,7 +221,7 @@ refresh-rate = 0 # Unredirect all windows if a full-screen opaque window is detected, # to maximize performance for full-screen windows. Known to cause flickering -# when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. +# when redirecting/unredirecting windows. # unredir-if-possible = false # Delay before unredirecting the window, in milliseconds. Defaults to 0. @@ -263,12 +232,13 @@ refresh-rate = 0 # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows # in the same group focused at the same time. -detect-transient = true +detect-transient = true; # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same -# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if -# detect-transient is enabled, too. -detect-client-leader = true +# group focused at the same time. This usually means windows from the same application +# will be considered focused or unfocused at the same time. +# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too. +# detect-client-leader = false # Resize damaged region by a specific number of pixels. # A positive value enlarges it while a negative one shrinks it. @@ -302,7 +272,7 @@ detect-client-leader = true # This cause the whole screen to be redrawn everytime, instead of the part of the screen # has actually changed. Potentially degrades the performance, but might fix some artifacts. # The opposing option is use-damage -use-damage = false +use-damage = true; # Use X Sync fence to sync clients' draw calls, to make sure all draw # calls are finished before picom starts drawing. Needed on nvidia-drivers @@ -312,7 +282,7 @@ use-damage = false # GLX backend: Use specified GLSL fragment shader for rendering window contents. # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` # in the source tree for examples. -# glx-fshader-win = '' +# glx-fshader-win = "" # Force all windows to be painted with blending. Useful if you # have a glx-fshader-win that could turn opaque pixels transparent. @@ -344,13 +314,13 @@ log-level = "info"; # Otherwise, logs will to written to the given file, though some of the early # logs might still be written to the stderr. # When setting this option from the config file, it is recommended to use an absolute path. -# log-file = '/path/to/your/log/file' +# log-file = "/path/to/your/log/file" # Show all X errors (for debugging) # show-all-xerrors = false # Write process ID to a file. -# write-pid-path = '/path/to/your/log/file' +# write-pid-path = "/path/to/your/log/file" # Window type settings # @@ -376,10 +346,13 @@ log-level = "info"; # normally won't be able to see. Useful when the window has parts of it # transparent, and you want shadows in those areas. # +# clip-shadow-above::: +# Controls wether shadows that would have been drawn above the window should +# be clipped. Useful for dock windows that should have no shadow painted on top. +# # redir-ignore::: # Controls whether this type of windows should cause screen to become # redirected again after been unredirected. If you have unredir-if-possible # set, and doesn't want certain window to cause unnecessary screen redirection, # you can set this to `true`. -# wintypes: {}; diff --git a/.gitmodules b/.gitmodules index 0a52535..f277de3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,7 @@ path = .config/nvim url = https://code.relms.dev/Relms/neovim-config branch = main +[submodule "picom"] + path = picom + url = https://code.relms.dev/Relms/picom + branch = implement-window-animations diff --git a/picom b/picom new file mode 160000 index 0000000..e96afc9 --- /dev/null +++ b/picom @@ -0,0 +1 @@ +Subproject commit e96afc9830ca3fbbcf14a72838b84e201ad79863