PRIMARY CATEGORY → SETUP

picom → Compositor for X

It manages the way Windows and Graphical Elements are displayed on the screen

Basically, It combines the above elements, called Buffers, into a Final Image that is displayed to the user

Note that picom is a fork of Compton, which is already deprecated

This binary is executed as a daemon like most of the tools in this setup

$ pgrep --list-full --exact picom
1930 /usr/local/bin/picom

picom is executed by bspwm from the bspwmrc script through the picom’s binary →

# ~/.config/bspwm/bspwmrc - Picom Launch
checkProcess picom || launchProcess picom

Configuration File → ~/.config/picom/picom.conf

More information here


Installation

First of all, install the following dependencies →

Only Debian Based distros. Check this for the Fedora/RHEL ones

$ apt install -y -- libconfig-dev libdbus-1-dev libegl-dev libev-dev libgl-dev libepoxy-dev libpcre2-dev libpixman-1-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-damage0-dev libxcb-glx0-dev libxcb-image0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-util-dev libxcb-xfixes0-dev meson ninja-build uthash-dev

Clone the picom’s Github Repository

$ cd ~/Downloads
$ git clone https://github.com/yshui/picom.git picom

To build →

$ cd !$ # cd ~/Downloads/picom
$ meson setup --buildtype=release build
$ ninja -C build

To install →

$ ninja -C build install

That’s it

$ command -V picom
picom is /usr/local/bin/picom

Note that the picom configuration file needs to be created → picom.conf

Just created the ~/.config/picom directory and paste this Configuration File’s content into it

$ mkdir -p ~/.config/picom
$ cd !$ && nvim picom.conf

Once the above is done, insert the following line in the bspwmrc file related to the Picom’s Launch

checkProcess picom || launchProcess picom

This allows picom to be launched on the Windows Manager Startup → bspwm


Configuration File

Picom.conf Configuration File Sample Fully Documented

Copy from here the picom’s Full Customised Configuration File

Parameters

In the picom.conf file, there are specific sections to set or modify various display’s aspects such as the app’s corners, shadows, blur, fading…

Note that all the following parameters modify the above features related to bspwm’s Windows, kitty’s terminals, polybar’s bars or rofi’s launcher, among others

Corners

The corner-radius parameter modifies the roundness degree of a system application’s corners

corner-radius = 20;

Shadows

To enable or disable application’s shadowsshadow

shadow = true # Or false to disable them

Features related to shadows such as the radius, opacity and the x/y offset can be modified as follows →

shadow-radius = 15
shadow-opacity = .5
shadow-offset-x = -15
shadow-offset-y = -15
Fading

It implements a fade effect when opening or closing OS Windows

In this Setup Configuration, It is disabled

fading = false # Or true to enable it
  • Fading

  • No Fading

Opacity

This feature controls the Opacity of Inactive/Active OS Windows and their titlebars, borders…

active-opacity = 1.0 # Active OS Window
inactive-opacity = 1.0 # Inactive OS Window
frame-opacity = 1.0 # OS Window's Titlebars and Borders
opacity = 1.0 # dmenus and pmenus
Blur

It modifies the Sharpness degree of the Windows OS’s applications

blur-background = true # Or false to disable it
Miscellaneous
OS Windows Borders

Adjust the OS Windows’s border width is possible but not from the picom’s configuration file

It has to be managed from the bspwmrc file through the border_width parameter as follows →

bspc config border_width 0

The above command removes the OS Windows’s borders completely

This is the chosen configuration for the OS Windows borders