From 8b5ecc30614259eef0d0d618508c506f8c726364 Mon Sep 17 00:00:00 2001 From: doryan Date: Fri, 13 Sep 2024 17:16:14 +0400 Subject: [PATCH] feat: change picom build --- bspwm/bspwmrc | 2 +- picom/picom.conf | 310 +++++++++++++++++++++++++++++------------------ 2 files changed, 191 insertions(+), 121 deletions(-) diff --git a/bspwm/bspwmrc b/bspwm/bspwmrc index c8875a0..33e72a3 100755 --- a/bspwm/bspwmrc +++ b/bspwm/bspwmrc @@ -30,7 +30,7 @@ bspc config presel_border_color "#26E2FF" bash $HOME/.config/polybar/launch.sh & sxhkd & -picom --experimental-backends & +picom & nitrogen --restore & dunst & xsetroot -cursor_name left_ptr & diff --git a/picom/picom.conf b/picom/picom.conf index 27a7aa7..d60714d 100644 --- a/picom/picom.conf +++ b/picom/picom.conf @@ -1,37 +1,55 @@ ################################# -# Animation Settings # +# Animations # + +# !These animations WILL NOT work correctly for any other wm other than phyOS-dwm fork! + +# fly-in: Windows fly in from random directions to the screen +# maximize: Windows pop from center of the screen to their respective positions +# minimize: Windows minimize from their position to the center of the screen +# slide-in-center: Windows move from upper-center of the screen to their respective positions +# slide-out-center: Windows move to the upper-center of the screen +# slide-left: Windows are created from the right-most window position and slide leftwards +# slide right: Windows are created from the left-most window position and slide rightwards +# slide-down: Windows are moved from the top of the screen and slide downward +# slide-up: Windows are moved from their position to top of the screen +# squeeze: Windows are either closed or created to/from their center y-position (the animation is similar to a blinking eye) +# squeeze-bottom: Similar to squeeze, but the animation starts from bottom-most y-position +# zoom: Windows are either created or destroyed from/to their center (not the screen center) + ################################# +#enable or disable animations animations = true; +#change animation speed of windows in current tag e.g open window in current tag +animation-stiffness-in-tag = 250; +#change animation speed of windows when tag changes +animation-stiffness-tag-change = 90.0; -# Values can be none, auto, fly-in, zoom, squeeze, slide-up, slide-down, slide-left, slide-right -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"; - -# Stiffness (a.k.a. tension) parameter for spring-based animation (default: 200.0). -animation-stiffness = 500; - -# Dampening (a.k.a. friction) parameter for spring-based animation (default: 25.0). -animation-dampening = 30; - -# Mass parameter for spring-based animation (default: 1.0). -animation-window-mass = 0.25; - -# The time between steps in animation, in milliseconds. (> 0, defaults to 10). -animation-delta = 15; - -# Force animations to go step by step even if cpu usage is high -animation-force-steps = false; - -# Whether to clamp animations (default: true). +animation-window-mass = 0.3; +animation-dampening = 15; animation-clamping = true; +#open windows +animation-for-open-window = "zoom"; +#minimize or close windows +animation-for-unmap-window = "zoom"; +#popup windows +animation-for-transient-window = "zoom"; #available options: slide-up, slide-down, slide-left, slide-right, squeeze, squeeze-bottom, zoom + +#set animation for windows being transitioned out while changings tags +animation-for-prev-tag = "minimize"; +#enables fading for windows being transitioned out while changings tags +enable-fading-prev-tag = true; + +#set animation for windows being transitioned in while changings tags +animation-for-next-tag = "slide-in-center"; +#enables fading for windows being transitioned in while changings tags +enable-fading-next-tag = true; + animation-exclude = [ - "class_g *= 'flameshot'", - "class_g *= 'i3lock'" + "window_type = 'dock'", + "class_g = 'flameshot'", + "class_g = 'polybar'", ]; ################################# @@ -42,41 +60,65 @@ animation-exclude = [ # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, # unless explicitly requested using the wintypes option. # -# Can be set per-window using rules. -# -# Default: false +# shadow = false shadow = false; -# The blur radius for shadows, in pixels. -# -# Default: 12 -shadow-radius = 7; +# The blur radius for shadows, in pixels. (defaults to 12) +# shadow-radius = 12 +shadow-radius = 60; -# The opacity of shadows. -# -# Range: 0.0 - 1.0 -# Default: 0.75 +# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) # shadow-opacity = .75 -# The left offset for shadows, in pixels. -# -# Default: -15 -shadow-offset-x = -7; +# The left offset for shadows, in pixels. (defaults to -15) +# shadow-offset-x = -15 +shadow-offset-x = -20; -# The top offset for shadows, in pixels. -# -# Default: -15 -shadow-offset-y = -7; +# The top offset for shadows, in pixels. (defaults to -15) +# shadow-offset-y = -15 +shadow-offset-y = -20; -# Hex string color value of shadow. Formatted like "#RRGGBB", e.g. "#C0FFEE". -# -# Default: #000000 +# Red color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-red = 0 + +# Green color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-green = 0 + +# Blue color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-blue = 0 + +# 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 = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "class_g = 'dwm'", + "class_g = 'chromium'", + "class_g *?= 'slop'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# 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 +# shadow-exclude-reg = "x10+0+0" +# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. +# +# shadow-exclude-reg = "" + # Crop shadow of a window fully on a particular monitor to that monitor. This is # currently implemented using the X RandR extension. -# -# Default: false # crop-shadow-to-monitor = false @@ -84,20 +126,24 @@ shadow-offset-y = -7; # Fading # ################################# + # Fade windows in/out when opening/closing and when opacity changes, -# unless no-fading-openclose is used. Can be set per-window using rules. -# -# Default: false -fading = false; +# unless no-fading-openclose is used. +fading = true; # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) -fade-in-step = 0.03; +# fade-in-step = 0.028 +fade-in-step = 0.023; # 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 +fade-out-step = 0.023; # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) -# fade-delta = 10 +fade-delta = 5 + +# Specify a list of conditions of windows that should not be faded. +# fade-exclude = [] # Do not fade on window open/close. # no-fading-openclose = false @@ -110,16 +156,31 @@ fade-out-step = 0.03; # Transparency / Opacity # ################################# -# Opacity of window titlebars and borders. -# -# Range: 0.1 - 1.0 -# Default: 1.0 (disabled) -frame-opacity = 1.0; + +# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) +# inactive-opacity = 1 + +# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) +# frame-opacity = 1.0 + +# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows. +# inactive-opacity-override = true +inactive-opacity-override = true; + +# Default opacity for active windows. (0.0 - 1.0, defaults to 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 never be considered focused. +# focus-exclude = [] +focus-exclude = [ +"class_g = 'Cairo-clock'" , +]; # Use fixed inactive dim value, instead of adjusting according to window opacity. -# -# Default: false -# inactive-dim-fixed = true +# inactive-dim-fixed = 1.0 ################################# # Corners # @@ -128,69 +189,58 @@ frame-opacity = 1.0; # Sets the radius of rounded window corners. When > 0, the compositor will # round the corners of windows. Does not interact well with # `transparent-clipping`. -# -# Default: 0 (disabled) corner-radius = 2; -################################# -# Blur # -################################# +# Exclude conditions for rounded corners. +#rounded-corners-exclude = [ +# "window_type = 'dock'", +# "window_type = 'desktop'" +#]; -# Parameters for background blurring, see BLUR section in the man page for more information. -# blur-method = -# blur-size = 12 -# blur-deviation = true -# -# blur-strength = 5 - -# Blur background of semi-transparent / ARGB windows. -# Can be set per-window using rules. -# -# Default: false -# blur-background = true - -# Blur background of windows when the window frame is not opaque. -# Implies: -# blur-background -# -# Default: false -# blur-background-frame = false - -# Use fixed blur strength rather than adjusting according to window opacity. -# -# Default: false -# blur-background-fixed = false +blur: { + method = "dual_kawase"; + strength = 9; + background = true; + background-frame = false; + background-fixed = false; +} -# 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"; -# Can also be a pre-defined kernel, see the man page. -# -# Default: "" -blur-kern = "3x3box"; +# Exclude conditions for background blur. +# blur-background-exclude = [] +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c", + "class_g = 'Chromium'", + "class_g = 'Discord'", + "class_g = 'Dunst'", + "class_g = 'Peek'", + "class_g *?= 'slop'", +]; ################################# # 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`. +# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`. # `xrender` is the default one. # -# backend = "glx" -backend = "glx"; +backend = "egl" + +# Use higher precision during rendering, and apply dither when presenting the +# rendered screen. Reduces banding artifacts, but might cause performance +# degradation. Only works with OpenGL. +dithered-present = false; # Enable/disable VSync. -# vsync = false +vsync = true; # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. -dbus = false +# dbus = false # Try to detect WM windows (a non-override-redirect window with no # child that has 'WM_STATE') and mark them as active. @@ -206,25 +256,25 @@ mark-ovredir-focused = true; # shaped windows. The accuracy is not very high, unfortunately. # # detect-rounded-corners = false -detect-rounded-corners = true; +detect-rounded-corners = false; # 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 = false -detect-client-opacity = true; +detect-client-opacity = false; # 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. # -# use-ewmh-active-win = false +use-ewmh-active-win = true; # 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. # -# unredir-if-possible = false +unredir-if-possible = false; # Delay before unredirecting the window, in milliseconds. Defaults to 0. # unredir-if-possible-delay = 0 @@ -268,7 +318,7 @@ detect-transient = true; # practically happened) and may not work with blur-background. # My tests show a 15% performance boost. Recommended. # -# glx-no-stencil = false +glx-no-stencil = true; # GLX backend: Avoid rebinding pixmap on window damage. # Probably could improve performance on rapid window content changes, @@ -278,7 +328,7 @@ detect-transient = true; # glx-no-rebind-pixmap = false # Disable the use of damage information. -# This cause the whole screen to be redrawn everytime, instead of the part of the screen +# This cause the whole screen to be redrawn every time, 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 # @@ -289,18 +339,18 @@ use-damage = true; # calls are finished before picom starts drawing. Needed on nvidia-drivers # with GLX backend for some users. # -# xrender-sync-fence = false +xrender-sync-fence = true; # 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 = "" +window-shader-fg = "default"; # Force all windows to be painted with blending. Useful if you # have a glx-fshader-win that could turn opaque pixels transparent. # -# force-win-blend = false +# force-win-blend = true; # Do not use EWMH to detect fullscreen windows. # Reverts to checking if a window is fullscreen based only on its size and coordinates. @@ -317,7 +367,13 @@ use-damage = true; # Make transparent windows clip other windows like non-transparent windows do, # instead of blending on top of them. # -# transparent-clipping = false +transparent-clipping = false; + +# Specify a list of conditions of windows that should never have transparent +# clipping applied. Useful for screenshot tools, where you need to be able to +# see through transparent parts of the window. +# +# transparent-clipping-exclude = [] # Set the log level. Possible values are: # "trace", "debug", "info", "warn", "error" @@ -367,7 +423,7 @@ log-level = "warn"; # transparent, and you want shadows in those areas. # # clip-shadow-above::: -# Controls wether shadows that would have been drawn above the window should +# Controls whether 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::: @@ -376,3 +432,17 @@ log-level = "warn"; # set, and doesn't want certain window to cause unnecessary screen redirection, # you can set this to `true`. # +wintypes: +{ + tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + dock = { shadow = false; clip-shadow-above = true; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 0.8; } +}; + +opacity-rule = [ + "100:class_g = 'St' && focused", + "50:class_g = 'St' && !focused", + "100:fullscreen", +];