Provided by: picom_9.1-1_amd64 bug

NAME

       picom - a compositor for X11

SYNOPSIS

       picom [OPTIONS]

DESCRIPTION

       picom is a compositor based on Dana Jansens' version of xcompmgr (which itself was written
       by Keith Packard). It includes some improvements over the original xcompmgr, like window
       frame opacity and inactive window transparency.

OPTIONS

       -h, --help
           Get the usage text embedded in program code, which may be more up-to-date than this
           man page.

       -r, --shadow-radius=RADIUS
           The blur radius for shadows, in pixels. (defaults to 12)

       -o, --shadow-opacity=OPACITY
           The opacity of shadows. (0.0 - 1.0, defaults to 0.75)

       -l, --shadow-offset-x=OFFSET
           The left offset for shadows, in pixels. (defaults to -15)

       -t, --shadow-offset-y=OFFSET
           The top offset for shadows, in pixels. (defaults to -15)

       -I, --fade-in-step=OPACITY_STEP
           Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)

       -O, --fade-out-step=OPACITY_STEP
           Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)

       -D, --fade-delta=MILLISECONDS
           The time between steps in fade step, in milliseconds. (> 0, defaults to 10)

       -c, --shadow
           Enabled client-side shadows on windows. Note desktop windows (windows with
           _NET_WM_WINDOW_TYPE_DESKTOP) never get shadow, unless explicitly requested using the
           wintypes option.

       -f, --fading
           Fade windows in/out when opening/closing and when opacity changes, unless
           --no-fading-openclose is used.

       -F
           Equals to -f. Deprecated.

       -i, --inactive-opacity=OPACITY
           Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)

       -e, --frame-opacity=OPACITY
           Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)

       -b, --daemon
           Daemonize process. Fork to background after initialization. This option can only be
           set from the command line, setting this in the configuration file will have no effect.

       --log-level
           Set the log level. Possible values are "TRACE", "DEBUG", "INFO", "WARN", "ERROR", in
           increasing level of importance. Case doesn’t matter. If using the "TRACE" log level,
           it’s better to log into a file using --log-file, since it can generate a huge stream
           of logs.

       --log-file
           Set the log file. If --log-file is never specified, logs will be written to stderr.
           Otherwise, logs will to written to the given file, though some of the early logs might
           still be written to the stderr. When setting this option from the config file, it is
           recommended to use an absolute path.

       --experimental-backends
           Use the new, reimplemented version of the backends. The new backends are HIGHLY
           UNSTABLE at this point, you have been warned. This option is not available in the
           config file.

       --show-all-xerrors
           Show all X errors (for debugging).

       --config PATH
           Look for configuration file at the path. See CONFIGURATION FILES section below for
           where picom looks for a configuration file by default. Use /dev/null to avoid loading
           configuration file.

       --write-pid-path PATH
           Write process ID to a file. it is recommended to use an absolute path.

       --shadow-color STRING
           Color of shadow, as a hex string (#000000)

       --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
           Let inactive opacity set by -i override the _NET_WM_WINDOW_OPACITY values of windows.

       --active-opacity OPACITY
           Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)

       --inactive-dim VALUE
           Dim inactive windows. (0.0 - 1.0, defaults to 0.0)

       --corner-radius VALUE
           Sets the radius of rounded window corners. When > 0, the compositor will round the
           corners of windows. Does not interact well with --transparent-clipping. (defaults to
           0).

       --rounded-corners-exclude CONDITION
           Exclude conditions for rounded corners.

       --mark-wmwin-focused
           Try to detect WM windows (a non-override-redirect window with no child that has
           WM_STATE) and mark them as active.

       --mark-ovredir-focused
           Mark override-redirect windows that doesn’t have a child window with WM_STATE focused.

       --no-fading-openclose
           Do not fade on window open/close.

       --no-fading-destroyed-argb
           Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox,
           Fluxbox, etc.

       --shadow-ignore-shaped
           Do not paint shadows on shaped windows. Note shaped windows here means windows setting
           its shape through X Shape extension. Those using ARGB background is beyond our
           control. Deprecated, use --shadow-exclude 'bounding_shaped' or --shadow-exclude
           'bounding_shaped && !rounded_corners' instead.

       --detect-rounded-corners
           Try to detect windows with rounded corners and don’t consider them shaped windows. The
           accuracy is not very high, unfortunately.

       --detect-client-opacity
           Detect _NET_WM_WINDOW_OPACITY on client windows, useful for window managers not
           passing _NET_WM_WINDOW_OPACITY of client windows to frame windows.

       --vsync, --no-vsync
           Enable/disable VSync.

       --use-ewmh-active-win
           Use EWMH _NET_ACTIVE_WINDOW to determine currently focused window, rather than
           listening to FocusIn/FocusOut event. Might have more accuracy, provided that the WM
           supports it.

       --unredir-if-possible
           Unredirect all windows if a full-screen opaque window is detected, to maximize
           performance for full-screen windows. Known to cause flickering when
           redirecting/unredirecting windows.

       --unredir-if-possible-delay MILLISECONDS
           Delay before unredirecting the window, in milliseconds. Defaults to 0.

       --unredir-if-possible-exclude CONDITION
           Conditions of windows that shouldn’t be considered full-screen for unredirecting
           screen.

       --shadow-exclude CONDITION
           Specify a list of conditions of windows that should have no shadow.

       --clip-shadow-above CONDITION
           Specify a list of conditions of windows that should have no shadow painted over, such
           as a dock window.

       --fade-exclude CONDITION
           Specify a list of conditions of windows that should not be faded.

       --focus-exclude CONDITION
           Specify a list of conditions of windows that should always be considered focused.

       --inactive-dim-fixed
           Use fixed inactive dim value, instead of adjusting according to window opacity.

       --detect-transient
           Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused
           at the same time.

       --detect-client-leader
           Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused
           at the same time. This usually means windows from the same application will be
           considered focused or unfocused at the same time.WM_TRANSIENT_FOR has higher priority
           if --detect-transient is enabled, too.

       --blur-method, --blur-size, --blur-deviation, --blur-strength
           Parameters for background blurring, see the BLUR section for more information.

       --blur-background
           Blur background of semi-transparent / ARGB windows. Bad in performance, with
           driver-dependent behavior. The name of the switch may change without prior
           notifications.

       --blur-background-frame
           Blur background of windows when the window frame is not opaque. Implies
           --blur-background. Bad in performance, with driver-dependent behavior. The name may
           change.

       --blur-background-fixed
           Use fixed blur strength rather than adjusting according to window opacity.

       --blur-kern MATRIX
           Specify the blur convolution kernel, with the following format:

               WIDTH,HEIGHT,ELE1,ELE2,ELE3,ELE4,ELE5...

           In other words, the matrix is formatted as a list of comma separated numbers. The
           first two numbers must be integers, which specify the width and height of the matrix.
           They must be odd numbers. Then, the following width * height - 1 numbers specifies the
           numbers in the matrix, row by row, excluding the center element.

           The elements are finite floating point numbers. The decimal pointer has to be .  (a
           period), scientific notation is not supported.

           The element in the center will either be 1.0 or varying based on opacity, depending on
           whether you have --blur-background-fixed. Yet the automatic adjustment of blur factor
           may not work well with a custom blur kernel.

           A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like:

               --blur-kern '7,7,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.001723,0.059106,0.493069,0.493069,0.059106,0.001723,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003'

           May also be one of the predefined kernels: 3x3box (default), 5x5box, 7x7box,
           3x3gaussian, 5x5gaussian, 7x7gaussian, 9x9gaussian, 11x11gaussian. All Gaussian
           kernels are generated with sigma = 0.84089642 . If you find yourself needing to
           generate custom blur kernels, you might want to try the new blur configuration
           supported by the experimental backends (See BLUR and --experimental-backends).

       --blur-background-exclude CONDITION
           Exclude conditions for background blur.

       --resize-damage INTEGER
           Resize damaged region by a specific number of pixels. A positive value enlarges it
           while a negative one shrinks it. If the value is positive, those additional pixels
           will not be actually painted to screen, only used in blur calculation, and such. (Due
           to technical limitations, with --use-damage, those pixels will still be incorrectly
           painted to screen.) Primarily used to fix the line corruption issues of blur, in which
           case you should use the blur radius value here (e.g. with a 3x3 kernel, you should use
           --resize-damage 1, with a 5x5 one you use --resize-damage 2, and so on). May or may
           not work with --glx-no-stencil. Shrinking doesn’t function correctly.

       --invert-color-include CONDITION
           Specify a list of conditions of windows that should be painted with inverted color.
           Resource-hogging, and is not well tested.

       --opacity-rule OPACITY:'CONDITION'
           Specify a list of opacity rules, in the format PERCENT:PATTERN, like 50:name *=
           "Firefox". picom-trans is recommended over this. Note we don’t make any guarantee
           about possible conflicts with other programs that set _NET_WM_WINDOW_OPACITY on frame
           or client windows.

       --shadow-exclude-reg GEOMETRY
           Specify a X geometry that describes the region in which shadow should not be painted
           in, such as a dock window region. Use --shadow-exclude-reg x10+0-0, for example, if
           the 10 pixels on the bottom of the screen should not have shadows painted on.

       --xinerama-shadow-crop
           Crop shadow of a window fully on a particular Xinerama screen to the screen.

       --backend BACKEND
           Specify the backend to use: xrender, glx, or xr_glx_hybrid.  xrender is the default
           one.

           •   xrender backend performs all rendering operations with X Render extension. It is
               what xcompmgr uses, and is generally a safe fallback when you encounter rendering
               artifacts or instability.

           •   glx (OpenGL) backend performs all rendering operations with OpenGL. It is more
               friendly to some VSync methods, and has significantly superior performance on
               color inversion (--invert-color-include) or blur (--blur-background). It requires
               proper OpenGL 2.0 support from your driver and hardware. You may wish to look at
               the GLX performance optimization options below.  --xrender-sync-fence might be
               needed on some systems to avoid delay in changes of screen contents.

           •   xr_glx_hybrid backend renders the updated screen contents with X Render and
               presents it on the screen with GLX. It attempts to address the rendering issues
               some users encountered with GLX backend and enables the better VSync of GLX
               backends.  --vsync-use-glfinish might fix some rendering issues with this backend.

       --glx-no-stencil
           GLX backend: Avoid using stencil buffer, useful if you don’t have a stencil buffer.
           Might cause incorrect opacity when rendering transparent content (but never
           practically happened) and may not work with --blur-background. My tests show a 15%
           performance boost. Recommended.

       --glx-no-rebind-pixmap
           GLX backend: Avoid rebinding pixmap on window damage. Probably could improve
           performance on rapid window content changes, but is known to break things on some
           drivers (LLVMpipe, xf86-video-intel, etc.). Recommended if it works.

       --no-use-damage
           Disable the use of damage information. This cause the whole screen to be redrawn every
           time, instead of the part of the screen has actually changed. Potentially degrades the
           performance, but might fix some artifacts.

       --xrender-sync-fence
           Use X Sync fence to sync clients' draw calls, to make sure all draw calls are finished
           before picom starts drawing. Needed on nvidia-drivers with GLX backend for some users.

       --glx-fshader-win SHADER
           GLX backend: Use specified GLSL fragment shader for rendering window contents. See
           compton-default-fshader-win.glsl and compton-fake-transparency-fshader-win.glsl in the
           source tree for examples.

       --force-win-blend
           Force all windows to be painted with blending. Useful if you have a --glx-fshader-win
           that could turn opaque pixels transparent.

       --dbus
           Enable remote control via D-Bus. See the D-BUS API section below for more details.

       --benchmark CYCLES
           Benchmark mode. Repeatedly paint until reaching the specified cycles.

       --benchmark-wid WINDOW_ID
           Specify window ID to repaint in benchmark mode. If omitted or is 0, the whole screen
           is repainted.

       --no-ewmh-fullscreen
           Do not use EWMH to detect fullscreen windows. Reverts to checking if a window is
           fullscreen based only on its size and coordinates.

       --max-brightness
           Dimming bright windows so their brightness doesn’t exceed this set value. Brightness
           of a window is estimated by averaging all pixels in the window, so this could comes
           with a performance hit. Setting this to 1.0 disables this behaviour. Requires
           --use-damage to be disabled. (default: 1.0)

       --transparent-clipping
           Make transparent windows clip other windows like non-transparent windows do, instead
           of blending on top of them.

