diff --git a/.gitignore b/.gitignore index cb2c71df..276916fc 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,8 @@ release/ _CPack_Packages/ CMakeCache.txt CMakeFiles/ -*.cmake +cmake_install.cmake +CPackSourceConfig.cmake install_manifest.txt 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 f6dbd52a..89ca65b2 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 @@ -63,67 +63,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 -cC -i 0.6 -e 0.6 -f +$ 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-green 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/background 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-trans.1 b/man/compton-trans.1 index 78684a8e..97b4d349 100644 --- a/man/compton-trans.1 +++ b/man/compton-trans.1 @@ -1,16 +1,20 @@ .ds q \N'34' .TH compton\-trans 1 + .SH NAME compton\-trans \- an opacity setter tool + .SH SYNOPSIS .nf .B compton-trans [-wncs] [window] -o [opacity] .fi + .SH DESCRIPTION .B compton-trans is a bash script that sets _NET_WM_WINDOW_OPACITY only using standard command-line utilities for X11, including xprop(1) and xwininfo(1). It is similar to other utilities like transset(1) or transset-df(1). + .SH OPTIONS .TP .BI \-w\ window\-id @@ -31,6 +35,7 @@ Specify the new opacity value for the window. This value can be anywhere from 1-100. If it is prefixed with a plus or minus (+/-), this will increment or decrement from the target window's current opacity instead. + .SH EXAMPLES .TP Set window id to opacity of 75%. @@ -47,7 +52,14 @@ compton-trans -s -o 75 .TP Increment current window 5% opacity. compton-trans -c -o +5 + .SH BUGS Please report any you find to https://github.com/chjj/compton. + .SH AUTHORS Christopher Jeffrey (https://github.com/chjj) + +.SH SEE ALSO +.BR compton(1), +.BR xprop(1), +.BR xwininfo(1) diff --git a/man/compton.1 b/man/compton.1 index 176a6ecb..56445eb8 100644 --- a/man/compton.1 +++ b/man/compton.1 @@ -1,76 +1,177 @@ .ds q \N'34' .TH compton 1 + .SH NAME 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] -.fi +.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\-green 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] + .SH DESCRIPTION .B compton is a compositor based on Dana Jansens' version of xcompmgr (which itself was written by Keith Packard). It includes many improvements over the original xcompmgr, including window frame opacity, inactive window transparency, and shadows on argb windows. + +.SH EXAMPLE + +$ compton -cC -i 0.6 -e 0.6 -f + +$ compton --config ~/compton.conf + .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. +.BI \-l\ left\-offset +The left offset for shadows. (default -15) .TP -.BI \-t\ top-offset -Specifies the top offset for client-side shadows. +.BI \-t\ top\-offset +The top offset for shadows. (default -15) .TP -.BI \-I\ fade-in-step -Specifies the opacity change between steps while fading in. +.BI \-I\ fade\-in\-step +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. +.BI \-O\ fade\-out\-step +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/background 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 CONFIGURATION +(A more robust sample configuration file exists in the compton +repository.) + +.B Example + +.B ~/compton.conf: + + # Shadows + shadow = true; + + # Opacity + inactive-opacity = 0.8; + frame-opacity = 0.7; + + # Fades + fading = true; + +.B Run with: + + $ compton --config ~/compton.conf + .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. + +.SH SEE ALSO +.BR compton-trans(1) diff --git a/src/compton.c b/src/compton.c old mode 100755 new mode 100644 index 289cd042..77b5478e --- a/src/compton.c +++ b/src/compton.c @@ -3318,7 +3318,7 @@ usage(void) { " Opacity of window titlebars and borders. (0.1 - 1.0)\n" "-G\n" " Don't draw shadows on DND windows\n" - "-b daemonize\n" + "-b\n" " Daemonize process.\n" "-S\n" " Enable synchronous operation (for debugging).\n"