################################# # # Documentation on the various options used here can be found at: # https://github.com/yshui/picom/blob/next/man/picom.1.asciidoc # ################################# ################################# # # Backend # ################################# # Backend to use: "xrender" or "glx". # GLX backend is typically much faster but depends on a sane driver. backend = "glx"; ################################# # # GLX backend # ################################# # Avoid using stencil buffer, useful if you don’t have a stencil buffer. Might cause incorrect opacity when rendering transparent content glx-no-stencil = true; # GLX backend: Copy unmodified regions from front buffer instead of redrawing # them all. My tests with nvidia-drivers show a 10% decrease in performance # when the whole screen is modified, but a 20% increase when only 1/4 is. My # tests on nouveau show terrible slowdown. glx-copy-from-front = false; # GLX backend: Use MESA_copy_sub_buffer to do partial screen update. My tests # on nouveau shows a 200% performance boost when only 1/4 of the screen is # updated. May break VSync and is not available on some drivers. Overrides # --glx-copy-from-front. # glx-use-copysubbuffermesa = true; # 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). Recommended if it works. # glx-no-rebind-pixmap = true; # GLX backend: GLX buffer swap method we assume. use-damage = true ################################# # # Other # ################################# # Try to detect WM windows and mark them as active. mark-wmwin-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus). mark-ovredir-focused = true; # 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. use-ewmh-active-win = true; # Detect rounded corners and treat them as rectangular when # --shadow-ignore-shaped is on. detect-rounded-corners = true; # Detect _NET_WM_OPACITY on client windows, useful for window managers not # passing _NET_WM_OPACITY of client windows to frame windows. This prevents # opacity being ignored for some apps. For example without this enabled my # xfce4-notifyd is 100% opacity no matter what. detect-client-opacity = true; # Set VSync method. vsync = true; # Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate # tearing. Reported to have no effect, though. dbe = false; # Unredirect all windows if a full-screen opaque window is detected, to maximize # performance for full-screen windows, like games. Known to cause flickering # when redirecting/unredirecting windows. paint-on-overlay may make the # flickering less obvious. unredir-if-possible = true; unredir-if-possible-delay = 0; ################################# # # Shadows # ################################# # Enabled client-side shadows on windows. shadow = false; # The blur radius for shadows. (default 12) #shadow-radius = 10; # The left offset for shadows. (default -15) #shadow-offset-x = -5; # The top offset for shadows. (default -15) #shadow-offset-y = 0; # The translucency for shadows. (default .75) #shadow-opacity = 0.8; # Set if you want different colour shadows #shadow-red = 0.11; #shadow-green = 0.12; #shadow-blue = 0.13; # The shadow exclude options are helpful if you have shadows enabled. Due to the # way picom draws its shadows, certain applications will have visual glitches # (most applications are fine, only apps that do weird things with xshapes or # argb are affected). This list includes all the affected apps I found in my # testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this # prevents a visual glitch with the XFWM alt tab switcher. shadow-exclude = [ "name = 'Notification'", # disable shadows for hidden windows: "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", "_GTK_FRAME_EXTENTS@:c", # disables shadows on sticky windows: "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'", # disables shadows on frames: "class_g ?= 'i3-frame'", # disable shadows on floating windows: "!I3_FLOATING_WINDOW@:c" ]; # Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) shadow-ignore-shaped = false; ################################# # # Opacity # ################################# # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) inactive-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) # frame-opacity = 1; # Let inactive opacity set by -i override the _NET_WM_OPACITY values of windows. inactive-opacity-override = false; # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) active-opacity = 1.0; # Dim inactive windows. (0.0 - 1.0) inactive-dim = 0.05; # Use fixed inactive dim value, instead of adjusting according to window opacity. inactive-dim-fixed = false; # Blur background of transparent windows. Bad performance with X Render backend. # GLX backend is preferred. blur-background = false; # Blur background of opaque windows with transparent frames as well. # blur-background-frame = true; blur-kern = "7x7box"; # Do not let blur radius adjust based on window opacity. blur-background-fixed = false; blur-background-frame = false; blur-background-exclude = [ "class_g = 'i3-frame'", "window_type = 'dock'", "window_type = 'desktop'", "_GTK_FRAME_EXTENTS@:c" ]; ################################# # # Fading # ################################# # Fade windows during opacity changes. fading = false; # The time between steps in a fade in milliseconds. (default 10). fade-delta = 7; # Opacity change between steps while fading in. (default 0.028). fade-in-step = 0.05; # Opacity change between steps while fading out. (default 0.03). fade-out-step = 0.05; # Prevent fading of windows in/out when opening/closing no-fading-openclose = true; # Specify a list of conditions of windows that should not be faded. fade-exclude = [ ]; ################################# # # Other # ################################# # Specify a list of conditions of windows that should always be considered # focused. focus-exclude = [ ]; # Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group # focused at the same time. detect-transient = true; # Use WM_CLIENT_LEADER to group windows, and consider windows in the same group # focused at the same time. WM_TRANSIENT_FOR has higher priority if # --detect-transient is enabled, too. detect-client-leader = true; invert-color-include = []; ################################# # # Window type settings # ################################# wintypes: { tooltip = { # fade: Fade the particular type of windows.# fade: Fade the particular type of windows. fade = true; # shadow: Give those windows shadow shadow = false; # opacity: Default opacity for the type of windows. opacity = 1.0; # focus: Whether to always consider windows of this type focused. focus = true; }; dock = { shadow = false }; dnd = { shadow = false }; };