• Stars
    star
    4,141
  • Rank 10,455 (Top 0.3 %)
  • Language
    C
  • License
    Other
  • Created over 8 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A lightweight compositor for X11 with animation support

picom

circleci codecov chat on discord

picom is a compositor for X, and a fork of Compton.

This is a development branch, bugs to be expected

You can leave your feedback or thoughts in the discussion tab, or chat with other users on discord!

Change Log

See Releases

Build

Dependencies

Assuming you already have all the usual building tools installed (e.g. gcc, python, meson, ninja, etc.), you still need:

  • libx11
  • libx11-xcb
  • libXext
  • xproto
  • xcb
  • xcb-damage
  • xcb-dpms
  • xcb-xfixes
  • xcb-shape
  • xcb-renderutil
  • xcb-render
  • xcb-randr
  • xcb-composite
  • xcb-image
  • xcb-present
  • xcb-glx
  • pixman
  • libdbus (optional, disable with the -Ddbus=false meson configure flag)
  • libconfig (optional, disable with the -Dconfig_file=false meson configure flag)
  • libGL, libEGL (optional, disable with the -Dopengl=false meson configure flag)
  • libpcre2 (optional, disable with the -Dregex=false meson configure flag)
  • libev
  • uthash

On Debian based distributions (e.g. Ubuntu), the needed packages are

libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-dpms0-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-glx0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl-dev libegl-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev meson

On Fedora, the needed packages are

dbus-devel gcc git libconfig-devel libdrm-devel libev-devel libX11-devel libX11-xcb libXext-devel libxcb-devel libGL-devel libEGL-devel meson pcre2-devel pixman-devel uthash-devel xcb-util-image-devel xcb-util-renderutil-devel xorg-x11-proto-devel

To build the documents, you need asciidoc

To build

$ git submodule update --init --recursive
$ meson setup --buildtype=release . build
$ ninja -C build

Built binary can be found in build/src

If you have libraries and/or headers installed at non-default location (e.g. under /usr/local/), you might need to tell meson about them, since meson doesn't look for dependencies there by default.

You can do that by setting the CPPFLAGS and LDFLAGS environment variables when running meson. Like this:

$ LDFLAGS="-L/path/to/libraries" CPPFLAGS="-I/path/to/headers" meson setup --buildtype=release . build

As an example, on FreeBSD, you might have to run meson with:

$ LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" meson setup --buildtype=release . build
$ ninja -C build

To install

$ ninja -C build install

Default install prefix is /usr/local, you can change it with meson configure -Dprefix=<path> build

How to Contribute

All contributions are welcome!

New features you think should be included in picom, a fix for a bug you found - please open a PR!

You can take a look at the Issues.

Contributions to the documents and wiki are also appreciated.

Even if you don't want to add anything to picom, you are still helping by compiling and running this branch, and report any issue you can find.

Become a Collaborator

Becoming a collaborator of picom requires significant time commitment. You are expected to reply to issue reports, reviewing PRs, and sometimes fix bugs or implement new feature. You won't be able to push to the main branch directly, and all you code still has to go through code review.

If this sounds good to you, feel free to contact me.

Contributors

See CONTRIBUTORS

The README for the original Compton project can be found here.

Licensing

picom is free software, made available under the MIT and MPL-2.0 software licenses. See the individual source files for details.

More Repositories

1

deai

One-stop automation system for Linux
C
170
star
2

runa

wayland compositor toolbox
Rust
100
star
3

index_camera_passthrough

Experimental Valve Index camera passthrough for Linux
Rust
33
star
4

job-security

job control from anywhere!
Rust
24
star
5

picom-xrdesktop-companion

picom's companion program to bring your desktop to XR
C
20
star
6

tooltip.nvim

Display tooltip for neovim
Python
12
star
7

wimp

WhereIsMyPointer
Rust
7
star
8

.files

Linux configuration
Nu
7
star
9

playgsf

GSF player with visualization (WIP)
C++
7
star
10

test.h

Header only C unit testing framework
C
6
star
11

SadOS

It makes me sad because I wasn't able to finish it
C
6
star
12

robot-stm32

A robotic vacuum cleaner
C
5
star
13

bcachefs-mount

A helper tool for mounting bcachefs
Rust
4
star
14

cvca

Contiguously Valued Cell Automata
JavaScript
4
star
15

protoplasm

A compiler for a simple language
Python
3
star
16

explain-algorithms

Computer algorithms in human readable format
HTML
2
star
17

cgrouper

cgrouper
C
2
star
18

entangle

Forward input devices over network
Rust
2
star
19

git-clang-format-lint

Shell
2
star
20

docconfig

Generate sample configuration file from serde serializable types
Rust
1
star
21

dotvim

Vim config
Vim Script
1
star
22

netsim

Content-aware file-sharing/video-streaming network simulator.
C
1
star
23

gentoo-overlay

Shell
1
star
24

tprj

~
C
1
star
25

ml_experiments

ML related experiments
Python
1
star
26

tinyvecdeq

Rust
1
star
27

misceltools

Miscellaneous tools
D
1
star
28

cfg.h

Header only config file & command line option library for C
C
1
star
29

pathogen

Generating parser directly from type definition
D
1
star
30

runa-adventure

Shell
1
star
31

borderless

a blogging system
CoffeeScript
1
star
32

puncher

A passive packet forwarder
C
1
star
33

DeTerminus

DeTerminus Font
Python
1
star
34

uchroot

chroot with user namespace
Rust
1
star
35

lethe

Shoot 'Em Up game engine WIP
D
1
star
36

evolve_image

Trianglize image using DNA algorithm
JavaScript
1
star
37

keygames

Implementation of key distribution schemes in different language
Rust
1
star
38

klipper

Klipper split out from plasma-workspace
C++
1
star
39

sync-bot

A wrapper of rsync for mirror sites.
Perl
1
star
40

antiad

youku antiad, a fork of http://git.oschina.net/kawaiiushio/antiad.git
JavaScript
1
star
41

inputsynth

X11 input synthesis
Rust
1
star
42

atomi

Fork of the AwesomeWM lua library
Lua
1
star
43

urstore

Universal Remote Store library (WIP)
C
1
star
44

dcon

Code snippet for programming contests
D
1
star
45

sorttabs

Tab sorting extension for firefox
TypeScript
1
star
46

ncproxy

NoCash Proxy
JavaScript
1
star
47

sdpc

Simple D Parser Combinator
D
1
star