Difference between revisions of "Compton"

From ArchWiki
Jump to: navigation, search
(Troubleshooting: mv from applications)
(Added NVIDIA screentearing tip)
Line 230: Line 230:
  
 
See [https://github.com/chjj/compton/issues/162] for more information.
 
See [https://github.com/chjj/compton/issues/162] for more information.
 +
 +
=== Screentearing with NVIDIA's proprietary drivers ===
 +
Try setting
 +
vsync = "opengl"
 +
in compton.conf
  
 
=== Lag with Nvidia proprietary drivers and FullCompositionPipeline ===
 
=== Lag with Nvidia proprietary drivers and FullCompositionPipeline ===

Revision as of 11:12, 7 August 2018

Compton is a standalone compositor for Xorg, suitable for use with window managers that do not provide compositing. Compton is a fork of xcompmgr-dana, which in turn is a fork of xcompmgr.

Note: Compton is currently dormant (last code change 2016) and may cause issues depending on your configuration, see #Troubleshooting.

Installation

Install compton or its git version, compton-gitAUR.

compton-confAUR or compton-conf-gitAUR package provide Qt-based GUI for Compton configuration.

Usage

See compton(1). Compton may be manually enabled or disabled at any time during a session, or autostarted as a background (Daemon) process for sessions. There are also several optional arguments that may be used to tweak the compositing effects provided. These include:

  • -b: Run as a background (Daemon) process for a session (e.g. when autostarting for a window manager such as Openbox)
  • -c: Enable shadow effects
  • -C: Disable shadow effects on panels and docks
  • -G: Disable shadow effects for application windows and drag-and-drop objects
  • --config: Use a specified configuration file

Many more options are available, including to set timing, displays to be managed, and the opacity of menus, window borders, and inactive application menus. See the Compton Man Page for further information.

Note: If a different composite manager is running, it should be disabled before starting compton.

Autostarting

How compton would be autostarted as a Daemon process will depend on the desktop environment or window manager used. For example, for Openbox the ~/.config/openbox/autostart file must be edited, while for i3 it would be the ~/.i3/config file. Where necessary, compton may also be autostarted from xprofile or Xinitrc. Read the startup files article for further information.

Command only

To manually enable default compositing effects during a session, use the following command:

$ compton

Alternatively, to disable all shadowing effects during a session, the -C and -G arguments must be added:

$ compton -CG

To autostart compton as a background (Daemon) process for a session, the -b argument must be used:

$ compton -b

To disable all shadowing effects from the Daemon process, the -C and -G arguments must again be added:

$ compton -CGb

Finally, this is an example where additional arguments that require values to be set have been used:

$ compton -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88

Using a configuration file

The default configuration is available in /etc/xdg/compton.conf. For modifications, it can be copied to ~/.config/compton.conf, or to ~/.compton.conf.

To use a custom configuration file with compton during a session, use the following command:

$ compton --config path/to/compton.conf

To auto-start compton as a background (Daemon) process for a session, specify the -b argument:

$ compton --config path/to/compton.conf -b

Disable shadows for some windows

The shadow-exclude option can disable shadows for windows if required. For currently disabled windows, see here.

To disable shadows for menus add the following to wintypes in compton.conf:

# menu        = { shadow = false; };
dropdown_menu = { shadow = false; };
popup_menu    = { shadow = false; };
utility       = { shadow = false; };

Multihead

If a multihead configuration is used without xinerama - meaning that X server is started with more than one screen - then compton will start on only one screen by default. It can be started on all screens by using the -d argument. For example, to run on X screen 0 in the background:

 compton -b -d :0

The above should work on all monitors, but if it doesn't try an older method that manually specifies each one:

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

Troubleshooting

The use of compositing effects may on occasion cause issues such as visual glitches when not configured correctly for use with other applications and programs.

Conky

To disable shadows around Conky windows, have the following in ~/.conkyrc:

own_window_class conky

dwm | dmenu

dwm's statusbar is not detected by any of compton's functions to automatically exclude window manager elements. Neither dwm statusbar nor dmenu have a static window id. If you want to exclude it from inactive window transparency (or other), you'll have to either patch a window class into the source code of each, or exclude by less precise attributes. The following example is with dwm's status on top, which allows a resolution independent of location exclusion:

$ compton <any other arguments> --focus-exclude "x = 0 && y = 0 && override_redirect = true"

Otherwise, where using a configuration file:

focus-exclude = "x = 0 && y = 0 && override_redirect = true";

The override redirect property seems to be false for most windows- having this in the exclusion rule prevents other windows drawn in the upper left corner from being excluded (for example, when dwm statusbar is hidden, x0 y0 will match whatever is in dwm's master stack).

Firefox

See #Disable_shadows_for_some_windows

To disable shadows for Firefox elements add the following to shadow-exclude in compton.conf:

"class_g = 'Firefox' && argb",

See [1] for more information.

slock

Where inactive window transparency has been enabled (the -i argument when running as a command), this may provide troublesome results when also using slock. One solution is to amend the transparency to 0.2. For example, where running compton arguments as a command:

$ compton <any other arguments> -i 0.2

Otherwise, where using a configuration file:

inactive-dim = 0.2;

Alternatively, you may try to exclude slock by its window id, or by excluding all windows with no name.

Note: Some programs change their id for every new instance, but slock's appears to be static. Someone more knowledgeable will have to confirm that slock's id is in fact static- until then, use at your own risk.

Exclude all windows with no name from compton using the following options:

$ compton <other arguments> --focus-exclude "! name~=''"

Find your slock's window id by running the command:

$ xwininfo & slock

Quickly click anywhere on the screen (before slock exits), then type your password to unlock. You should see the window id in the output:

xwininfo: Window id: 0x1800001 (has no name)

Take the window id and exclude it from compton with:

$ compton <any other arguments> --focus-exclude 'id = 0x1800001'

Otherwise, where using a configuration file:

focus-exclude = "id = 0x1800001";

Corrupted screen contents with Intel graphics

On at least some Intel chipsets, DRI3 is known to cause trouble for compton when the display resolution is changed or a new monitor is connected. This can happen with either the intel or modesetting driver. A workaround is to run compton with the --paint-on-overlay option.

Freezing video playback

Some media players may experience an issue where the video will momentarily freeze while the audio continues to play. There is currently no known fix aside from stopping Compton while playing videos.

See the bug report.

Flicker

Applies to fully maximized windows (in sessions without any panels) with the default compton.conf caused and resolved by the following option:

unredir-if-possible = false;

See [2] for more information.

Fullscreen tearing

If you observe screen tearing of video playback only in fullscreen mode see #Flicker.

Lag when using xft fonts

If you experience heavy lag when using Xft fonts in applications such as xterm or urxvt try:

--xrender-sync --xrender-sync-fence

Or the xrender backend.

See [3] for more information.

Screen artifacts/screenshot issues when using AMD's Catalyst driver

Try running Compton with:

--backend xrender

Or add

backend = "xrender";

to your compton.conf file.

See [4] for more information.

Tabbed windows

When windows with transparency are tabbed, the underlying tabbed windows are still visible because of transparency. Each tabbed window also draws its own shadow resulting in multiple shadows.

Removing the multiple shadows issue can be done by adding the following to the already existing shadow-exclude list:

"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"

Not drawing underlying tabbed windows can be enabled by adding the following to your compton.conf:

opacity-rule = [
  "95:class_g = 'URxvt' && !_NET_WM_STATE@:32a",
  "0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'"
];

Note that URxvt is the Xorg class name of your terminal. Change this if you use a different terminal. You can query a window's class by running the command xprop WM_CLASS and clicking the window.

See [5] for more information.

Unable to change the background color with xsetroot

Currently, compton is incompatible with xsetroot's -solid option, a workaround is to use hsetrootAUR to set the background color:

$ hsetroot -solid '#000000'

See [6] for more information.

Screentearing with NVIDIA's proprietary drivers

Try setting

vsync = "opengl"

in compton.conf

Lag with Nvidia proprietary drivers and FullCompositionPipeline

See #Screen artifacts/screenshot issues when using AMD's Catalyst driver.

See also