## Picom user configuration file (~/.config/picom.conf) ## written for BunsenLabs Carbon ## with reference to: /usr/share/doc/picom/examples/picom.sample.conf ## http://duncanlock.net/blog/2013/06/07/how-to-switch-to-compton-for-beautiful-tear-free-compositing-in-xfce/ ## and https://forums.bunsenlabs.org/viewtopic.php?pid=61249#p61249 ## ## Various people have contributed to this file, ## so the meaning of "I" is not well defined. ## ## In most cases 'man picom' has more information. ## See also: https://wiki.archlinux.org/title/Picom ## ## This version is based on picom.sample.conf shipped with picom 12.5 ## ## NOTE any picom startup command options set eg in /etc/bunsen/picom-startup ## will take priority over settings in this file. ## For example, if '--backend xrender' is set there, ## then 'backend = "glx"' in this file will be ignored. ################################# # Shadows # ################################# # Enabled client-side shadows on windows. Note desktop windows # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, # unless explicitly requested. # # Can be set per-window using rules. # # Default: false shadow = true; # The blur radius for shadows, in pixels. # # Default: 12 shadow-radius = 12; # The opacity of shadows. # # Range: 0.0 - 1.0 # Default: 0.75 shadow-opacity = 0.45; # The left offset for shadows, in pixels. # # Default: -15 shadow-offset-x = -8; # The top offset for shadows, in pixels. # # Default: -15 shadow-offset-y = -8; ## alternative centered shadows ## uncomment the following four lines ## and comment out the equivalent lines above: #shadow-radius = 35; #shadow-opacity = 0.45; #shadow-offset-x = -32; #shadow-offset-y = -32; # Hex string color value of shadow. Formatted like "#RRGGBB", e.g. "#C0FFEE". # # Default: #000000 # shadow-color = "#000000" # 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 ################################# # 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 = 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.06; # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) # fade-out-step = 0.03 fade-out-step = 1.0; # TODO: set positive value, and 'fading = false' # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) #fade-delta = 0 # Do not fade on window open/close. # no-fading-openclose = false # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. no-fading-destroyed-argb = true; ################################# # Transparency / Opacity # ################################# # Opacity of window titlebars and borders. # # Range: 0.1 - 1.0 # Default: 1.0 (disabled) # frame-opacity = 0.7; frame-opacity = 1.0; # Use fixed inactive dim value, instead of adjusting according to window opacity. # # Default: false # inactive-dim-fixed = true ################################# # 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`. # # Default: 0 (disabled) corner-radius = 10; ################################# # Blur # ################################# # Parameters for background blurring, see BLUR section in the man page for more information. # blur-method = # blur-size = 12 # # blur-deviation = false # # blur-strength = 5 # Blur background of semi-transparent / ARGB windows. # Can be set per-window using rules. # # Default: false # blur-background = false # 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 # 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"; ################################# # General Settings # ################################# # Try to detect windows with rounded corners and don't consider them # shaped windows. The accuracy is not very high, unfortunately. # # Has nothing to do with `corner-radius`. # # Default: false detect-rounded-corners = true; # Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers # not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. # This prevents opacity being ignored for some apps. # For example without this enabled my xfce4-notifyd is 100% opacity no matter what. # # Default: false detect-client-opacity = true; # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, # rather than listening to 'FocusIn'/'FocusOut' event. May be more accurate, # provided that the WM supports it. (openbox should be OK) # # Default: 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. (see manual) # # Default: false unredir-if-possible = true; # Delay before unredirecting the window, in milliseconds. # # Default: 0. # unredir-if-possible-delay = 0 # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows # in the same group focused at the same time. # # Default: false detect-transient = true; # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same # 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. # # Default: false detect-client-leader = true; # Use of damage information for rendering. This causes only the part of the # screen that has actually changed to be redrawn, instead of the whole screen # every time. Should improve performance. # # Default: false use-damage = true; # Use X Sync fence to wait for the completion of rendering of other windows, # before using their content to render the current screen. # # Required for explicit sync drivers, such as nvidia. # # Default: false # xrender-sync-fence = false # GLX backend: Use specified GLSL fragment shader for rendering window # contents. Read the man page for a detailed explanation of the interface. # # Can be set per-window using rules. # # window-shader-fg = "default" # Force all windows to be painted with blending. Useful if you # have a `window-shader-fg` that could turn opaque pixels transparent. # # Default: false # force-win-blend = false # Do not use EWMH to detect fullscreen windows. # Reverts to checking if a window is fullscreen based only on its size and coordinates. # # Default: false # no-ewmh-fullscreen = false # Dimming bright windows so their brightness doesn't exceed this set value. # Brightness of a window is estimated by averaging all pixels in the window, # so this could comes with a performance hit. # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. # # Default: 1.0 (disabled) # max-brightness = 1.0 # Make transparent windows clip other windows like non-transparent windows do, # instead of blending on top of them. e.g. placing a transparent window on top # of another window will cut a "hole" in that window, and show the desktop background # underneath. # # Default: false # transparent-clipping = false # Set the log level. Possible values are: # "trace", "debug", "info", "warn", "error" # in increasing level of importance. Case insensitive. # If using the "TRACE" log level, it's better to log into a file # using *--log-file*, since it can generate a huge stream of logs. # # Default: "warn" # log-level = "warn"; # Set the log file. # If *--log-file* is never specified, logs will be written to stderr. # 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" # Show all X errors (for debugging) # show-all-xerrors = false # Write process ID to a file. # write-pid-path = "/path/to/your/log/file" ################################# # # WINDOW RULES # ################################# # Rule-based per-window options. # # See WINDOW RULES section in the man page for how these work. rules: ({ match = # "window_type = 'dock' || " # this should match xfce4-panel # xfce4-panel round corners can also be set in ~/.config/gtk-3.0/gtk.css # but still need composition in order to work correctly "window_type = 'desktop' || " "_GTK_FRAME_EXTENTS@" ; blur-background = false; corner-radius = 0; shadow = false; }, { match = "window_type != 'dock'"; # shader = "my_shader.frag"; }, { match = "window_type = 'tooltip'"; fade = false; shadow = false; # opacity = 0.75; full-shadow = false; # corner-radius = 0; }, { match = "window_type = 'menu'"; fade = false; # corner-radius = 0; }, { match = "window_type = 'dropdown_menu' || " "window_type = 'popup_menu'" ; fade = false; opacity = 1.0; # corner-radius = 0; }, { match = "focused || group_focused || wmwin || override_redirect"; opacity = 1.0; }, { match = "!focused || !group_focused"; opacity = 0.96; }, { # match = "class_g *?= 'screensaver'"; # opacity = 1.0; #}, { match = "fullscreen"; opacity = 1.0; corner-radius = 0; round-borders = 0; shadow = false; }, { match = # exclude shadows "! name~='' || " # "name = 'jgmenu' || " "name = 'Notification' || " "name = 'wbar' || " "name = 'Docky' || " "name = 'Kupfer' || " # "name = 'xfce4-notifyd' || " "name *= 'VirtualBox' || " "name *= 'VLC' || " "name *= 'Chromium' || " "name *= 'Chrome' || " "class_g ?= 'xfce4-panel' || " "class_g ?= 'plank' || " "class_g ?= 'picom' || " "class_g = 'Tint2' || " "class_g ?= 'Conky' || " "class_g = 'Kupfer' || " "class_g = 'Synapse' || " "class_g ?= 'Notify-osd' || " "class_g ?= 'Cairo-dock' || " "class_g ?= 'Cairo-clock' || " # "class_g ?= 'Xfce4-notifyd' || " "class_g ?= 'Xfce4-power-manager' || " "_NET_WM_STATE@[*] = '_NET_WM_STATE_HIDDEN' || " "_NET_WM_STATE@[*] = '_NET_WM_STATE_MAXIMIZED_VERT' || " "_GTK_FRAME_EXTENTS@" ; shadow = false; }, { match = # exclude rounded corners "! name~='' || " # exclude windows with no name # "class_g = 'tint2' || " "class_g = 'Conky' || " # "window_type = 'utility'" # "class_g = 'Polybar' || " # "class_g = 'Rofi' || " # "class_g = 'Dunst' || " "_NET_WM_STATE@[*] = '_NET_WM_STATE_HIDDEN' || " # "_NET_WM_STATE@[*] = '_NET_WM_STATE_MAXIMIZED_VERT' || " # exclude maximized windows "_GTK_FRAME_EXTENTS@" ; corner-radius = 0; }) # `@include` directive can be used to include additional configuration files. # Relative paths are search either in the parent of this configuration file # (when the configuration is loaded through a symlink, the symlink will be # resolved first). Or in `$XDG_CONFIG_HOME/picom/include`. # # @include "extra.conf" ######################################################################## ### "advanced" machine specific options ### ######################################################################## # It is possible to set these in /etc/bunsen/picom-startup # where they will be applied for all users, but can also be set here. # Any settings in /etc/bunsen/picom-startup will have priority. # # Some old (2017) forum threads which might be of historical interest: # https://forums.bunsenlabs.org/viewtopic.php?id=4176 # https://forums.bunsenlabs.org/viewtopic.php?pid=61249#p61249 # https://forums.bunsenlabs.org/viewtopic.php?id=3699 # # Two graphics test pages: # This one is flashing green and red fast enough that it should look # like a flickery orange colour: # https://launchpadlibrarian.net/274755154/kenjo_vidtest_60fps.mp4 # This is a screen tearing test for vsync: # https://www.youtube.com/watch?v=MfL_JkcEFbE ######################################################################## # Enable remote control via D-Bus. See the man page for more details. # The D-Bus methods and signals are not yet stable, thus undocumented right now. # Default: false # dbus = true # Daemonize process. Fork to background after initialization. # Causes issues with certain (badly-written) drivers. # This option can only be set from the command line, # and setting it here in the configuration file will have no effect. # (In a BunsenLabs sesssion, picom is forked anyway, so this setting is not usually needed.) # Specify the backend to use: `xrender`, `glx`, or `egl`. # Select xrender if picom with glx background doesn't work # # backend = "xrender" backend = "glx" # Use higher precision during rendering, and apply dither when presenting the # rendered screen. Reduces banding artifacts, but may cause performance # degradation. Only works with OpenGL. # # Default: false #dithered-present = false # Enable/disable VSync. # # Default: false #vsync = true # Force all windows to be painted with blending. Useful if you # have a glx-fshader-win that could turn opaque pixels transparent. # # Default: false # force-win-blend = false # Use X Sync fence to wait for the completion of rendering of other windows, # before using their content to render the current screen. # # Required for explicit sync drivers, such as nvidia. # # Default: false # xrender-sync-fence = false