picom

A lightweight compositor for X11

OTHER License

Stars
3.8K
Committers
99
picom - v12-rc1 Latest Release

Published by yshui 2 months ago

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 rules to 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.

  • @include directives in config file now also search in $XDG_CONFIG_HOME/picom/include and $XDG_CONFIG_DIRS/picom/include, in addition to relative to the config file's parent directory.

  • Allow corner-radius-rules to override corner-radius = 0. Previously setting corner radius to 0 globally disables rounded corners. (#1170)

  • New picom-inspect tool, 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_redirect in 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 :32c in "_GTK_FRAME_EXTENTS@:32c". Now this information is ignored and the property is matched regardless of format or type.
  • backend is 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_type in conditions changed slightly, now it supports windows with multiple types. (However the behavior of wintypes remains unchanged.)

Deprecated features

  • Setting --shadow-exclude-reg is now a hard error. It was deprecated almost since the start of picom. --clip-shadow-above is 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 --vsync arguments, it was deprecated in v5.
  • Option --opengl is now deprecated, use --backend=glx instead.

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 rtkit at runtime to give itself realtime scheduling priority.
  • libconfig is now a mandatory dependency, with a minimal supported version of 1.7.
  • xcb-dpms is not needed anymore.
  • libXext is 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.
picom - v11.2

Published by yshui 8 months ago

Changes since v11.1

Build changes

  • picom now depends on libepoxy for OpenGL symbol management.

Bug fixes

  • Workaround a NVIDIA problem that causes high CPU usage after suspend/resume (#1172, #1168)
  • Fix building on OpenBSD (#1189, #1188)
  • Fix occasional freezes (#1040, #1145, #1166)
  • Fix corner-radius-rules not applying sometimes (#1177)
  • Fix window shader not having an effect when frame opacity is enabled (#1174)
  • Fix binding root pixmap in case of depth mismatch (#984)
picom - v11.1

Published by yshui 9 months ago

Changes since v11

Bug fixes

  • Fix missing fading on window close for some window managers. (#704)
  • Temporary duct tape that should reduce the chance of getting freezes from the xrender backend. (#1166)
picom - v11

Published by yshui 9 months ago

Changes since v11-rc1

Build changes

  • Due to some caveats discovered related to setting the CAP_SYS_NICE capability, it is now recommended to NOT set this capability for picom.

Deprecations

  • Uses of --sw-opti, and --respect-prop-shadow are now hard errors.
  • -F has been removed completely. It was deprecated before the picom fork.
picom - v11-rc1

Published by yshui 9 months ago

Announcements

New collaborators

Welcome @absolutelynothelix who has joined as our newest collaborator! 🎉

Discord server

We have a discord server now! Join to chat with developers and other picom users.

Changelog

Notable features

  • picom now uses dithering to prevent banding. Banding is most notable when using a strong background blur. (#952)
  • Frame pacing. picom uses present feedback information to schedule new frames when it makes sense to do so. This improves latency, and replaces the glFlush and GL_MaxFramesAllowed=1 hacks we used to do for NVIDIA. (#968 #1156)
  • Some missing features have been implemented for the EGL backend (#1004 #1007)

Bug fixes

  • Many memory/resource leak fixes thanks to @absolutelynothelix . (#977 #978 #979 #980 #982 #985 #992 #1009 #1022)
  • Fix tiling of wallpaper. (#1002)
  • Fix some blur artifacts (#1095)
  • Fix shadow color for transparent shadows (#1124)
  • Don't spam logs when another compositor is running (#1104)
  • Fix rounded corners showing as black with the xrender backend (#1003)
  • Fix blur with rounded windows (#950)

Build changes

  • Dependency pcre has been replaced by pcre2.
  • xinerama is no longer used.

Deprecations

  • The kawase blur method is removed. Note this is just an alias to the dual_kawase method, which is still available. (#1102)

New first time contributors

@i-c-u-p @summaryInfo @EpsilonKu @Monsterovich @softmoth @tokyoneon78

picom - v10.2

Published by yshui almost 2 years ago

This is a bug fix release:

Fixes

  • Window border not being considered when calculating its mask (Thanks @summaryInfo, #950)
picom - v10.1

Published by yshui almost 2 years ago

This is a bug fix release.

Fixes:

  • A GL texture leak, related to #892
  • A crash when shadow radius is set to 0 (#927)
  • An undefined symbol error (#932)
picom - v10

Published by yshui almost 2 years ago

Changes

None since v10-rc2

(See also v10-rc1 and v10-rc2)

picom - v10-rc2

Published by yshui almost 2 years ago

Changes since rc1

  • Fixes #916
picom - v10-rc1

Published by yshui almost 2 years ago

Release schedule:

rc1 released on: Oct 29, 2022
Final release: Nov 14, 2022

Build changes:

  • picom now needs libEGL to build

Notable changes:

  • experimental-backends is now the default. Everything should keep working, except the --glx-fshader-win option. The old window shader support has been replaced by --window-shader-fd. This new shader support has a different interface, so you have to adapt your existing shaders. (#875)
  • legacy-backends option has been added so you can go back to the old backends, which will eventually be removed.
  • picom.desktop is installed to /etc/xdg/autostart/. picom should autostart now. (#791)
  • Shadows and blur now match the shape of the window. This includes windows using the XShape extension, and windows with rounded corners. (#882)
    Example:
  • New option: --transparent-clipping-exclude, for excluding windows that doesn't play well with transparent-clipping, such as screenshot tool windows. (#663 #738)
  • New backend: egl. It should behave exactly the same as the glx backend. Give it a try! (#878)

Other changes:

  • --help messages have been refactored, leading to clearer code. (#877)
  • picom tries to detect and act on GPU resets. But because of the limitation of the X server, this ended up not being very useful.

Deprecation:

  • Raw string pattern in conditions are deprecated. It never worked because of libconfig handles escape sequences in string.

New Contributors

Full Changelog: https://github.com/yshui/picom/compare/v9-rc1...v10-rc1

picom - v9.1

Published by yshui over 2 years ago

Bug fixes:

#770 #778

picom - v9

Published by yshui over 2 years ago

Release timeline

rc1: 2022 Jan 27
Final release: 2022 Feb 04

Changes since v9-rc1

None

picom - v9-rc1

Published by yshui over 2 years ago

Release timeline

rc1: 2022 Jan 27
Final release: TBD

Changelog

@tryone144 has officially joined as a collaborator, hooray! 🎉

Notable changes:

  • New blur method for the experimental backends: dual-kawase #382
  • Support for rounding the corners of windows #551 #558 #614 #761 #716
  • Usability of picom-trans is improved. #634 (Thanks to @subnut)
  • It's now possible to match against all values of a window property in rules. Some window properties have multiple values (e.g. _NEW_WM_STATE), using _NEW_WM_STATE[*] in a match will succeed if any of the values match. #550
  • Fix darkening of window edges when using blur.
  • Some long deprecated options are removed. If picom doesn't start after update please check its console output. #768

New options:

  • New wintype options:
    • blur-background. enable/disable background blurring per window type.
    • clip-shadow-above. prevent shadow from being rendered on top of certain window types. #656
  • shadow-color: specify color in 1 option rather than separately in 3.
  • corner-radius, rounded-corners-exclude: for rounded corner support.

First time contributors

@orbea @consnop @adelin-b @tonijarjour @itaranto @rharish101 @jialeens @alarixnia @omar-polo @SebastienWae @thiagokokada @lschmelzeisen @enigma9o7 @scrouthtv @subnut @kwand @pijulius @jpribyl @tom-doerr @rkitover @TK009 @ktprograms @gijsbers

picom - v8.2

Published by yshui almost 4 years ago

This is a bug fix release of picom

  • Fixes assertion failures related to WIN_FLAGS_SHADOW_STALE, see #479
  • write-pid-path in configuration file now accepted, see #492
  • Pid files are now deleted during shutdown, see #492
  • Build fixes for certain platforms, see #501, #502

Thanks to @tryone144, @jialeens, and @niacat

picom - v8.1

Published by yshui about 4 years ago

Changes since v8

  • Fixed #470 #471 #474 #465
  • Worked around #301
  • Fixed specifying a window id with the picom-trans script
  • Fixed minor memory leaks
picom - v8

Published by yshui over 4 years ago

Changes since v8-rc2

Fixes

#381

picom - v8-rc1

Published by yshui over 4 years ago

Release timeline

RC1: 2020 Apr 11
Release: Tentatively 2020 Apr 25

Changelog

Here are some of the notable changes since v7

New features

  • You can now use the time variable in window shaders to get a timestamp. An example usage is to create animated effects, e.g. https://streamable.com/e0x7r (Thanks to @resloved #330)
  • --max-brightness, which allows you to dim windows that are too bright. When enabled, all windows' average brightness will be clamped to the set value. (Thanks to @Jauler #247)
  • Automatic configuration file reloading after it's changed.

Improvments

  • A lot of the artifacts seen with blur and use-damage enabled are fixed.
  • _NET_WM_BYPASS_COMPOSITOR property are now handled. (Related to i3/i3lock#204)
  • Completely transparent windows won't have a blurred background anymore. (Thanks to @tryone144 #364)
  • Improved fullscreen window detection. Now EWMH is used to detect fullscreen windows as well. You can turn it off with --no-ewmh-fullscreen (Thanks to @tatokis #187)
  • Various improvments to the inverter.sh script (Thanks to @Paradigm0001 #362, and @quequotion #281)

Configuration changes

  • wintype notify has been renamed to notification to match the EWMH names. (Old name still works)

Behavior changes

  • picom no longer sets the opacity property on windows based on opacity rules. This is to fix the problem where picom "forgets" it set the opacity property after, e.g., window manager restarts. #134

Build changes

  • libxdg-basedir is no longer a dependency (Thanks to @dylanaraps #322)

Fixes

  • Fixed wrong client window detection after i3wm restarts #299
  • Fixed wallpaper disappearing after screen resolution changes.
  • Fixed crashing when a really big window is created with shadow
  • Fixed --frame-opacity with the experimental backends
  • --blur-* command line options are now handled properly (Thanks to @tryone144)
  • Various build fixes (Thanks to @jenav #241, @jbeich)
  • Various memory leakage fixes (Thanks to @liskin #236)
  • Various documentation fixes and improvments (Thanks to @avivace, @tryone144, @davidschlachter, @liskin, @verfriemelt-dot-org)
  • Various other crash, assertion failure fixes
picom - v7.5

Published by yshui almost 5 years ago

Only change since v7.4 is the rename from compton to picom, which is
backported from the next branch.

As a user, you don't need to update to this version.

As a distro packager, you should only package this version if you want
to adopt "picom" as the package name.

picom - v7.4

Published by yshui about 5 years ago

  • Fix several memory leaks, thanks to @liskin (#236)
picom - v7.3

Published by yshui about 5 years ago

  • Build changes:
    • Vendor test.h so people building from the release tarballs doesn't
      have to clone that repository with git (#224)