From ArchWiki
Revision as of 05:58, 26 July 2013 by RichardGv (Talk | contribs) (Mostly improving the sample configuration file.)

Jump to: navigation, search
Summary help replacing me
Introduces chjj's fork of xcompmgr (fork of fork indeed).

Compton is a fork of xcompmgr-dana by chjj, where xcompmgr-dana is a fork of xcompmgr by Dana. It is therefore, like xcompmgr, a standalone composite manager and can be used as a companion to lightweight window managers which don't do composition on themselves.

This fork fixed many bugs, and is very usable by this time of writing. Features a faster GLX (OpenGL) backend (disabled by default), default inactive/active window opacity, window frame transparency, window background blur, window color inversion, painting rate throttling, VSync, condition-based fine-tune control, configuration file reading, and D-Bus control.


Install the compton-gitAUR package, available in the AUR.


To start manually, just run:

$ compton

To use fancy shadows, you can run

$ compton -c

Additionally, -C can be used to avoid shadows on panels and docks, and -G can be used to avoid shadows on drag-and-drop objects (you probably want this).

If you want it started automatically, put this in xprofile:

compton -cGb

where -b means to daemonize after composite manager registered.

An example of a more customised command:

compton -cCGfF -o 0.38 -O 200 -I 200 -t 0.02 -l 0.02 -r 3.2 -D2 -m 0.88

You can also put your configuration in a file ~/.config/compton.conf or ~/.compton.conf.

A sample configuration file.

# Shadow
shadow = true;			# Enabled client-side shadows on windows.
no-dock-shadow = true;		# Avoid drawing shadows on dock/panel windows.
no-dnd-shadow = true;		# Don't draw shadows on DND windows.
clear-shadow = true;		# Zero the part of the shadow's mask behind the
				# window. Fix some weirdness with ARGB windows.
shadow-radius = 7;		# The blur radius for shadows. (default 12)
shadow-offset-x = -7;		# The left offset for shadows. (default -15)
shadow-offset-y = -7;		# The top offset for shadows. (default -15)
# shadow-opacity = 0.7;		# The translucency for shadows. (default .75)
# shadow-red = 0.0;		# Red color value of shadow. (0.0 - 1.0, defaults to 0)
# shadow-green = 0.0;		# Green color value of shadow. (0.0 - 1.0, defaults to 0)
# shadow-blue = 0.0;		# Blue color value of shadow. (0.0 - 1.0, defaults to 0)
shadow-exclude = [ "n:e:Notification" ];	# Exclude conditions for shadows.
# shadow-exclude = "n:e:Notification";
shadow-ignore-shaped = true;	# Avoid drawing shadow on all shaped windows
				# (see also: --detect-rounded-corners)

# Opacity
menu-opacity = 0.9;			# The opacity for menus. (default 1.0)
inactive-opacity = 0.9;			# Default opacity of inactive windows. (0.0 - 1.0)
# active-opacity = 0.8;			# Default opacity for active windows. (0.0 - 1.0)
# frame-opacity = 0.8;			# Opacity of window titlebars and borders. (0.1 - 1.0)
# inactive-opacity-override = true;	# Let inactive opacity set by 'inactive-opacity' overrides
					# value of _NET_WM_OPACITY. Bad choice.
alpha-step = 0.06;			# XRender backend: Step size for alpha pictures. Increasing
					# it may result in less X resource usage,
					# Yet fading may look bad.
# inactive-dim = 0.2;			# Dim inactive windows. (0.0 - 1.0)
# inactive-dim-fixed = true;		# Do not let dimness adjust based on window opacity.
# blur-background = true;		# Blur background of transparent windows.
					# Bad performance with X Render backend.
					# GLX backend is preferred.
# blur-background-frame = true;		# Blur background of opaque windows with transparent
					# frames as well.
blur-background-fixed = false;		# Do not let blur radius adjust based on window opacity.
blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ];
					# Exclude conditions for background blur.

