PRIMARY CATEGORY → DESKTOP 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 →

~/.config/bspwm/bspwmrc
checkProcess picom || launchProcess picom

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


Configuration File

Picom.conf

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 shadows → shadow

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 →

~/.config/bspwm/bspwmrc
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