Configuration files
1# Pretty much copied from Axarva's configs
2
3#################################
4# Corners #
5#################################
6# requires: https://github.com/sdhand/compton
7corner-radius = 12;
8rounded-corners-exclude = [
9 #"window_type = 'toolbar'",
10 "class_g = 'eww-bar'",
11 "class_g = 'eww-powermenu'",
12 "class_g = 'Rofi'",
13 #"class_g = 'Tint2'",
14 "name = 'Notification area'",
15 #"class_g = 'kitty'",
16 #"class_g = 'Alacritty'",
17 # "class_g = 'Polybar'",
18 "class_g = 'Eww'",
19];
20round-borders = 12;
21round-borders-exclude = [
22 #"class_g = 'TelegramDesktop'",
23];
24
25# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
26# Note we don't make any guarantee about possible conflicts with the
27# border_width set by the window manager.
28#
29# example:
30# round-borders-rule = [ "2:class_g = 'URxvt'" ];
31#
32round-borders-rule = [
33 "3:class_g = 'XTerm'",
34 "3:class_g = 'URxvt'",
35 #"10:class_g = 'Alacritty'",
36 "15:class_g = 'Signal'"
37];
38
39#################################
40# Shadows #
41#################################
42
43
44# Enabled client-side shadows on windows. Note desktop windows
45# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
46# unless explicitly requested using the wintypes option.
47#
48#shadow = false
49shadow = true;
50
51# The blur radius for shadows, in pixels. (defaults to 12)
52# shadow-radius = 12
53shadow-radius = 20;
54
55# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
56shadow-opacity = 0.75
57
58# The left offset for shadows, in pixels. (defaults to -15)
59# shadow-offset-x = -15
60shadow-offset-x = -12;
61
62# The top offset for shadows, in pixels. (defaults to -15)
63# shadow-offset-y = -15
64shadow-offset-y = -12;
65
66# Avoid drawing shadows on dock/panel windows. This option is deprecated,
67# you should use the *wintypes* option in your config file instead.
68#
69# no-dock-shadow = false
70
71# Don't draw shadows on drag-and-drop windows. This option is deprecated,
72# you should use the *wintypes* option in your config file instead.
73#
74# no-dnd-shadow = false
75
76# Red color value of shadow (0.0 - 1.0, defaults to 0).
77shadow-red = 0;
78
79# Green color value of shadow (0.0 - 1.0, defaults to 0).
80shadow-green = 0;
81
82# Blue color value of shadow (0.0 - 1.0, defaults to 0).
83shadow-blue = 0;
84
85# Do not paint shadows on shaped windows. Note shaped windows
86# here means windows setting its shape through X Shape extension.
87# Those using ARGB background is beyond our control.
88# Deprecated, use
89# shadow-exclude = 'bounding_shaped'
90# or
91# shadow-exclude = 'bounding_shaped && !rounded_corners'
92# instead.
93#
94# shadow-ignore-shaped = ''
95
96# Specify a list of conditions of windows that should have no shadow.
97#
98# examples:
99# shadow-exclude = "n:e:Notification";
100#
101# shadow-exclude = []
102shadow-exclude = [
103 "name = 'Notification'",
104 "class_g = 'Conky'",
105 "class_g ?= 'Notify-osd'",
106 "class_g = 'Cairo-clock'",
107 "class_g = 'slop'",
108 "class_g = 'Polybar'",
109 "_GTK_FRAME_EXTENTS@:c"
110];
111
112# Specify a X geometry that describes the region in which shadow should not
113# be painted in, such as a dock window region. Use
114# shadow-exclude-reg = "x10+0+0"
115# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
116#
117# shadow-exclude-reg = ""
118
119# Crop shadow of a window fully on a particular Xinerama screen to the screen.
120# xinerama-shadow-crop = false
121
122
123#################################
124# Fading #
125#################################
126
127# Fade windows in/out when opening/closing and when opacity changes,
128# unless no-fading-openclose is used.
129# fading = false
130fading = true;
131
132# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
133# fade-in-step = 0.028
134fade-in-step = 0.015;
135
136# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
137# fade-out-step = 0.03
138fade-out-step = 0.1;
139
140# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
141fade-delta = 5
142
143# Specify a list of conditions of windows that should not be faded.
144# don't need this, we disable fading for all normal windows with wintypes: {}
145fade-exclude = [
146 #"class_g = 'slop'" # maim
147]
148
149# Do not fade on window open/close.
150# no-fading-openclose = false
151
152# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
153# no-fading-destroyed-argb = false
154
155
156#################################
157# Transparency / Opacity #
158#################################
159
160
161# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
162# inactive-opacity = 1
163inactive-opacity = 1;
164
165# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
166# frame-opacity = 1.0
167frame-opacity = 0.9;
168
169# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
170# menu-opacity = 1.0
171
172# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
173# inactive-opacity-override = true
174inactive-opacity-override = false;
175
176# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
177active-opacity = 1;
178
179# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
180# inactive-dim = 0.0
181
182# Specify a list of conditions of windows that should always be considered focused.
183# focus-exclude = []
184focus-exclude = [
185 "class_g = 'Cairo-clock'",
186 "class_g = 'Bar'", # lemonbar
187 "class_g = 'slop'" # maim
188];
189
190# Use fixed inactive dim value, instead of adjusting according to window opacity.
191# inactive-dim-fixed = 1.0
192
193# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
194# like `50:name *= "Firefox"`. picom-trans is recommended over this.
195# Note we don't make any guarantee about possible conflicts with other
196# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
197# example:
198# opacity-rule = [ "80:class_g = 'URxvt'" ];
199#
200# opacity-rule = []
201opacity-rule = [
202 "100:name = 'Dunst'", # lemonbar
203 "10:class_g = 'eww-blur_full'", # maim
204 #"100:class_g = 'XTerm'",
205 #"100:class_g = 'URxvt'",
206 "80:class_g = 'Alacritty'",
207 #"60:class_g = 'eww-player'",
208 "100:class_g = 'Tint2'",
209 "80:class_g = 'Polybar'",
210 #"100:class_g = 'code-oss'",
211 #"100:class_g = 'Meld'",
212 #"70:class_g = 'TelegramDesktop'",
213 #"90:class_g = 'Joplin'",
214 #"100:class_g = 'firefox'",
215 #"80:class_g = 'Spotify'"
216];
217
218
219#################################
220# Background-Blurring #
221#################################
222
223
224# Parameters for background blurring, see the *BLUR* section for more information.
225blur-method = "dual_kawase"
226blur-size = 12
227#
228# blur-deviation = false
229
230# Blur background of semi-transparent / ARGB windows.
231#
232# blur-background = true;
233
234# Blur background of windows when the window frame is not opaque.
235# Implies:
236# blur-background
237# Bad in performance, with driver-dependent behavior. The name may change.
238#
239# blur-background-frame = false;
240
241
242# Use fixed blur strength rather than adjusting according to window opacity.
243# blur-background-fixed = false;
244
245
246# Specify the blur convolution kernel, with the following format:
247# example:
248# 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";
249#
250# blur-kern = ''
251# blur-kern = "3x3box";
252
253# blur: {
254# # requires: https://github.com/ibhagwan/picom
255# method = "dual_kawase";
256# #method = "kernel";
257# strength = 6;
258# deviation = 1.0;
259# # kernel = "11x11gaussian";
260# background = false;
261# background-frame = false;
262# background-fixed = false;
263# kern = "3x3box";
264# }
265#
266# # Exclude conditions for background blur.
267# blur-background-exclude = [
268# #"window_type = 'dock'",
269# #"window_type = 'desktop'",
270# #"class_g = 'URxvt'",
271# "class_g = 'dwm'",
272# #
273# # prevents picom from blurring the background
274# # when taking selection screenshot with `main`
275# # https://github.com/naelstrof/maim/issues/130
276# "class_g = 'slop'",
277# "_GTK_FRAME_EXTENTS@:c"
278# ];
279
280
281#################################
282# General Settings #
283#################################
284
285# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
286# daemon = false
287
288# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
289# `xrender` is the default one.
290#
291experimental-backends = true;
292backend = "xrender";
293
294
295# Enable/disable VSync.
296# vsync = false
297vsync = true;
298
299# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
300# dbus = false
301
302# Try to detect WM windows (a non-override-redirect window with no
303# child that has 'WM_STATE') and mark them as active.
304#
305# mark-wmwin-focused = false
306mark-wmwin-focused = true;
307
308# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
309# mark-ovredir-focused = false
310mark-ovredir-focused = true;
311
312# Try to detect windows with rounded corners and don't consider them
313# shaped windows. The accuracy is not very high, unfortunately.
314#
315# detect-rounded-corners = false
316detect-rounded-corners = true
317
318# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
319# not passing '_NET_WM_OPACITY' of client windows to frame windows.
320#
321# detect-client-opacity = false
322detect-client-opacity = true;
323
324
325# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
326# boost performance. This should not be used with
327# vsync drm/opengl/opengl-oml
328# as they essentially does sw-opti's job already,
329# unless you wish to specify a lower refresh rate than the actual value.
330#
331# sw-opti =
332
333# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
334# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
335# provided that the WM supports it.
336#
337# use-ewmh-active-win = false
338
339# Unredirect all windows if a full-screen opaque window is detected,
340# to maximize performance for full-screen windows. Known to cause flickering
341# when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious.
342#
343# unredir-if-possible = false
344
345# Delay before unredirecting the window, in milliseconds. Defaults to 0.
346# unredir-if-possible-delay = 0
347
348# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
349# unredir-if-possible-exclude = []
350
351# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
352# in the same group focused at the same time.
353#
354# detect-transient = false
355detect-transient = true
356
357# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
358# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
359# detect-transient is enabled, too.
360#
361# detect-client-leader = false
362detect-client-leader = true
363
364# Resize damaged region by a specific number of pixels.
365# A positive value enlarges it while a negative one shrinks it.
366# If the value is positive, those additional pixels will not be actually painted
367# to screen, only used in blur calculation, and such. (Due to technical limitations,
368# with use-damage, those pixels will still be incorrectly painted to screen.)
369# Primarily used to fix the line corruption issues of blur,
370# in which case you should use the blur radius value here
371# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
372# with a 5x5 one you use `--resize-damage 2`, and so on).
373# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
374#
375# resize-damage = 1
376
377# Specify a list of conditions of windows that should be painted with inverted color.
378# Resource-hogging, and is not well tested.
379#
380# invert-color-include = []
381
382# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
383# Might cause incorrect opacity when rendering transparent content (but never
384# practically happened) and may not work with blur-background.
385# My tests show a 15% performance boost. Recommended.
386#
387# glx-no-stencil = false
388
389# GLX backend: Avoid rebinding pixmap on window damage.
390# Probably could improve performance on rapid window content changes,
391# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
392# Recommended if it works.
393#
394# glx-no-rebind-pixmap = false
395
396# Disable the use of damage information.
397# This cause the whole screen to be redrawn everytime, instead of the part of the screen
398# has actually changed. Potentially degrades the performance, but might fix some artifacts.
399# The opposing option is use-damage
400#
401# no-use-damage = false
402use-damage = true
403
404# Use X Sync fence to sync clients' draw calls, to make sure all draw
405# calls are finished before picom starts drawing. Needed on nvidia-drivers
406# with GLX backend for some users.
407#
408# xrender-sync-fence = false
409
410# GLX backend: Use specified GLSL fragment shader for rendering window contents.
411# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
412# in the source tree for examples.
413#
414# glx-fshader-win = ''
415
416# Force all windows to be painted with blending. Useful if you
417# have a glx-fshader-win that could turn opaque pixels transparent.
418#
419# force-win-blend = false
420
421# Do not use EWMH to detect fullscreen windows.
422# Reverts to checking if a window is fullscreen based only on its size and coordinates.
423#
424# no-ewmh-fullscreen = false
425
426# Dimming bright windows so their brightness doesn't exceed this set value.
427# Brightness of a window is estimated by averaging all pixels in the window,
428# so this could comes with a performance hit.
429# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
430#
431# max-brightness = 1.0
432
433# Make transparent windows clip other windows like non-transparent windows do,
434# instead of blending on top of them.
435#
436# transparent-clipping = false
437
438# Set the log level. Possible values are:
439# "trace", "debug", "info", "warn", "error"
440# in increasing level of importance. Case doesn't matter.
441# If using the "TRACE" log level, it's better to log into a file
442# using *--log-file*, since it can generate a huge stream of logs.
443#
444# log-level = "debug"
445log-level = "info";
446
447# Set the log file.
448# If *--log-file* is never specified, logs will be written to stderr.
449# Otherwise, logs will to written to the given file, though some of the early
450# logs might still be written to the stderr.
451# When setting this option from the config file, it is recommended to use an absolute path.
452#
453# log-file = '/path/to/your/log/file'
454
455# Show all X errors (for debugging)
456# show-all-xerrors = false
457
458# Write process ID to a file.
459# write-pid-path = '/path/to/your/log/file'
460
461# Window type settings
462#
463# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
464# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
465# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
466# "tooltip", "notification", "combo", and "dnd".
467#
468# Following per window-type options are available: ::
469#
470# fade, shadow:::
471# Controls window-type-specific shadow and fade settings.
472#
473# opacity:::
474# Controls default opacity of the window type.
475#
476# focus:::
477# Controls whether the window of this type is to be always considered focused.
478# (By default, all window types except "normal" and "dialog" has this on.)
479#
480# full-shadow:::
481# Controls whether shadow is drawn under the parts of the window that you
482# normally won't be able to see. Useful when the window has parts of it
483# transparent, and you want shadows in those areas.
484#
485# redir-ignore:::
486# Controls whether this type of windows should cause screen to become
487# redirected again after been unredirected. If you have unredir-if-possible
488# set, and doesn't want certain window to cause unnecessary screen redirection,
489# you can set this to `true`.
490#
491wintypes:
492{
493 normal = { full-shadow = true; };
494 menu = { full-shadow = true; };
495 tooltip = { fade = true; shadow = false; focus = true;};
496 dock = { shadow = false; };
497 dnd = { shadow = false; };
498 popup_menu = { full-shadow = true; };
499 utility = { full-shadow = true; };
500 toolbar = { full-shadow = true; };
501 notification = { opacity = 1; }
502};