Picom: The Standalone Xorg Compositor

Picom : The Standalone Xorg Compositor

In this module, we will discuss Picom which is probably the most popular Compositor for Linux. Compositors in Linux responsible for assigning each window a buffer to render to. Each frame of each running application goes through the compositor, which is 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?

Picom is a fork of the once popular Compton which itself is a fork of Xcompmgr-dana. Now since that Compton is no longer actively maintained, Picom has taken over the world of compositors and even though most Desktop Environments have their own compositors, Picom still remains a favorite, especially among people who prefer Window Managers over Desktop Environments.

Why Picom?

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

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

Picom is also very instrumental when it comes to fixing screen tearing issues, something earlier compositors struggled with.

Picom Versions

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

You can chose the which ever 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 :

$  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:

$ 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 :

$ 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 own config files with :

$ 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.