Picom: The Standalone Xorg Compositor

Picom : The Standalone Xorg Compositor

This module will discuss Picom, probably the most popular Compositor for Linux. Compositors in Linux are responsible for assigning each window a buffer to render. Each frame of each running application goes through the compositor, responsible for outputting each buffer onto a display once it has been put into a single final image. A compositor can also add extra features like blur, transparency, shadows, and animation, which adds to the aesthetic feel of the desktop.

What is Picom?

A compositor is like the ultimate organizer for your computer screen. It combines all the visual elements from different applications and system components to create a seamless and attractive user experience. In Arch Linux, a compositor adds a touch of flair to your desktop environment, making it more enjoyable to use. Enter Picom, a fan-favorite in the Arch Linux community, for its lightweight and customizable nature.

Picom is an independent, stand-alone compositor for the X11 window manager (Xorg). Picom is a fork of Compton with the primary objective of providing an efficient and visually stunning compositing experience. It improves compatibility, stability, and resource usage compared to its predecessors.

The beauty of Picom lies in its array of features that transform your desktop into a more visually appealing workspace. With support for window transparency, drop shadows, and smooth fading effects, Picom ensures your desktop is functional and stylish. What’s more, its compatibility with various window managers means you can truly make your desktop your own. And if you’re worried about performance, fear not; Picom’s low resource usage keeps things running smoothly.

Why Picom?

Picom helps us customize our window appearances and behavior. Usually, the Window Managers don’t enable these by default; we need external compositors to facilitate that.

Blur Background And Terminal Transparency In Picom
Blur Background And Terminal Transparency In Picom

Picom is also instrumental in fixing screen tearing issues, something earlier compositors struggled with.

Picom Versions

Picom has several versions or forks you can choose from. Some of the more notable ones are as follows :

You can choose whichever version you decide according to your preferences and install it.

Steps to Install Picom on Linux

Let’s check the steps to install Picom now.

Installing Using Package Managers

On Debian/Ubuntu, you can use the apt package manager:

$ sudo apt install picom

On Arch Linux, you can list all available versions/forks with the following:

$  paru -Ss picom
community/picom 8.2-1 [150.03KB 375.46KB]
    X compositor that may fix tearing issues
aur/picom-git 1430_8.rc2.21.gfd6ff82_2020.06.06-1 [+348 ~1.39]
    X compositor (fork of compton) (git-version)
aur/picom-ibhagwan-git 1577_Next.296.g6d87428_2021.02.05-1 [+9 ~1.13] [Installed: 1577_Next.296.g60eb00c_2021.02.08-1]
    iBhagwan's compton|picom fork (X compositor) with dual_kawase blur and rounded corners
aur/picom-jonaburg-git 0.1-4 [+7 ~3.22]
    jonaburg's picom fork with tryone144's dual_kawase blur and ibhagwan's rounded corners, an X compositor (compton's
    fork)
aur/picom-tryone-git 1477_Next.196.g9bb21fc_2020.09.16-1 [+4 ~0.96]
    tryone144's picom fork with dual_kawase blur, an X compositor (fork of compton)
aur/pantheon-lite 6-1 [+2 ~0.00]
    Pantheon Lite Session (Gala replaced with openbox & picom)
aur/picom-rounded-corners r1392.bae5bf0-1 [+1 ~0.03]
    X Compositor (a fork of xcompmgr-dana) (with rounded corners patch)
aur/picomc 0.4.2-2 [+1 ~0.02]
    A tiny CLI Minecraft launcher
aur/apicompat-git r125.5f916b1-3 [+0 ~0.00] [Orphaned]
    Checks recent changes to a Go project for backwards incompatible changes
aur/picom-rounded-corners-legacy-glx2 r1553.469bc39-1 [+0 ~0.00]
    X Compositor (a fork of xcompmgr-dana) (experimental branch with rounded corners)

Now you can install the desired fork with the following:

$ paru <name>

For example, if we want to install the Jonaburg Git from AUR, we can type in paru:

$ paru picom-jonaburg-git

Installing From Source On Debian/Ubuntu :

If we want to use any of the other versions/forks on Debian/Ubuntu, first, we would need to install some dependencies with the following:

$ sudo apt install cmake meson git pkg-config asciidoc libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libxcb-glx0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev  libpcre2-dev  libevdev-dev uthash-dev libev-dev libx11-xcb-dev

Next up, clone the required git repo required. For Example, to install the Jonaburg Git :

$ git clone https://github.com/jonaburg/picom

Next, cd into the directory and can build it with :

$ cd picom
$ git submodule update --init --recursive
$ meson --buildtype=release . build
$ ninja -C build
$ sudo ninja -C build install

This should install picom under /usr/local/bin allowing you to access it globally.

Running Picom

To run picom using the default config in the background, run :

$ picom -b

You can also specify your config files with the following:

$ picom --config /path/to/config/file -b

Sometimes to use features like dual_kawase, you need to specify the –experimental-backends flag as such :

$ picom --config /path/to/config/files --experimental-backends -b

Conclusion

Thus we discussed various aspects of picom. To enable picom at startup, add it to your Window Manager’s config file so that it runs on startup itself.