# Fading
fading = true;			# Fade windows during opacity changes.
# fade-delta = 30;		# The time between steps in a fade in milliseconds. (default 10).
fade-in-step = 0.03;		# Opacity change between steps while fading in. (default 0.028).
fade-out-step = 0.03;		# Opacity change between steps while fading out. (default 0.03).
# no-fading-openclose = true;	# Avoid fade windows in/out when opening/closing.
fade-exclude = [ ];		# Exclude conditions for fading.

# Other
backend = "xrender"		# Backend to use: "xrender" or "glx". GLX backend is typically
				# much faster but depends on a sane driver.
mark-wmwin-focused = true;	# Try to detect WM windows and mark them as active.
mark-ovredir-focused = true;	# Mark all non-WM but override-redirect windows active (e.g. menus).
use-ewmh-active-win = false;	# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused
				# instead of using FocusIn/Out events. Usually more reliable but
				# depends on a EWMH-compliant WM.
detect-rounded-corners = true;	# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
detect-client-opacity = true;	# Detect _NET_WM_OPACITY on client windows, useful for window
				# managers not passing _NET_WM_OPACITY of client windows to frame
				# windows.
refresh-rate = 0;		# For --sw-opti: Specify refresh rate of the screen. 0 for auto.
vsync = "none";			# "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc"
				# See man page for more details.
dbe = false;			# Enable DBE painting mode. Rarely needed.
paint-on-overlay = false;	# Painting on X Composite overlay window. Recommended.
sw-opti = false;		# Limit compton to repaint at most once every 1 / refresh_rate.
				# Incompatible with certain VSync methods.
unredir-if-possible = false;	# Unredirect all windows if a full-screen opaque window is
				# detected, to maximize performance for full-screen windows.
focus-exclude = [ ];		# A list of conditions of windows that should always be considered
				# focused.
detect-transient = true;	# Use WM_TRANSIENT_FOR to group windows, and consider windows in
				# the same group focused at the same time.
detect-client-leader = true;	# Use WM_CLIENT_LEADER to group windows.
invert-color-include = [ ];	# Conditions for windows to be painted with inverted color.

# GLX backend			# GLX backend fine-tune options. See man page for more info.
# glx-no-stencil = true;	# Recommended.
glx-copy-from-front = false;	# Useful with --glx-swap-method,
# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync.
# glx-no-rebind-pixmap = true;	# Recommended if it works.	
glx-swap-method = "undefined";	# See man page.

# Window type settings
  tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; };
  # fade: Fade the particular type of windows.
  # shadow: Give those windows shadow
  # opacity: Default opacity for the type of windows.
  # focus: Whether to always consider windows of this type focused.

To run compton with config file:

$ compton --config ~/.compton.conf

To automatically start compton put following in any of your Startup files:

compton --config ~/.compton.conf -b


Besides what is provided in xcompmgr, compton introduces two new auto-transparency options:

      -i opacity
             Specifies inactive window transparency. (0.1 - 1.0)
      -e opacity
             Specifies window frame transparency. (0.1 - 1.0)

Try them out on your own.

Problem with slock

(Note using --focus-exclude may be a cleaner solution.)

Note that inactive window transparency (-i option) will make all inactive window became transparent, and if you use slock it may not be a good result. Try this in config file instead:

inactive-dim = 0.2;

This will work with slock better.


If you use a multihead configuration without Xinerama, which means you start a X server with more than one screen, then compton will start on only one screen by default. You can start on all screen by starting multiple compton on all screens with -d. For example, if you have 4 monitors then you can start compton by:

seq 0 3 | xargs -l1 -I@ compton -b -d :0.@

Conky without shadows

If you use conky, there may be shadows, you don't want around conky's windows. To get rid of it, add this line to your conky configuration file:

own_window_class conky

then in your compton configuration file edit the following line

shadow-exclude = "class_g = 'conky'";