FORMAT OF CONDITIONS

       Some options accept a condition string to match certain windows. A condition string is
       formed by one or more conditions, joined by logical operators.

       A condition with "exists" operator looks like this:

           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE>

       With equals operator it looks like:

           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE> <NEGATION> <OP QUALIFIER> <MATCH TYPE> = <PATTERN>

       With greater-than/less-than operators it looks like:

           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE> <NEGATION> <OPERATOR> <PATTERN>

       NEGATION (optional) is one or more exclamation marks;

       TARGET is either a predefined target name, or the name of a window property to match.
       Supported predefined targets are id, x, y, x2 (x + widthb), y2 (like x2), width, height,
       widthb (width + 2 * border_width), heightb (like widthb), border_width, fullscreen,
       override_redirect, argb (whether the window has an ARGB visual), focused, wmwin (whether
       the window looks like a WM window, i.e. has no child window with WM_STATE and is not
       override-redirected), bounding_shaped, rounded_corners (requires
       --detect-rounded-corners), client (ID of client window), window_type (window type in
       string), leader (ID of window leader), name, class_g (= WM_CLASS[1]), class_i (=
       WM_CLASS[0]), and role.

       CLIENT/FRAME is a single @ if the window attribute should be be looked up on client
       window, nothing if on frame window;

       INDEX (optional) is the index number of the property to look up. For example, [2] means
       look at the third value in the property. If not specified, the first value (index [0]) is
       used implicitly. Use the special value [*] to perform matching against all available
       property values using logical OR. Do not specify it for predefined targets.

       FORMAT (optional) specifies the format of the property, 8, 16, or 32. On absence we use
       format X reports. Do not specify it for predefined or string targets.

       TYPE is a single character representing the type of the property to match for: c for
       CARDINAL, a for ATOM, w for WINDOW, d for DRAWABLE, s for STRING (and any other string
       types, such as UTF8_STRING). Do not specify it for predefined targets.

       OP QUALIFIER (optional), applicable only for equals operator, could be ? (ignore-case).

       MATCH TYPE (optional), applicable only for equals operator, could be nothing (exact
       match), * (match anywhere), ^ (match from start), % (wildcard), or ~ (PCRE regular
       expression).

       OPERATOR is one of = (equals), <, >, <=, =>, or nothing (exists). Exists operator checks
       whether a property exists on a window (but for predefined targets, exists means != 0
       then).

       PATTERN is either an integer or a string enclosed by single or double quotes.
       Python-3-style escape sequences and raw string are supported in the string format.

       Supported logical operators are && (and) and || (or). && has higher precedence than ||,
       left-to-right associativity. Use parentheses to change precedence.

       Examples:

           # If the window is focused
           focused
           focused = 1
           # If the window is not override-redirected
           !override_redirect
           override_redirect = false
           override_redirect != true
           override_redirect != 1
           # If the window is a menu
           window_type *= "menu"
           _NET_WM_WINDOW_TYPE@:a *= "MENU"
           # If the window is marked hidden: _NET_WM_STATE contains _NET_WM_STATE_HIDDEN
           _NET_WM_STATE@[*]:a = "_NET_WM_STATE_HIDDEN"
           # If the window is marked sticky: _NET_WM_STATE contains an atom that contains
           # "sticky", ignore case
           _NET_WM_STATE@[*]:a *?= "sticky"
           # If the window name contains "Firefox", ignore case
           name *?= "Firefox"
           _NET_WM_NAME@:s *?= "Firefox"
           # If the window name ends with "Firefox"
           name %= "*Firefox"
           name ~= "Firefox$"
           # If the window has a property _COMPTON_SHADOW with value 0, type CARDINAL,
           # format 32, value 0, on its frame window
           _COMPTON_SHADOW:32c = 0
           # If the third value of _NET_FRAME_EXTENTS is less than 20, or there's no
           # _NET_FRAME_EXTENTS property on client window
           _NET_FRAME_EXTENTS@[2]:32c < 20 || !_NET_FRAME_EXTENTS@:32c
           # The pattern here will be parsed as "dd4"
           name = "\x64\x64\o64"
           # The pattern here will be parsed as "\x64\x64\x64"
           name = r"\x64\x64\o64"

