Difference between revisions of "Compton"

From ArchWiki
Jump to: navigation, search
(Mostly improving the sample configuration file.)
Line 7: Line 7:
 
[https://github.com/chjj/compton 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 Manager|window managers]] which don't do composition on themselves.
 
[https://github.com/chjj/compton 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 Manager|window managers]] which don't do composition on themselves.
  
This fork fixed many bugs, and is very usable by this time of writing.
+
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.
  
 
== Installation ==
 
== Installation ==
Line 38: Line 38:
 
no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
 
no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
 
no-dnd-shadow = true; # Don't draw shadows on DND 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 (experimental).
+
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-radius = 7; # The blur radius for shadows. (default 12)
 
shadow-offset-x = -7; # The left offset for shadows. (default -15)
 
shadow-offset-x = -7; # The left offset for shadows. (default -15)
Line 48: Line 49:
 
shadow-exclude = [ "n:e:Notification" ]; # Exclude conditions for shadows.
 
shadow-exclude = [ "n:e:Notification" ]; # Exclude conditions for shadows.
 
# shadow-exclude = "n:e:Notification";
 
# shadow-exclude = "n:e:Notification";
shadow-ignore-shaped = true;
+
shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows
 +
# (see also: --detect-rounded-corners)
  
 
# Opacity
 
# Opacity
 
menu-opacity = 0.9; # The opacity for menus. (default 1.0)
 
menu-opacity = 0.9; # The opacity for menus. (default 1.0)
inactive-opacity = 0.9; # Opacity of inactive windows. (0.1 - 1.0)
+
inactive-opacity = 0.9; # Default opacity of inactive windows. (0.0 - 1.0)
#frame-opacity = 0.8; # Opacity of window titlebars and borders. (0.1 - 1.0)
+
# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0)
inactive-opacity-override = true; # Inactive opacity set by 'inactive-opacity' overrides value of _NET_WM_OPACITY.
+
# 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
Line 61: Line 78:
 
fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
 
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).
 
fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
# no-fading-openclose = true; # Fade windows in/out when opening/closing.
+
# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing.
 +
fade-exclude = [ ]; # Exclude conditions for fading.
  
 
# Other
 
# Other
#inactive-dim = 0.5; # Dim inactive windows. (0.0 - 1.0, defaults to 0).
+
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-wmwin-focused = true; # Try to detect WM windows and mark them as active.
mark-ovredir-focused = true;
+
mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus).
detect-rounded-corners = true;
+
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
 
# Window type settings
 
wintypes:
 
wintypes:
 
{
 
{
   tooltip = { fade = true; shadow = false; opacity = 0.75; };
+
   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.
 
};
 
};
 
}}
 
}}
Line 95: Line 146:
  
 
=== Problem with slock ===
 
=== 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 {{Pkg|slock}} it may not be a good result. Try this in config file instead:
 
Note that inactive window transparency (-i option) will make all inactive window became transparent, and if you use {{Pkg|slock}} it may not be a good result. Try this in config file instead:

Revision as of 05:58, 26 July 2013

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.

Installation

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

Usage

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.

~/.compton.conf
# 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
wintypes:
{
  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

Transparency

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.

Multihead

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'";