Known issues
- Setting
corner-radiusto 0 cause all windows to not render: #1311, fixed by 6b858b8 - Window shaders no longer work: #1312, fixed by fda04bd
New features
-
Animations! Yes, now picom officially supports animations. For examples, and information on how to configure it, please go to our documentation site. There are some video clips in #1253 as well. (#1220 #1253 #1303 #1305 #1308 #1310)
-
Universal window rules (#1284). One option to rule them all! Added new configuration option
rulesto replace all existing rule options, and to provide more flexibility on top of that. See picom(1) for more details. This can be used to configure per-window animations. -
@includedirectives in config file now also search in$XDG_CONFIG_HOME/picom/includeand$XDG_CONFIG_DIRS/picom/include, in addition to relative to the config file's parent directory. -
Allow
corner-radius-rulesto overridecorner-radius = 0. Previously setting corner radius to 0 globally disables rounded corners. (#1170) -
New
picom-inspecttool, which lets you test out your picom rules.man picom-inspect(1)for more details. Sample output:... Checking rounded-corners-exclude: window_type = "dock" ... not matched window_type = "desktop" ... not matched window_type *= "menu" ... not matched fullscreen = 1 ... not matched Checking opacity-rule: _NET_WM_STATE@[0] *= "_NET_WM_STATE_HIDDEN" ... not matched Checking corner-radius-rule: class_g = "Alacritty" ... matched/10 Here are some rule(s) that match this window: name = '[0.2.1] ./picom-inspect: ~/p/picom(./picom-inspect: ~/p/picom)*' class_i = 'Alacritty' class_g = 'Alacritty' window_type = 'normal' ! fullscreen border_width = 0 -
picom now has a rudimentary plugin system. At the moment, the only thing you can do with it is loading custom backends.
Notable changes
override_redirectin rules now only matches top-level windows that doesn't have a client window. Some window managers (e.g. awesome) set override_redirect for all window manager frame windows, causing this rule to match against everything (#625).- Marginally improve performance when resizing/opening/closing windows. (#1190)
- Type and format specifiers are no longer used in rules. These specifiers are what you put after the colon (':') in rules, e.g. the
:32cin"_GTK_FRAME_EXTENTS@:32c". Now this information is ignored and the property is matched regardless of format or type. backendis now a required option. picom will not start if one is not specified explicitly.- New predefined target for conditions:
group_focused. This target indicate whether the focused window is in the same window group as the window being matched. - Meaning of
window_typein conditions changed slightly, now it supports windows with multiple types. (However the behavior ofwintypesremains unchanged.)
Deprecated features
- Setting
--shadow-exclude-regis now a hard error. It was deprecated almost since the start ofpicom.--clip-shadow-aboveis the better alternative. (#1254) - Remove command line options
-n,-a, and-s. They were removed more than 10 years ago, it's time to finally get rid of them entirely. (#1254) - Remove error message for
--glx-swap-method, it was deprecated in v6. - Remove error message for passing argument to
--vsyncarguments, it was deprecated in v5. - Option
--openglis now deprecated, use--backend=glxinstead.
Bug fixes
- Fix ghosting artifacts that sometimes occur when window manager is restarted (#1081)
- Fix a bug where rounded corner is disabled after making a window fullscreen and back (#1216)
- Fix ugly looking rounded corners (#1261)
Build changes
- picom now uses some OpenGL 4.3 features.
- picom now optionally depends on
rtkitat runtime to give itself realtime scheduling priority. libconfigis now a mandatory dependency, with a minimal supported version of 1.7.xcb-dpmsis not needed anymore.libXextis not needed anymore.- man pages are now built with asciidoctor, instead of asciidoc.
Behind the scene changes
- The X critical section is removed, picom no longer grabs the server to fetch updates. Hopefully, if everything works, this change is unnoticeable. Minor responsiveness improvements could be possible, but I won't bet on it. The main point of this change is this makes debugging much less painful. Previously if you breaks inside the X critical section, the whole X server will lock up, and you would have to connect to the computer remotely to recover. Now there is no longer such worries. This also avoids a bug inside Xorg that makes server grabbing unreliable.