LEGACY FORMAT OF CONDITIONS

       This is the old condition format we once used. Support of this format might be removed in
       the future.

           condition = TARGET:TYPE[FLAGS]:PATTERN

       TARGET is one of "n" (window name), "i" (window class instance), "g" (window general
       class), and "r" (window role).

       TYPE 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).

       FLAGS could be a series of flags. Currently the only defined flag is "i" (ignore case).

       PATTERN is the actual pattern string.

CONFIGURATION FILES

       picom could read from a configuration file if libconfig support is compiled in. If
       --config is not used, picom will seek for a configuration file in
       $XDG_CONFIG_HOME/picom.conf (~/.config/picom.conf, usually), then
       $XDG_CONFIG_HOME/picom/picom.conf, then $XDG_CONFIG_DIRS/picom.conf (often
       /etc/xdg/picom.conf), then $XDG_CONFIG_DIRS/picom/picom.conf.

       picom uses general libconfig configuration file format. A sample configuration file is
       available as picom.sample.conf in the source tree. Most of commandline switches can be
       used as options in configuration file as well. For example, --vsync option documented
       above can be set in the configuration file using `vsync = `. Command line options will
       always overwrite the settings in the configuration file.

       Window-type-specific settings are exposed only in configuration file and has the following
       format:

           wintypes:
           {
             WINDOW_TYPE = { fade = BOOL; shadow = BOOL; opacity = FLOAT; focus = BOOL; blur-background = BOOL; full-shadow = BOOL; clip-shadow-above = BOOL; redir-ignore = BOOL; };
           };

       WINDOW_TYPE is one of the 15 window types defined in EWMH standard: "unknown", "desktop",
       "dock", "toolbar", "menu", "utility", "splash", "dialog", "normal", "dropdown_menu",
       "popup_menu", "tooltip", "notification", "combo", and "dnd".

       Following per window-type options are available:

           fade, shadow
               Controls window-type-specific shadow and fade settings.

           opacity
               Controls default opacity of the window type.

           focus
               Controls whether the window of this type is to be always considered focused. (By
               default, all window types except "normal" and "dialog" has this on.)

           blur-background
               Controls wether the window of this type will have its transparent background
               blurred.

           full-shadow
               Controls whether shadow is drawn under the parts of the window that you normally
               won’t be able to see. Useful when the window has parts of it transparent, and you
               want shadows in those areas.

           clip-shadow-above
               Controls wether shadows that would have been drawn above the window should be
               clipped. Useful for dock windows that should have no shadow painted on top.

           redir-ignore
               Controls whether this type of windows should cause screen to become redirected
               again after been unredirected. If you have --unredir-if-possible set, and doesn’t
               want certain window to cause unnecessary screen redirection, you can set this to
               true.

