- Add VSync feature. 3 possible VSync methods available: "sw" (software, not too reliable, but at least you have something to fallback to), "drm" (using DRM_IOCTL_WAIT_VBLANK, should work only on DRI drivers), "opengl" (using SGI_swap_control extension OpenGL, might work on more drivers than the DRM method). "sw" and "opengl" are briefly tested, "drm" received utterly no test (because I use the nVidia binary blob). They are enabled with "--vsync sw" / "--vsync drm" / "--vsync opengl". - Add --refresh-rate to let user specify a refresh rate for software VSync, in case the automatic refresh rate detection does not work well. - Seemingly the automatic refresh rate detection using X RandR in software VSync detects refresh rate incorrectly. Need further investigation. - Fix a few bugs in fading timing. - Add a workaround for client window detection on Fluxbox, as Fluxbox (incorrectly?) sets the override-redirect flag upon all frame windows. - Software VSync adds dependency on librt (a part of glibc) for nanosecond-level timing functions, and libXrandr for automatic refresh rate detection; DRM VSync adds dependency on libdrm to use its drm.h, but does not link to libdrm; OpenGL VSync adds dependency on libGL. - Print timing information on DEBUG_REPAINT.
3.8 KiB
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
) - titlebar/frame transparency (specified with
-e
) - menu transparency (thanks to Dana)
- 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
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
.
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
The same dependencies as xcompmgr.
Dependencies:
B for build-time
R for runtime
- libx11 (B,R)
- libxcomposite (B,R)
- libxdamage (B,R)
- libxfixes (B,R)
- libXext (B,R)
- libxrender (B,R)
- libXrandr (B,R)
- pkg-config (B)
- make (B)
- xproto / x11proto (B)
- bash (R)
- xprop,xwininfo / x11-utils (R)
- libpcre (B,R) (Will probably be made optional soon)
- libconfig (B,R) (Will probably be made optional soon)
- libdrm (B) (Will probably be made optional soon)
- libGL (B,R) (Will probably be made optional soon)
To build, make sure you have the above dependencies:
$ make
$ make install
Usage
$ compton -cC -i 0.6 -e 0.6
$ compton -cC -i 0.6 -e 0.6 -fF
$ compton -cC -fF -I 0.065 -O 0.065 -D 6 -m 0.8 -i 0.6 -e 0.6
Options
compton [-d display] [-r radius] [-o opacity]
[-l left-offset] [-t top-offset]
[-i opacity] [-e opacity] [-cCfFSdG]
-d
display Specifies the display to manage.-r
radius Specifies the blur radius for client-side shadows.-o
opacity Specifies the opacity for client-side shadows.-l
left-offset Specifies the left offset for client-side shadows.-t
top-offset Specifies the top offset for client-side shadows.-I
fade-in-step Specifies the opacity change between steps while fading in.-O
fade-out-step Specifies the opacity change between steps while fading out.-D
fade-delta Specifies the time (in milliseconds) between steps in a fade.-c
Enable client-side shadows on windows.-f
When -c is specified, enables a smooth fade effect for transient windows like menus, and for all windows on hide and restore events.-C
When -c is specified, attempts to avoid painting shadows on panels and docks.-F
When -f is specified, also enables the fade effect when windows change their opacity, as with transset(1).-i
opacity Specifies inactive window transparency. (0.1 - 1.0)-e
opacity Specifies window frame transparency. (0.1 - 1.0)-G
Avoid painting shadows on DND windows.-b
daemonize Attempt to daemonize process.-S
Enables synchronous operation. Useful for debugging.
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.