diff --git a/LICENSE b/LICENSE index a64b1488..5d93431d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,10 +1,14 @@ compton - a compositor for X11 +Contributors + Based on xcompmgr, originally written by Keith Packard, with modifications from several contributors (according to the xcompmgr man page): Matthew Allum, Eric Anholt, Dan Doel, Thomas Luebking, Matthew Hawn, Ely Levy, Phil Blundell, and Carl Worth. Menu transparency was implemented by Dana Jansens. +Numerous contributions to compton from Richard Grenville. + xcompmgr Copyright © 2003 Keith Packard diff --git a/README.md b/README.md index d3dfc5c9..85bac0ce 100644 --- a/README.md +++ b/README.md @@ -17,22 +17,22 @@ partially doing this out of a desire to learn Xlib. * 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`. +* configuration files (specified with `--config`) +* colored shadows (with `--shadow-[red/green/blue] value`) +* a new fade system +* vsync (still under development) +* several more options ## 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) +* fixed the conflict with chromium and similar windows +* [many more](https://github.com/chjj/compton/issues) ## Building -The same dependencies as xcompmgr. - ### Dependencies: __B__ for build-time @@ -60,67 +60,147 @@ $ make $ make install ``` -## Usage +## Example Usage ``` bash -$ 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 +$ compton --config ~/compton.conf ``` -### Options +### Options and Configuration - compton [-d display] [-r radius] [-o opacity] - [-l left-offset] [-t top-offset] - [-i opacity] [-e opacity] [-cCfFSdG] +``` +compton [-d display] [-r radius] [-o opacity] + [-l left-offset] [-t top-offset] + [-i opacity] [-e opacity] [-cCfFSdG] + [--config path] [--shadow-red value] + [--shadow-gren value] [--shadow-blue value] + [--inactive-opacity-override] [--inactive-dim value] + [--mark-wmwin-focused] [--shadow-exclude condition] + [--mark-ovredir-focused] [--no-fading-openclose] + [--shadow-ignore-shaped] [--detect-round-corners] +``` -* `-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. +* `-d` __display__: + Which display should be managed. +* `-r` __radius__: + The blur radius for shadows. (default 12) +* `-o` __opacity__: + The translucency for shadows. (default .75) +* `-l` __left-offset__: + The left offset for shadows. (default -15) +* `-t` __top-offset__: + The top offset for shadows. (default -15) +* `-I` __fade-in-step__: + Opacity change between steps while fading in. (default 0.028) +* `-O` __fade-out-step__: + Opacity change between steps while fading out. (default 0.03) +* `-D` __fade-delta-time__: + The time between steps in a fade in milliseconds. (default 10) +* `-m` __opacity__: + The opacity for menus. (default 1.0) +* `-c`: + Enabled client-side shadows on windows. +* `-C`: + Avoid drawing shadows on dock/panel windows. +* `-z`: + Zero the part of the shadow's mask behind the window (experimental). +* `-f`: + Fade windows in/out when opening/closing and when opacity + changes, unless --no-fading-openclose is used. +* `-F`: + Equals -f. Deprecated. +* `-i` __opacity__: + Opacity of inactive windows. (0.1 - 1.0) +* `-e` __opacity__: + Opacity of window titlebars and borders. (0.1 - 1.0) +* `-G`: + Don't draw shadows on DND windows +* `-b` __daemonize__: + Daemonize process. +* `-S`: + Enable synchronous operation (for debugging). +* `--config` __path__: + Look for configuration file at the path. +* `--shadow-red` __value__: + Red color value of shadow (0.0 - 1.0, defaults to 0). +* `--shadow-green` __value__: + Green color value of shadow (0.0 - 1.0, defaults to 0). +* `--shadow-blue` __value__: + Blue color value of shadow (0.0 - 1.0, defaults to 0). +* `--inactive-opacity-override`: + Inactive opacity set by -i overrides value of _NET_WM_OPACITY. +* `--inactive-dim` __value__: + Dim inactive windows. (0.0 - 1.0, defaults to 0) +* `--mark-wmwin-focused`: + Try to detect WM windows and mark them as active. +* `--shadow-exclude` __condition__: + Exclude conditions for shadows. +* `--mark-ovredir-focused`: + Mark over-redirect windows as active. +* `--no-fading-openclose`: + Do not fade on window open/close. +* `--shadow-ignore-shaped`: + Do not paint shadows on shaped windows. +* `--detect-rounded-corners`: + Try to detect windows with rounded corners and don't consider + them shaped windows. + +### Format of a condition: + +`condition = :[]:` + +`` is one of `"n"` (window name), `"i"` (window class +instance), and `"g"` (window general class) + +`` is one of `"e"` (exact match), `"a"` (match anywhere), +`"s"` (match from start), `"w"` (wildcard), and `"p"` (PCRE +regular expressions, if compiled with the support). + +`` could be a series of flags. Currently the only defined +flag is `"i"` (ignore case). + +`` is the actual pattern string. + +### Configuration + +A more robust +[sample configuration file](https://raw.github.com/chjj/compton/master/compton.sample.conf) +is available in the repository. + +#### Example + +~/compton.conf: + +``` +# Shadows +shadow = true; + +# Opacity +inactive-opacity = 0.8; +frame-opacity = 0.7; + +# Fades +fading = true; +``` + +Run with: + +``` bash +$ compton --config ~/compton.conf +``` ## License -xcompmgr has gotten around. As far as I can tell, the lineage for this -particular tree is something like: +Although compton has kind of taken on a life of its own, it was originally +an xcompmgr fork. 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 +* chjj and richardgv Not counting the tens of people who forked it in between. diff --git a/man/compton.1 b/man/compton.1 index 176a6ecb..0ff46910 100644 --- a/man/compton.1 +++ b/man/compton.1 @@ -4,7 +4,14 @@ compton \- a compositor for X11 .SH SYNOPSIS .nf -.B compton [\-d display] [\-r radius] [\-o opacity] [\-l left-offset] [\-t top-offset] [\-i opacity] [\-e opacity] [\-cCfFSdG] +.B compton [\-d display] [\-r radius] [\-o opacity] [\-l left-offset] + [\-t top-offset] [\-i opacity] [\-e opacity] [\-cCfFSdG] + [\--config path] [\--shadow-red value] + [\--shadow-gren value] [\--shadow-blue value] + [\--inactive-opacity-override] [\--inactive-dim value] + [\--mark-wmwin-focused] [\--shadow-exclude condition] + [\--mark-ovredir-focused] [\--no-fading-openclose] + [\--shadow-ignore-shaped] [\--detect-round-corners] .fi .SH DESCRIPTION .B compton @@ -15,62 +22,121 @@ and shadows on argb windows. .SH OPTIONS .TP .BI \-d\ display -Specifies the display to manage. +Which display should be managed. .TP .BI \-r\ radius -Specifies the blur radius for client-side shadows. +The blur radius for shadows. (default 12) .TP .BI \-o\ opacity -Specifies the opacity for client-side shadows. +The translucency for shadows. (default .75) .TP .BI \-l\ left-offset -Specifies the left offset for client-side shadows. +The left offset for shadows. (default -15) .TP .BI \-t\ top-offset -Specifies the top offset for client-side shadows. +The top offset for shadows. (default -15) .TP .BI \-I\ fade-in-step -Specifies the opacity change between steps while fading in. +Opacity change between steps while fading in. (default 0.028) .TP .BI \-O\ fade-out-step -Specifies the opacity change between steps while fading out. +Opacity change between steps while fading out. (default 0.03) .TP -.BI \-D\ fade-delta -Specifies the time (in milliseconds) between steps in a fade. +.BI \-D\ fade-delta-time +The time between steps in a fade in milliseconds. (default 10) +.TP +.BI \-m\ opacity +The opacity for menus. (default 1.0) .TP .BI \-c -Enable client-side shadows on windows. -.TP -.BI \-f -When \-c is specified, enables a smooth fade effect for transient windows like -menus, and for all windows on hide and restore events. +Enabled client-side shadows on windows. .TP .BI \-C -When \-c is specified, attempts to avoid painting shadows on panels and docks. +Avoid drawing shadows on dock/panel windows. .TP -.BI \-G -When \-c is specified, attempts to avoid painting shadows on -drag-and-drop windows. +.BI \-z +Zero the part of the shadow's mask behind the window (experimental). +.TP +.BI \-f +Fade windows in/out when opening/closing and when opacity +changes, unless --no-fading-openclose is used. .TP .BI \-F -When \-f is specified, also enables the fade effect when windows change their -opacity, as with transset(1). -.TP -.BI \-b -Attempt to fork to background after registering compositor. +Equals -f. Deprecated. .TP .BI \-i\ opacity -Specifies inactive window transparency. (0.1 - 1.0) +Opacity of inactive windows. (0.1 - 1.0) .TP .BI \-e\ opacity -Specifies window frame transparency. (0.1 - 1.0) +Opacity of window titlebars and borders. (0.1 - 1.0) +.TP +.BI \-G +Don't draw shadows on DND windows +.TP +.BI \-b\ daemonize +Daemonize process. .TP .BI \-S -Enables synchronous operation. Useful for debugging. +Enable synchronous operation (for debugging). +.TP +.BI \--config\ path +Look for configuration file at the path. +.TP +.BI \--shadow-red\ value +Red color value of shadow (0.0 - 1.0, defaults to 0). +.TP +.BI \--shadow-green\ value +Green color value of shadow (0.0 - 1.0, defaults to 0). +.TP +.BI \--shadow-blue\ value +Blue color value of shadow (0.0 - 1.0, defaults to 0). +.TP +.BI \--inactive-opacity-override +Inactive opacity set by -i overrides value of _NET_WM_OPACITY. +.TP +.BI \--inactive-dim\ value +Dim inactive windows. (0.0 - 1.0, defaults to 0) +.TP +.BI \--mark-wmwin-focused +Try to detect WM windows and mark them as active. +.TP +.BI \--shadow-exclude\ condition +Exclude conditions for shadows. +.TP +.BI \--mark-ovredir-focused +Mark over-redirect windows as active. +.TP +.BI \--no-fading-openclose +Do not fade on window open/close. +.TP +.BI \--shadow-ignore-shaped +Do not paint shadows on shaped windows. +.TP +.BI \--detect-rounded-corners +Try to detect windows with rounded corners and don't consider +them shaped windows. +.TP +.BI Format\ of\ a\ condition: + +condition = :[]: + + is one of "n" (window name), "i" (window class +instance), and "g" (window general class) + + is one of "e" (exact match), "a" (match anywhere), +"s" (match from start), "w" (wildcard), and "p" (PCRE +regular expressions, if compiled with the support). + + could be a series of flags. Currently the only defined +flag is "i" (ignore case). + + is the actual pattern string. + .SH BUGS Please report any you find to https://github.com/chjj/compton. .SH AUTHORS xcompmgr, originally written by Keith Packard, with contributions from Matthew Allum, Eric Anholt, Dan Doel, Thomas Luebking, Matthew Hawn, Ely Levy, Phil Blundell, and Carl Worth. -Compton by Christopher Jeffrey, based on Dana Jansens' original work. +Compton by Christopher Jeffrey, based on Dana Jansens' original work, +with numerous contributions from Richard Grenville.