You are not logged in.
Picom's configs have changed with the Trixie version 12.5.
You can see the new manual here: https://picom.app/
and if you've installed picom on trixie there's a sample config file at /usr/share/doc/picom/examples/picom.sample.conf
I went over picom.conf updating comments, removing any options that are no longer supported and changing a couple of options that were actually different.
Here's the reformatted file (if you're on Trixie with picom 12.5 maybe you could confirm that it hasn't broken anything?):
## Picom user configuration file (~/.config/picom.conf)
## written for BunsenLabs Boron
## 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
#################################
# 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.
#
# 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;
# 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
# Specify a list of conditions of windows that should have no shadow.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# The shadow exclude options are helpful if you have shadows enabled.
# Due to the way picom draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing.
# The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher.
# The "_GTK_FRAME_EXTENTS@" entry is to fix dual shadows with GTK3 Client Side Decorations.
# '_NET_WM_STATE_HIDDEN' entry, see https://wiki.archlinux.org/title/Picom#Tabbed_windows_(shadows_and_transparency)
# '_NET_WM_STATE_MAXIMIZED_VERT' entry excludes maximized windows
# shadow-exclude = []
shadow-exclude = [
"! name~=''",
# "name = 'jgmenu'",
"name = 'Notification'",
"name = 'wbar'",
"name = 'Docky'",
"name = 'Kupfer'",
# "name = 'xfce4-notifyd'",
"name *= 'VirtualBox'",
"name *= 'VLC'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"class_g ?= 'plank'", # see wintypes
"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 ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"window_type = 'desktop'",
"_NET_WM_STATE@[*] = '_NET_WM_STATE_HIDDEN'",
"_NET_WM_STATE@[*] = '_NET_WM_STATE_MAXIMIZED_VERT'",
"_GTK_FRAME_EXTENTS@"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# clip-shadow-above = []
#################################
# 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.028
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
# Specify a list of conditions of windows that should not be faded.
# (Some might need setting in wintypes below.)
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
#fade-exclude = ["name = 'jgmenu'"];
# 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;
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# inactive-opacity = 1
inactive-opacity = 0.96;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
active-opacity = 1.0;
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# inactive-dim = 0.2
# Specify a list of conditions of windows that should always be considered focused.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# 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
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
#
# 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`.
#
# Default: 0 (disabled)
corner-radius = 10;
# Exclude conditions for rounded corners.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# Also see: https://github.com/owl4ce/dotfiles/discussions/177
rounded-corners-exclude = [
"! name~=''", # exclude windows with no name
# "class_g = 'tint2'",
"class_g = 'Conky'",
# "window_type = 'menu'",
# "window_type = 'dock'",
"window_type = 'desktop'",
# "window_type = 'dropdown_menu'",
# "window_type = 'popup_menu'",
# "window_type = 'tooltip'",
# "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'",
"_GTK_FRAME_EXTENTS@"
];
#################################
# 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";
# Exclude conditions for background blur.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# blur-background-exclude = []
#blur-background-exclude = [
# "window_type = 'dock'",
# "window_type = 'desktop'",
# "_GTK_FRAME_EXTENTS@:c"
#];
#################################
# General Settings #
#################################
# 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
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# 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
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# unredir-if-possible-exclude = []
# 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;
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
#
# invert-color-include = []
# 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 type settings
# Using this is discouraged, see the WINDOW RULES section for the recommended way to set window-specific shadow.
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# 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:
#{
# 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; }
#};
wintypes:
{
dock = { shadow = false; };
tooltip = { fade = false; shadow = false; };
menu = { fade = false; };
dropdown_menu = { fade = false; opacity = 1.0; };
popup_menu = { fade = false; opacity = 1.0; };
};
#################################
#
# WINDOW RULES
#
#################################
# TODO: migrate all settings here that are "discouraged" above.
# Rule-based per-window options.
#
# See WINDOW RULES section in the man page for how these work.
#rules: ({
# match = "window_type = 'tooltip'";
# fade = false;
# shadow = true;
# opacity = 0.75;
# full-shadow = false;
#}, {
# match = "window_type = 'dock' || "
# "window_type = 'desktop' || "
# "_GTK_FRAME_EXTENTS@";
# blur-background = false;
#}, {
# match = "window_type != 'dock'";
# # shader = "my_shader.frag";
#}, {
# match = "window_type = 'dock' || "
# "window_type = 'desktop'";
# corner-radius = 0;
#}, {
# match = "name = 'Notification' || "
# "class_g = 'Conky' || "
# "class_g ?= 'Notify-osd' || "
# "class_g = 'Cairo-clock' || "
# "_GTK_FRAME_EXTENTS@";
# shadow = false;
#})
# `@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
########################################################################
# Daemonize process. Fork to background after initialization.
# Causes issues with certain (badly-written) drivers.
# In a BunsenLabs sesssion, picom is forked anyway, so this setting is not needed.
# daemon = false
#################################
#
# Backend
#
#################################
# Specify the backend to use: `xrender`, `glx`, or `egl`.
#
# Default: "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.
#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.
#
# force-win-blend = 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
# with GLX backend for some users.
#
# xrender-sync-fence = false
No actual settings have been changed (that can come later).
Also, the preferred format for things like shadow-excludes is now in the "rules" section, but everything needs to be migrated at once because if there are any rules then the old options no longer work. I'll try that in a day or two.
Here's the cleaned-up /etc/bunsen/picom-startup
# custom startup options for picom
# System administrators can add startup options for picom here.
# Any words - space, tab, or newline separated - will be appended to
# picom's command line when it is started by bl-compositor.
# (Any content after a # symbol is treated as a comment and ignored.)
#
# While any of the options listed in 'man picom' will be applied,
# it is recommended to leave settings related to desktop appearance
# (shadows, transparency, fading etc.) for individual users to set
# in ~/.config/picom.conf, and to use this file only for
# system-wide settings to optimize performance on this machine's hardware.
#
# Settings here will take priority over users' ~/.config/picom.conf.
#
# Various people have contributed to this file,
# so the meaning of "I" is not well defined.
#
# Examples:
# vsync can be used to control screen tearing:
# --backend glx will activate the OpenGL backend for superior performance,
# search for VSYNC_METHOD in picom(1) for details of the various methods available.
#
# I would add a note of caution here that
# compton should *not* be used to control vsync (ie, screen tearing)
# unless the native methods availble via the video drivers do not work.
#
# 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
#################################
# Look for configuration file at the path.
# See CONFIGURATION FILES section of manual for
# where picom looks for a configuration file by default.
# Use /dev/null to avoid loading configuration file.
#--config <PATH>
# Daemonize process. Fork to background after initialization.
# Causes issues with certain (badly-written) drivers.
# In a BunsenLabs sesssion, picom is forked anyway, so this setting is not needed.
#--daemon
# Enable remote control via D-Bus. See the *D-BUS API* section in the manual for more details.
# The D-Bus methods and signals are not yet stable, thus undocumented right now.
#--dbus
#################################
#
# Backend
#
#################################
# Specify the backend to use: `xrender`, `glx`, or `egl`.
#
# Default: "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.
#--dithered-present
# Enable/disable VSync.
#
# Default: false
#--no-vsync
#--vsync
# 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
# 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
# with GLX backend for some users.
#
#--xrender-sync-fence
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
Quick test before heading out. Config appears to be working. Although, I had to specify a backend or picom fails to start:
# Specify the backend to use: `xrender`, `glx`, or `egl`.
#
# Default: "xrender"
backend = "glx"
After that, no problems. Scrot or it never happened:
You must unlearn what you have learned.
-- yoda
Offline
I had to specify a backend or picom fails to start
Yes, I hit that too. Early picoms just went with the default.
But in BL, picom is launched from /usr/bin/bl-compositor which finds '--backend xrender' in /etc/bunsen/picom-startup.
That will be '--backend glx' in Carbon.
You can see if picom was launched with any startup options by running:
pgrep -a picom
Why the extra startup config file?
( Any options set there will overrule what's in ~/.config/picom.conf )
It's meant so sysadmins can set some config for the whole machine, according to its hardware.
We had a long discussion about this years ago, but all the posts seem to have disappeared. No idea why.
Some options - like --daemon - only make sense at startup, although --daemon shouldn't be needed with BL anyway.
We could comment out the --backend setting in picom-startup, so users would have to set it in picom.conf.
In fact, maybe commenting out everything in picom-startup by default would be the least confusing for new users?
Sysadmins would still be able to set things there if they wanted to.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
I've reformatted picom.conf to use the new Window Rules (see man picom).
The most obvious changes are the syntax of the exclude lists for things like shadows or round corners. Here's the first item in the rules:
rules: ({
match =
"window_type = 'dock' || "
"window_type = 'desktop' || "
"_GTK_FRAME_EXTENTS@"
;
blur-background = false;
corner-radius = 0;
shadow = false;
}, {
# whole bunch of other rules
})
The match syntax looks a bit odd, but having each entry on a separate line inside its own pair of quotes (including the ||) lets you easily comment out a line in the match list. Comments inside a rule are ignored as long as they're not inside a pair of quotes.
Here's the full reformatted picom.conf:
## Picom user configuration file (~/.config/picom.conf)
## written for BunsenLabs Boron
## 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 using the wintypes option.
#
# 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;
# 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' || "
"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 = # 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 ?= '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.
# In a BunsenLabs sesssion, picom is forked anyway, so this setting is not needed.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `egl`.
#
# Default: "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.
#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.
#
# force-win-blend = 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
# with GLX backend for some users.
#
# xrender-sync-fence = false
I don't think any of the actual content has changed from Boron - suggestions for Carbon should go in the Carbon Theming thread please.
Though, if you hit an error after editing picom.conf, feel free to post here. The new rules syntax can be a bit tricky.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
^ Tested on carbon/X11.
Seems working fine to me. Thanks.
#!/bin/sh
echo '#include <stdio.h>\nvoid main() { printf("Hi, bunsenlabs\\n"); return; }' > bunsen.c
gcc bunsen.c -o bunsen
./bunsen
Offline
I've pushed the reformatted file to GitHub:
https://github.com/BunsenLabs/bunsen-co … picom.conf
It might be easier for people to propose modifications if they can make PRs, but suggestions can be made in the Carbon Theming forum thread too.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
Supporting labwc is on the radar once Trixie is here?
Offline
Picom is a compositor for X11, so has no place in a Wayland setup and labwc would do its own compositing.
Here are some discussions on BunsenLabs, Wayland and labwc:
https://forums.bunsenlabs.org/viewtopic.php?id=8843
https://forums.bunsenlabs.org/viewtopic.php?id=9060
https://forums.bunsenlabs.org/viewtopic.php?id=9102
https://forums.bunsenlabs.org/viewtopic.php?id=9031
https://forums.bunsenlabs.org/viewtopic.php?id=9081
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
^ Off topic.
Nice search.
For other (ordinary) members, searching using forum software is 'mission impossible'.
Time is limited:
Info
At least 300 seconds have to pass between searches. Please wait 263 seconds and try searching again.
Fortunately, there's a better way:
https://forums.bunsenlabs.org/viewtopic … 13#p139213
If people would know how little brain is ruling the world, they would die of fear.
Offline
^I didn't use the search function to find those threads. I just looked at the "Development & Suggestions" and "Dev Discussions" sections and picked out some topics.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Offline
I understood, @johnraff.
I'd better open a new topic:
https://forums.bunsenlabs.org/viewtopic.php?id=9361
If people would know how little brain is ruling the world, they would die of fear.
Offline