Skip to content

Instantly share code, notes, and snippets.

@akimdi
Last active June 3, 2025 16:57
Show Gist options
  • Save akimdi/f703ac7704b322218a1f1a583ac7e4aa to your computer and use it in GitHub Desktop.
Save akimdi/f703ac7704b322218a1f1a583ac7e4aa to your computer and use it in GitHub Desktop.

Revisions

  1. akimdi revised this gist Jan 8, 2021. 1 changed file with 6 additions and 6 deletions.
    12 changes: 6 additions & 6 deletions picom.conf
    Original file line number Diff line number Diff line change
    @@ -53,7 +53,7 @@ shadow-offset-y = -7;
    # shadow-exclude = 'bounding_shaped && !rounded_corners'
    # instead.
    #
    # shadow-ignore-shaped = ''
    shadow-ignore-shaped = ''

    # Specify a list of conditions of windows that should have no shadow.
    #
    @@ -86,9 +86,9 @@ shadow-exclude = []


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

    # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
    # fade-in-step = 0.028
    @@ -184,8 +184,8 @@ blur-background-frame = false
    # example:
    # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
    #
    # blur-kern = ''
    blur-kern = "3x3box";
    # blur-kern = "3x3box";
    blur-kern = ''

    # Exclude conditions for background blur.
    # blur-background-exclude = [
    @@ -416,4 +416,4 @@ wintypes:
    dnd = { shadow = false; }
    popup_menu = { opacity = 0.8; }
    dropdown_menu = { opacity = 0.8; }
    };
    };
  2. akimdi created this gist Jan 8, 2021.
    419 changes: 419 additions & 0 deletions picom.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,419 @@
    #################################
    # Shadows #
    #################################


    # 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.
    #
    # shadow = false
    shadow = false;

    # The blur radius for shadows, in pixels. (defaults to 12)
    # shadow-radius = 12
    shadow-radius = 7;

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

    # The left offset for shadows, in pixels. (defaults to -15)
    # shadow-offset-x = -15
    shadow-offset-x = -7;

    # The top offset for shadows, in pixels. (defaults to -15)
    # shadow-offset-y = -15
    shadow-offset-y = -7;

    # Avoid drawing shadows on dock/panel windows. This option is deprecated,
    # you should use the *wintypes* option in your config file instead.
    #
    # no-dock-shadow = false

    # Don't draw shadows on drag-and-drop windows. This option is deprecated,
    # you should use the *wintypes* option in your config file instead.
    #
    # no-dnd-shadow = false

    # Red color value of shadow (0.0 - 1.0, defaults to 0).
    # shadow-red = 0

    # Green color value of shadow (0.0 - 1.0, defaults to 0).
    # shadow-green = 0

    # Blue color value of shadow (0.0 - 1.0, defaults to 0).
    # shadow-blue = 0

    # 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.
    #
    # shadow-ignore-shaped = ''

    # Specify a list of conditions of windows that should have no shadow.
    #
    # examples:
    # shadow-exclude = "n:e:Notification";
    #
    # shadow-exclude = [
    # "name = 'Notification'",
    # "class_g = 'Conky'",
    # "class_g ?= 'Notify-osd'",
    # "class_g = 'Cairo-clock'",
    # "_GTK_FRAME_EXTENTS@:c"
    # ];
    shadow-exclude = []

    # 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.
    #
    # shadow-exclude-reg = ""

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


    #################################
    # Fading #
    #################################


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

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

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

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

    # Specify a list of conditions of windows that should not be faded.
    # fade-exclude = []

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

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


    #################################
    # Transparency / Opacity #
    #################################


    # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
    # inactive-opacity = 1
    inactive-opacity = 0.8;

    # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
    # frame-opacity = 1.0
    frame-opacity = 0.7;

    # Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
    # menu-opacity = 1.0

    # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
    # inactive-opacity-override = true
    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, defaults to 0.0)
    # inactive-dim = 0.0

    # Specify a list of conditions of windows that should always be considered focused.
    #focus-exclude = [ "class_g = 'Cairo-clock'" ];
    focus-exclude = []

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

    # 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.
    # example:
    # opacity-rule = [ "80:class_g = 'URxvt'" ];
    #
    opacity-rule = []

    #################################
    # Background-Blurring #
    #################################


    # Parameters for background blurring, see the *BLUR* section for more information.
    # blur-method =
    # blur-size = 12
    #
    blur-deviation = false

    # 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 = false

    # 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-frame = false

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

    # Specify the blur convolution kernel, with the following format:
    # example:
    # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
    #
    # blur-kern = ''
    blur-kern = "3x3box";

    # Exclude conditions for background blur.
    # blur-background-exclude = [
    # "window_type = 'dock'",
    # "window_type = 'desktop'",
    # "_GTK_FRAME_EXTENTS@:c"
    # ];
    blur-background-exclude = []

    #################################
    # General Settings #
    #################################

    # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
    daemon = true

    # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
    # `xrender` is the default one.
    #
    # backend = 'glx'
    backend = "xrender";

    # Enable/disable VSync.
    # vsync = false
    vsync = false

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

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

    # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
    # mark-ovredir-focused = false
    mark-ovredir-focused = true;

    # Try to detect windows with rounded corners and don't consider them
    # shaped windows. The accuracy is not very high, unfortunately.
    #
    # detect-rounded-corners = false
    detect-rounded-corners = false;

    # Detect '_NET_WM_OPACITY' on client windows, useful for window managers
    # not passing '_NET_WM_OPACITY' of client windows to frame windows.
    #
    # detect-client-opacity = false
    detect-client-opacity = true;

    # Specify refresh rate of the screen. If not specified or 0, picom will
    # try detecting this with X RandR extension.
    #
    # refresh-rate = 60
    refresh-rate = 0

    # Limit picom to repaint at most once every 1 / 'refresh_rate' second to
    # boost performance. This should not be used with
    # vsync drm/opengl/opengl-oml
    # as they essentially does sw-opti's job already,
    # unless you wish to specify a lower refresh rate than the actual value.
    #
    # sw-opti =

    # 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.
    #
    # use-ewmh-active-win = false

    # 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 = false

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

    # Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
    # unredir-if-possible-exclude = []

    # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
    # in the same group focused at the same time.
    #
    # detect-transient = false
    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 = false
    detect-client-leader = true

    # 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.
    #
    # resize-damage = 1

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

    # 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-stencil = false

    # 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.
    #
    # glx-no-rebind-pixmap = false

    # Disable the use of damage information.
    # This cause the whole screen to be redrawn everytime, instead of the part of the screen
    # has actually changed. Potentially degrades the performance, but might fix some artifacts.
    # The opposing option is use-damage
    #
    # no-use-damage = false
    use-damage = true

    # 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.
    #
    # xrender-sync-fence = false

    # 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.
    #
    # glx-fshader-win = ''

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

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

    # 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)
    #
    # max-brightness = 1.0

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

    # 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-level = "debug"
    log-level = "warn";

    # 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.
    #
    # log-file = '/path/to/your/log/file'

    # Show all X errors (for debugging)
    # show-all-xerrors = false

    # Write process ID to a file.
    # write-pid-path = '/path/to/your/log/file'

    # Window type settings
    #
    # '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.)
    #
    # 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.
    #
    # 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`.
    #
    wintypes:
    {
    tooltip = { fade = false; shadow = false; opacity = 0.75; focus = true; full-shadow = false; };
    dock = { shadow = false; }
    dnd = { shadow = false; }
    popup_menu = { opacity = 0.8; }
    dropdown_menu = { opacity = 0.8; }
    };