Picom doesn't support 'dual_kawase' blur method

Using picom currently in stable, I’m not able to use the ‘dual_kawase’ blur method.

Here is my picom.conf:

picom.conf
# Thank you code_nomad: http://9m.no/ꪯ鵞
# and Arch Wiki contributors: https://wiki.archlinux.org/index.php/Compton

#################################
#
# Backend
#
#################################

# Backend to use: "xrender" or "glx".
# GLX backend is typically much faster but depends on a sane driver.
backend = "glx";

#################################
#
# GLX backend
#
#################################

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.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
#glx-swap-method = "undefined"; #deprecated !
#use-damage = true

#################################
#
# Shadows
#
#################################

# Enabled client-side shadows on windows.
shadow = true;
# The blur radius for shadows. (default 12)
shadow-radius = 5;
# The left offset for shadows. (default -15)
shadow-offset-x = 1;
# The top offset for shadows. (default -15)
shadow-offset-y = 1;
# The translucency for shadows. (default .75)
shadow-opacity = 0.3;

# Set if you want different colour shadows
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;

# 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~=''",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'xfce4-notifyd'",
    "name *= 'VLC'",
    "name *= 'compton'",
    "name *= 'picom'",
    "name *= 'Chromium'",
    "name *= 'Chrome'",
    "class_g = 'Firefox' && argb",
    "class_g = 'Conky'",
    "class_g = 'Kupfer'",
    "class_g = 'Synapse'",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'",
    "class_g ?= 'Dmenu'",
#	   "class_g ?= 'Dunst'",
# disables shadows on i3 frames
    "class_g ?= 'i3-frame'",
    "_GTK_FRAME_EXTENTS@:c",
    "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)
shadow-ignore-shaped = false;

#################################
#
# Opacity
#
#################################

inactive-opacity = 0.8;
active-opacity = 1.0;
frame-opacity = 0.6;
inactive-opacity-override = false;


# Dim inactive windows. (0.0 - 1.0)
# inactive-dim = 0.2;
# Do not let dimness adjust based on window opacity.
# inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
# blur-background = true;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
blur-background-fixed = true;
blur-background-exclude = [
    "window_type = 'dock'",
    "window_type = 'desktop'"
];

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

# Fade windows during opacity changes.
fading = false;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 1;
# Opacity change between steps while fading in. (default 0.028).
fade-in-step = 0.03;
# Opacity change between steps while fading out. (default 0.03).
fade-out-step = 0.03;
# Fade 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
#
#################################

# 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;

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

# Vertical synchronization: match the refresh rate of the monitor
vsync = false;

# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;

# 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 = true;

# 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.
unredir-if-possible = true;

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

# 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;

#################################
#
# Window type settings
#
#################################

wintypes : 
{
  tooltip : 
  {
    fade = true;
    shadow = false;
    opacity = 0.85;
    focus = true;
  };
  fullscreen : 
  {
    fade = true;
    shadow = false;
    opacity = 1;
    focus = true;
  };
};

######################
#
# XSync
# See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d
#
######################

# Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users.
xrender-sync-fence = true;

opacity-rule = [ 
"99:name *?= 'Call'", 
"99:class_g = 'Chromium'", 
"99:name *?= 'Conky'", 
"99:class_g = 'Darktable'", 
"50:class_g = 'Dmenu'", 
"99:name *?= 'Event'", 
"99:class_g = 'Firefox'", 
"99:class_g = 'GIMP'", 
"99:name *?= 'Image'",
"99:class_g = 'Lazpaint'", 
"99:class_g = 'Midori'", 
"99:name *?= 'Minitube'", 
"99:class_g = 'Mousepad'",
"99:name *?= 'MuseScore'", 
"90:name *?= 'Page Info'", 
"99:name *?= 'Pale Moon'", 
"90:name *?= 'Panel'", 
"99:class_g = 'Pinta'", 
"90:name *?= 'Restart'", 
"99:name *?= 'sudo'", 
"99:name *?= 'Screenshot'", 
"99:class_g = 'Viewnior'", 
"99:class_g = 'VirtualBox'", 
"99:name *?= 'VLC'", 
"99:name *?= 'Write'", 
"93:class_g = 'URxvt' && !_NET_WM_STATE@:32a", 
"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", 
"96:_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'",
"80:class_g = 'Lxterminal'", 
"80:class_g = 'lxterminal'",
"0:_NET_WM_STATE@[0]:32a = '_NET_WM_STATE_HIDDEN'",
];
# Taken from https://www.youtube.com/watch?v=5GpyaSEe0VY
#"0:_NET_WM_STATE@[0]:32a = '_NET_WM_STATE_HIDDEN'",