BLUR

       You can configure how the window background is blurred using a blur section in your
       configuration file. Here is an example:

           blur:
           {
             method = "gaussian";
             size = 10;
             deviation = 5.0;
           };

       Available options of the blur section are:

           method
               A string. Controls the blur method. Corresponds to the --blur-method command line
               option. Available choices are: none to disable blurring; gaussian for gaussian
               blur; box for box blur; kernel for convolution blur with a custom kernel;
               dual_kawase for dual-filter kawase blur. Note: gaussian, box and dual_kawase blur
               methods are only supported by the experimental backends. (default: none)

           size
               An integer. The size of the blur kernel, required by gaussian and box blur
               methods. For the kernel method, the size is included in the kernel. Corresponds to
               the --blur-size command line option (default: 3).

           deviation
               A floating point number. The standard deviation for the gaussian blur method.
               Corresponds to the --blur-deviation command line option (default: 0.84089642).

           strength
               An integer in the range 0-20. The strength of the dual_kawase blur method.
               Corresponds to the --blur-strength command line option. If set to zero, the value
               requested by --blur-size is approximated (default: 5).

           kernel
               A string. The kernel to use for the kernel blur method, specified in the same
               format as the --blur-kerns option. Corresponds to the --blur-kerns command line
               option.

SIGNALS

       •   picom reinitializes itself upon receiving SIGUSR1.

