2011-11-05 02:52:05 +08:00
|
|
|
# Compton
|
|
|
|
|
|
|
|
__Compton__ is a compositor for X, and a fork of __xcompmgr-dana__.
|
|
|
|
|
|
|
|
I was frustrated by the low amount of standalone lightweight compositors.
|
|
|
|
Compton was forked from Dana Jansens' fork of xcompmgr and refactored. I fixed
|
|
|
|
whatever bug I found, and added features I wanted. Things seem stable, but don't
|
|
|
|
quote me on it. I will most likely be actively working on this until I get the
|
|
|
|
features I want. This is also a learning experience for me. That is, I'm
|
|
|
|
partially doing this out of a desire to learn Xlib.
|
|
|
|
|
|
|
|
## Changes from xcompmgr:
|
|
|
|
|
|
|
|
* __inactive window transparency__ (specified with `-i`)
|
2011-11-06 11:33:50 +08:00
|
|
|
* __titlebar/frame transparency__ (specified with `-e`)
|
2011-11-07 09:29:23 +08:00
|
|
|
* menu transparency (thanks to Dana)
|
2011-11-05 02:52:05 +08:00
|
|
|
* shadows are now enabled for argb windows, e.g. terminals with transparency
|
|
|
|
* removed serverside shadows (and simple compositing) to clean the code,
|
|
|
|
the only option that remains is clientside shadows
|
|
|
|
|
2011-11-06 11:33:50 +08:00
|
|
|
The above features give compton a feature set similar to the xfce compositor.
|
|
|
|
|
|
|
|
Compton has only been tested with openbox so far, but frame transparency
|
|
|
|
should work with any window manager that properly sets `_NET_FRAME_EXTENTS`.
|
|
|
|
|
2011-11-05 02:52:05 +08:00
|
|
|
## Fixes from the original xcompmgr:
|
|
|
|
|
|
|
|
* fixed a segfault when opening certain window types
|
|
|
|
* fixed a memory leak caused by not freeing up shadows (from the freedesktop
|
|
|
|
repo)
|
|
|
|
|
|
|
|
## Building
|
|
|
|
|
2011-11-07 12:03:18 +08:00
|
|
|
The same dependencies as xcompmgr.
|
2011-11-05 02:52:05 +08:00
|
|
|
|
|
|
|
### Dependencies:
|
|
|
|
|
2012-03-18 09:17:08 +08:00
|
|
|
__B__ for build-time
|
|
|
|
|
|
|
|
__R__ for runtime
|
|
|
|
|
|
|
|
* libx11 (B,R)
|
|
|
|
* libxcomposite (B,R)
|
|
|
|
* libxdamage (B,R)
|
|
|
|
* libxfixes (B,R)
|
2012-09-11 21:33:03 +08:00
|
|
|
* libXext (B,R)
|
2012-03-18 09:17:08 +08:00
|
|
|
* libxrender (B,R)
|
|
|
|
* pkg-config (B)
|
|
|
|
* make (B)
|
|
|
|
* xproto / x11proto (B)
|
|
|
|
* bash (R)
|
|
|
|
* xprop,xwininfo / x11-utils (R)
|
Feature: Issue #29: Alternative shadow blacklist implementation
- Add shadow blacklist feature, but a different implementation from
nicklan's. 5 matching modes (exact, starts-with, contains, wildcard,
PCRE) and 3 matching targets (window name, window class instance,
window general class). Not extensively tested, bugs to be expected.
It's slower for exact matching than nicklan's as it uses linear search
instead of hash table. Also, PCRE's JIT optimization may cause issues
on PaX kernels.
- Add dependency to libpcre. Could be made optional if we have a
graceful way to handle that in Makefile.
- Some matching functions are GNU extensions of glibc. So this version
may have troubles running on platforms not using glibc.
- Fix a bug that access freed memory blocks in set_fade_callcack() and
check_fade_fin(). valgrind found it out.
- Use WM_CLASS to detect client windows instead of WM_STATE. Some client
windows (like notification windows) have WM_CLASS but not WM_STATE.
- Mark the extents as damaged if shadow state changed in
determine_shadow().
- Rewrite wid_get_name(). Code clean-up.
- Two debugging options: DEBUG_WINDATA and DEBUG_WINMATCH.
- As the matching system is ready, it should be rather easy to add other
kinds of blacklists, like fading blacklist.
2012-09-22 11:42:39 +08:00
|
|
|
* libpcre (B,R) (Will probably be made optional soon)
|
2012-09-25 10:19:20 +08:00
|
|
|
* libconfig (B,R) (Will probably be made optional soon)
|
2011-11-05 02:52:05 +08:00
|
|
|
|
|
|
|
To build, make sure you have the above dependencies:
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
$ make
|
2011-11-07 08:20:45 +08:00
|
|
|
$ make install
|
2011-11-05 02:52:05 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
``` bash
|
2011-11-16 14:04:38 +08:00
|
|
|
$ compton -cC -i 0.6 -e 0.6
|
2011-12-09 22:46:40 +08:00
|
|
|
$ compton -cC -i 0.6 -e 0.6 -fF
|
2011-11-16 14:12:42 +08:00
|
|
|
$ compton -cC -fF -I 0.065 -O 0.065 -D 6 -m 0.8 -i 0.6 -e 0.6
|
2011-11-05 02:52:05 +08:00
|
|
|
```
|
2011-11-07 12:03:18 +08:00
|
|
|
|
2011-11-16 14:04:38 +08:00
|
|
|
### Options
|
|
|
|
|
|
|
|
compton [-d display] [-r radius] [-o opacity]
|
|
|
|
[-l left-offset] [-t top-offset]
|
2012-02-27 12:00:12 +08:00
|
|
|
[-i opacity] [-e opacity] [-cCfFSdG]
|
2011-11-16 14:04:38 +08:00
|
|
|
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-d` __display__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the display to manage.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-r` __radius__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the blur radius for client-side shadows.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-o` __opacity__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the opacity for client-side shadows.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-l` __left-offset__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the left offset for client-side shadows.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-t` __top-offset__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the top offset for client-side shadows.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-I` __fade-in-step__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the opacity change between steps while fading in.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-O` __fade-out-step__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the opacity change between steps while fading out.
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-D` __fade-delta__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies the time (in milliseconds) between steps in a fade.
|
2011-11-16 14:12:42 +08:00
|
|
|
* `-c`
|
2011-11-16 14:04:38 +08:00
|
|
|
Enable client-side shadows on windows.
|
2011-11-16 14:12:42 +08:00
|
|
|
* `-f`
|
2011-11-16 14:04:38 +08:00
|
|
|
When -c is specified, enables a smooth fade effect for transient windows like
|
|
|
|
menus, and for all windows on hide and restore events.
|
2011-11-16 14:12:42 +08:00
|
|
|
* `-C`
|
2011-11-16 14:04:38 +08:00
|
|
|
When -c is specified, attempts to avoid painting shadows on panels and docks.
|
2011-11-16 14:12:42 +08:00
|
|
|
* `-F`
|
2011-11-16 14:04:38 +08:00
|
|
|
When -f is specified, also enables the fade effect when windows change their
|
|
|
|
opacity, as with transset(1).
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-i` __opacity__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies inactive window transparency. (0.1 - 1.0)
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-e` __opacity__
|
2011-11-16 14:04:38 +08:00
|
|
|
Specifies window frame transparency. (0.1 - 1.0)
|
2012-02-27 12:00:12 +08:00
|
|
|
* `-G`
|
|
|
|
Avoid painting shadows on DND windows.
|
|
|
|
* `-b` __daemonize__
|
|
|
|
Attempt to daemonize process.
|
2011-11-16 14:12:42 +08:00
|
|
|
* `-S`
|
2011-11-16 14:04:38 +08:00
|
|
|
Enables synchronous operation. Useful for debugging.
|
|
|
|
|
2011-11-07 12:03:18 +08:00
|
|
|
## License
|
|
|
|
|
|
|
|
xcompmgr has gotten around. As far as I can tell, the lineage for this
|
|
|
|
particular tree is something like:
|
|
|
|
|
|
|
|
* Keith Packard (original author)
|
|
|
|
* Matthew Hawn
|
|
|
|
* ...
|
|
|
|
* Dana Jansens
|
|
|
|
* Myself
|
|
|
|
|
|
|
|
Not counting the tens of people who forked it in between.
|
|
|
|
|
|
|
|
See LICENSE for more info.
|