2019-10-25 10:06:15 +00:00
picom
2022-04-12 12:48:21 +00:00
=====
2011-11-04 18:52:05 +00:00
2022-04-12 12:48:21 +00:00
__picom__ is a compositor for X, and a [fork of Compton ](History.md ).
2018-12-21 21:23:45 +00:00
2022-04-12 12:48:21 +00:00
**This is a development branch, bugs to be expected**
2020-12-17 00:25:57 +00:00
2022-04-12 12:48:21 +00:00
You can leave your feedback or thoughts in the [discussion tab ](https://github.com/yshui/picom/discussions ).
2011-11-04 18:52:05 +00:00
2019-05-21 21:16:09 +00:00
## Call for testers
### `--experimental-backends`
This flag enables the refactored/partially rewritten backends.
2019-11-04 20:43:18 +00:00
Currently, new backends feature better vsync with the xrender backend and improved input lag with the glx backend (for non-NVIDIA users). The performance should be on par with the old backends.
2019-05-21 21:16:09 +00:00
2019-11-04 20:43:18 +00:00
New backend features will only be implemented on the new backends from now on, and the old backends will eventually be phased out after the new backends stabilize.
2019-05-21 21:16:09 +00:00
2019-11-04 20:43:18 +00:00
To test the new backends, add the `--experimental-backends` flag to the command you use to run picom. This flag is not available from the configuration file.
2019-05-21 21:16:09 +00:00
To report issues with the new backends, please state explicitly you are using the new backends in your report.
## Change Log
2018-12-15 19:57:57 +00:00
2019-10-24 18:24:38 +00:00
See [Releases ](https://github.com/yshui/picom/releases )
2018-12-15 19:57:57 +00:00
2018-10-01 13:26:57 +00:00
## Build
### Dependencies
2019-08-18 21:39:18 +00:00
Assuming you already have all the usual building tools installed (e.g. gcc, python, meson, ninja, etc.), you still need:
2018-10-01 13:26:57 +00:00
* libx11
2018-12-16 16:36:15 +00:00
* libx11-xcb
2018-10-01 13:26:57 +00:00
* libXext
* xproto
* xcb
* xcb-damage
* xcb-xfixes
* xcb-shape
* xcb-renderutil
* xcb-render
* xcb-randr
* xcb-composite
* xcb-image
2018-11-03 22:15:38 +00:00
* xcb-present
2019-05-21 21:16:09 +00:00
* xcb-xinerama
2020-03-31 04:59:44 +00:00
* xcb-glx
2018-10-01 13:26:57 +00:00
* pixman
2018-10-14 23:47:24 +00:00
* libdbus (optional, disable with the `-Ddbus=false` meson configure flag)
* libconfig (optional, disable with the `-Dconfig_file=false` meson configure flag)
* libGL (optional, disable with the `-Dopengl=false` meson configure flag)
* libpcre (optional, disable with the `-Dregex=false` meson configure flag)
2018-10-03 00:09:37 +00:00
* libev
2019-04-03 07:36:02 +00:00
* uthash
2018-10-01 13:26:57 +00:00
2021-01-04 21:52:43 +00:00
On Debian based distributions (e.g. Ubuntu), the needed packages are
2019-08-18 21:39:18 +00:00
```
2021-09-03 22:29:45 +00:00
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 libpcre3-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev meson
2019-08-18 21:39:18 +00:00
```
2021-01-04 21:52:43 +00:00
On Fedora, the needed packages are
```
dbus-devel gcc git libconfig-devel libdrm-devel libev-devel libX11-devel libX11-xcb libXext-devel libxcb-devel mesa-libGL-devel meson pcre-devel pixman-devel uthash-devel xcb-util-image-devel xcb-util-renderutil-devel xorg-x11-proto-devel
```
2018-10-01 13:26:57 +00:00
To build the documents, you need `asciidoc`
2019-02-21 18:24:46 +00:00
### To build
2018-10-01 13:26:57 +00:00
```bash
2019-05-24 23:13:47 +00:00
$ git submodule update --init --recursive
2018-10-15 10:12:45 +00:00
$ meson --buildtype=release . build
2018-10-14 23:47:24 +00:00
$ ninja -C build
2018-10-01 13:26:57 +00:00
```
2019-04-14 12:32:33 +00:00
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:
2019-03-27 19:31:50 +00:00
```bash
2019-04-14 12:32:33 +00:00
$ LDFLAGS="-L/path/to/libraries" CPPFLAGS="-I/path/to/headers" meson --buildtype=release . build
2019-03-27 19:31:50 +00:00
```
2019-04-14 12:32:33 +00:00
As an example, on FreeBSD, you might have to run meson with:
```bash
2020-10-25 02:57:34 +00:00
$ LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" meson --buildtype=release . build
2019-04-14 12:32:33 +00:00
$ ninja -C build
```
2018-10-14 23:47:24 +00:00
2019-02-21 18:24:46 +00:00
### To install
``` bash
$ ninja -C build install
```
Default install prefix is `/usr/local` , you can change it with `meson configure -Dprefix=<path> build`
2018-10-01 13:26:57 +00:00
## How to Contribute
### Code
2019-11-04 20:43:18 +00:00
You can look at the [Projects ](https://github.com/yshui/picom/projects ) page, and see if there is anything that interests you. Or you can take a look at the [Issues ](https://github.com/yshui/picom/issues ).
2018-10-01 13:26:57 +00:00
### Non-code
Even if you don't want to contribute code, you can still contribute by compiling and running this branch, and report any issue you can find.
2018-10-03 21:14:51 +00:00
2019-05-21 21:16:40 +00:00
Contributions to the documents and wiki will also be appreciated.
2018-10-03 21:14:51 +00:00
## Contributors
See [CONTRIBUTORS ](CONTRIBUTORS )
2022-04-12 12:48:21 +00:00
The README for the [original Compton project ](https://github.com/chjj/compton/ ) can be found [here ](History.md#Compton ).
## Licensing
picom is free software, made available under the [MIT ](LICENSES/MIT ) and [MPL-2.0 ](LICENSES/MPL-2.0 ) software
licenses. See the individual source files for details.