blur:
{
	#method = "gaussian";
	#method = "kernel";
	method = "dual_kawase";
	#method = "box";
	#size = 10;
	#deviation = 5.0;
	strength = 3;
};

(Just the relevant part):

blur:
{
	method = "dual_kawase";
	strength = 3;
};

Using manjaro-supplied picom, this is the error I get:

chewie@frigate:~$ killall picom
chewie@frigate:~$ picom -b --experimental-backends
[ 03/28/2021 08:27:13.634 parse_config_libconfig WARN ] Invalid blur method dual_kawase, ignoring.

And when I use picom I built from the git repo (following the build instructions on the repo):

chewie@frigate:src$ killall picom
chewie@frigate:src$ ./picom -b --experimental-backends
chewie@frigate:src$ 

(no errors)

System info
$ inxi -Fxxxza --no-host
System:    Kernel: 5.11.6-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
           parameters: BOOT_IMAGE=/boot/vmlinuz-5.11-x86_64 root=UUID=954cf137-75f3-4e46-8682-9f013e1bd856 rw quiet 
           cryptdevice=UUID=4110f216-65f4-48f0-8bbe-81a930fc1c74:luks-4110f216-65f4-48f0-8bbe-81a930fc1c74 
           root=/dev/mapper/luks-4110f216-65f4-48f0-8bbe-81a930fc1c74 apparmor=1 security=apparmor 
           resume=/dev/mapper/luks-c6d6abb3-a33a-4e43-b48c-c6131a7cb028 udev.log_priority=3 
           Desktop: i3 4.19.1 info: i3bar vt: 7 dm: LightDM 1.30.0 Distro: Manjaro Linux base: Arch Linux 
Machine:   Type: Portable System: Dell product: Inspiron 5720 v: N/A serial: <filter> Chassis: type: 8 v: 0.1 serial: <filter> 
           Mobo: Dell model: 023HTX v: FAB1 serial: <filter> UEFI-[Legacy]: Dell v: A03 date: 05/04/2012 
Battery:   ID-1: BAT0 charge: 32.5 Wh (100.0%) condition: 32.5/48.8 Wh (66.5%) volts: 12.2 min: 11.1 model: SANYO Dell 
           type: Li-ion serial: <filter> status: Full 
           Device-1: hidpp_battery_2 model: Logitech Wireless Mouse M325 serial: <filter> charge: 55% (should be ignored) 
           rechargeable: yes status: Discharging 
CPU:       Info: Quad Core model: Intel Core i7-3612QM bits: 64 type: MT MCP arch: Ivy Bridge family: 6 model-id: 3A (58) 
           stepping: 9 microcode: 21 cache: L2: 6 MiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 33534 
           Speed: 2314 MHz min/max: 1200/3100 MHz Core speeds (MHz): 1: 2314 2: 2121 3: 2535 4: 2641 5: 1367 6: 1439 7: 1269 
           8: 1776 
           Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
           Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
           Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
           Type: meltdown mitigation: PTI 
           Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl and seccomp 
           Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization 
           Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling 
           Type: srbds status: Vulnerable: No microcode 
           Type: tsx_async_abort status: Not affected 
Graphics:  Device-1: Intel 3rd Gen Core processor Graphics vendor: Dell driver: i915 v: kernel bus-ID: 00:02.0 
           chip-ID: 8086:0166 class-ID: 0300 
           Device-2: Microdia Laptop_Integrated_Webcam_HD type: USB driver: uvcvideo bus-ID: 1-1.5:4 chip-ID: 0c45:648d 
           class-ID: 0e02 
           Display: x11 server: X.Org 1.20.10 compositor: picom v: git-dac85 driver: loaded: intel unloaded: modesetting 
           alternate: fbdev,vesa display-ID: :0 screens: 1 
           Screen-1: 0 s-res: 3520x1080 s-dpi: 96 s-size: 930x285mm (36.6x11.2") s-diag: 973mm (38.3") 
           Monitor-1: LVDS1 res: 1600x900 hz: 60 dpi: 107 size: 380x220mm (15.0x8.7") diag: 439mm (17.3") 
           Monitor-2: HDMI1 res: 1920x1080 hz: 75 dpi: 102 size: 480x270mm (18.9x10.6") diag: 551mm (21.7") 
           OpenGL: renderer: Mesa DRI Intel HD Graphics 4000 (IVB GT2) v: 4.2 Mesa 20.3.4 compat-v: 3.0 direct render: Yes 
