Install picom 12 on Ubuntu 24


Here's how to install picom 12 on Ubuntu 12 from source.

Ubuntu 24.04 doesn't have a picom 12 package in apt. It's stuck on picom 10. Upgrade to Ubuntu 25, or build from source.

picom 12 is cool because you have animations built in now.

Let's build from source.

Install prereqs

There are a few. Check em out:

sudo apt install cmake 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

Get the source

Get the source

git clone git@github.com:yshui/picom.git
cd picom

Checkout the version you're wanting to build

git tags
git checkout v12.5

Build the source

From the readme:

meson setup --buildtype=release build
ninja -C build install

For me, there were plenty of c compiler warnings, but no errors.

Verify install

which picom
/usr/local/bin/picom

picom --version
v12.5 (git@github.com:yshui/picom.git revision a456d43)

Start picom

You don't need any specific conf to get picom going. Start it in an existing x11 session. You'll get a blink, and it'll take over window compositing immediately.

picom --backend glx

Customize picom

Modify your conf to customize:

nvim ~/.config/picom/picom.conf

Or grab a cool one from someone else.

System resources

I find picom to be sitting nominally at 5-7% cpu, right below a browser tab or slack, egh:

    PID USER       PRI  NI  VIRT   RES   SHR S  CPU%â–½MEM%   TIME+  Command
...
  73359 jaketrent   32  12  554M  127M 59888 S   5.7  0.2  0:45.66 picom --backend glx

Start on login

One way to do this is to have systemd run it. I suppose you could put it in .xprofile too.

For systemd, create a ~/.config/systemd/user/picom.service file:

[Unit]
Description=Picom X11 compositor
After=graphical-session.target
Wants=graphical-session.target

[Service]
ExecStart=/usr/local/bin/picom
Restart=on-failure
RestartSec=2

[Install]
WantedBy=graphical-session.target

Then enable the service for next login:

systemctl --user enable picom.service

After display manager login, systemd will spawn the user instance. When the display server, xorg, is started and graphical-session.target is reached, /usr/local/bin/picom will be executed.