D-BUS API

       It’s possible to control picom via D-Bus messages, by running picom with --dbus and send
       messages to com.github.chjj.compton.<DISPLAY>. <DISPLAY> is the display used by picom,
       with all non-alphanumeric characters transformed to underscores. For DISPLAY=:0.0 you
       should use com.github.chjj.compton._0_0, for example.

       The D-Bus methods and signals are not yet stable, thus undocumented right now.

EXAMPLES

       •   Disable configuration file parsing:

               $ picom --config /dev/null

       •   Run picom with client-side shadow and fading:

               $ picom -cf

       •   Same thing as above, plus making inactive windows 80% transparent, making frame 80%
           transparent, don’t fade on window open/close, and fork to background:

               $ picom -bcf -i 0.8 -e 0.8 --no-fading-openclose

       •   Draw white shadows:

               $ picom -c --shadow-red 1 --shadow-green 1 --shadow-blue 1

       •   Avoid drawing shadows on wbar window:

               $ picom -c --shadow-exclude 'class_g = "wbar"'

       •   Enable VSync with GLX backend:

               $ picom --backend glx --vsync

BUGS

       Please submit bug reports to https://github.com/yshui/picom.

       Out dated information in this man page is considered a bug.

RESOURCES

       Homepage: https://github.com/yshui/picom

SEE ALSO

       xcompmgr(1), picom-trans(1)