Audio:     Device-1: Intel 7 Series/C216 Family High Definition Audio vendor: Dell driver: snd_hda_intel v: kernel 
           bus-ID: 00:1b.0 chip-ID: 8086:1e20 class-ID: 0403 
           Sound Server-1: ALSA v: k5.11.6-1-MANJARO running: yes 
           Sound Server-2: JACK v: 0.125.0 running: no 
           Sound Server-3: PulseAudio v: 14.2 running: yes 
           Sound Server-4: PipeWire v: 0.3.23 running: yes 
Network:   Device-1: Intel Centrino Wireless-N 2230 driver: iwlwifi v: kernel port: efa0 bus-ID: 01:00.0 chip-ID: 8086:0887 
           class-ID: 0280 
           IF: wlp1s0 state: up mac: <filter> 
           Device-2: Realtek RTL810xE PCI Express Fast Ethernet vendor: Dell driver: r8169 v: kernel port: 2000 
           bus-ID: 02:00.0 chip-ID: 10ec:8136 class-ID: 0200 
           IF: enp2s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
           Device-3: Realtek RTL8153 Gigabit Ethernet Adapter type: USB driver: r8152 bus-ID: 4-4:3 chip-ID: 0bda:8153 
           class-ID: 0000 serial: <filter> 
           IF: enp0s20u4 state: up speed: 1000 Mbps duplex: full mac: <filter> 
Bluetooth: Device-1: Intel Centrino Bluetooth Wireless Transceiver type: USB driver: btusb v: 0.8 bus-ID: 2-1.5:3 
           chip-ID: 8087:07da class-ID: e001 
           Report: This feature requires one of these tools: hciconfig/bt-adapter 
Drives:    Local Storage: total: 931.51 GiB used: 313.34 GiB (33.6%) 
           SMART Message: Required tool smartctl not installed. Check --recommends 
           ID-1: /dev/sda maj-min: 8:0 vendor: Crucial model: CT1000BX500SSD1 size: 931.51 GiB block-size: physical: 512 B 
           logical: 512 B speed: 6.0 Gb/s rotation: SSD serial: <filter> rev: 030 scheme: MBR 
Partition: ID-1: / raw-size: 922.71 GiB size: 907.23 GiB (98.32%) used: 313.28 GiB (34.5%) fs: ext4 dev: /dev/dm-0 
           maj-min: 254:0 mapped: luks-4110f216-65f4-48f0-8bbe-81a930fc1c74 
Swap:      Kernel: swappiness: 60 (default) cache-pressure: 100 (default) 
           ID-1: swap-1 type: partition size: 8.8 GiB used: 58 MiB (0.6%) priority: -2 dev: /dev/dm-1 maj-min: 254:1 
           mapped: luks-c6d6abb3-a33a-4e43-b48c-c6131a7cb028 
Sensors:   System Temperatures: cpu: 55.0 C mobo: 44.0 C sodimm: SODIMM C 
           Fan Speeds (RPM): cpu: 2591 
Info:      Processes: 258 Uptime: 2d 31m wakeups: 354 Memory: 7.64 GiB used: 4.31 GiB (56.4%) Init: systemd v: 247 
           tool: systemctl Compilers: gcc: 10.2.0 Packages: 1362 pacman: 1357 lib: 345 flatpak: 5 Shell: Bash v: 5.1.0 
           running-in: lxterminal inxi: 3.3.03 

Just keep using that -git version, until (if) that gets merged into the stable repo/package.

The version of picom currently in all Manjaro branches is 8.2-1. This version doesn’t support this blur algorithm according to picom's developer:

Version 9 (currently in the next branch in GitHub) has this blur method built-in, that’s why you get it when building the package from GitHub.

Ah, I understand. Thanks guys :slight_smile:

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.