Summary
Inactive windows periodically (roughly once per second) develop a strong, full-window blur/smear effect that builds up over ~1 second and then snaps instantly back to a sharp render. This happens with blur-background = false in the config.
Reproduces on both backend = "glx" (new/default backend) and backend = "egl".
I tried switching to --legacy-backends with glx or xr_glx_hybrid, but picom crashes within ~1 second with a flood of GLX_BAD_DRAWABLE X errors instead.
If I select backend = "xrender", then the issue disappears with the same config.
Environment
- picom version:
v12.5 (picom --version)
- GPU: NVIDIA RTX 3080
- NVIDIA driver version:
595.71.05
- OS: Ubuntu 26.04
- Display server: X11, session started via
gdm-x-session
- Window manager: xmonad, inside a GNOME session. GNOME/Mutter is not compositing, picom is the only active compositor.
Relevant picom.conf settings
backend = "glx"
vsync = false # also tested true, see below
use-damage = true # also tested false, no change
xrender-sync-fence = true
unredir-if-possible = true # also tested false, no change
blur-background = false
blur-background-frame = false
fading = false
corner-radius = 0
Shadows/fading/blur are all either disabled or visually inert in this config, and none of them affect the bug.
Steps to reproduce
- Run picom with
backend = "glx" (default new backend), config as above.
- Watch any inactive window for 10–20 seconds.
- Roughly once per second, the window's content develops a strong blur that peaks after about a second of buildup, then instantly reverts to a sharp, correct render.
- At the peak, text in the window is almost unreadable.
Expected behavior
With blur-background = false, inactive windows should render statically, with no blur or distortion at any point.
Things I've tried
- Confirmed only one compositor is running - picom.
- Confirmed
blur-background / blur-background-frame are false to rule out the blur engine itself as the cause.
- Tuned glx-specific options individually and in combination:
vsync = true, glx-no-stencil = true, glx-no-rebind-pixmap = true, unredir-if-possible = false, use-damage = false (no-use-damage = true). None changed the behavior.
- Switched to
backend = "egl". Same periodic corruption as glx.
- Switched to
backend = "xrender". Issue completely resolved, no artifacts.
- Ran with
--legacy-backends and backend = "glx". This crashes within ~1 second, console flooded with hundreds of repeats of:
[ 06/25/2026 16:57:19.993 x_handle_error WARN ] Stray X error: X error 160 GLX_BAD_DRAWABLE request 152 minor 11 serial 6629
- Ran with
--legacy-backends and backend = "x r_glx_hybrid" — same crash/error pattern as legacy glx.
- Tried
backend = "xr_glx_hybrid" without --legacy-backends — refuses to start:
[ 06/25/2026 16:38:18.669 sanitize_options ERROR ] Backend "xr_glx_hybrid" is only available as part of the legacy backends.
[ 06/25/2026 16:38:18.669 session_init FATAL ERROR ] Failed to get configuration, usually mean you have specified invalid options.
[ 06/25/2026 16:38:18.669 main FATAL ERROR ] Failed to create new session.
- Set
AllowFlipping=0 via nvidia-settings. No change to the glx-backend artifact.
- Set
ForceFullCompositionPipeline=On via nvidia-settings --assign CurrentMetaMode="DPY-7: 5120x2160 @5120x2160 +0+0 {ViewPortIn=5120x2160, ViewPortOut=5120x2160+0+0, ForceFullCompositionPipeline=On}". No change.
- Checked
journalctl -b | grep -i glx. NVIDIA's GLX module (libglxserver_nvidia.so, 595.71.05) loads normally.
Addition information
`picom --backend glx --diagnostics`
❯ picom --backend glx --diagnostics
[ 06/25/2026 17:31:54.228 c2_parse_target WARN ] Type specifier is deprecated. Type "c" specified on target "_GTK_FRAME_EXTENTS" will be ignored, you can remove it.
[ 06/25/2026 17:31:54.228 c2_parse_target WARN ] Type specifier is deprecated. Type "c" specified on target "_GTK_FRAME_EXTENTS" will be ignored, you can remove it.
**Version:** v12.5
### Extensions:
* Shape: Yes
* RandR: Yes
* Present: Present
### Misc:
* Use Overlay: No
* Config file specified: None
* Config file used: /home/illia/.config/picom.conf
### Drivers (inaccurate):
NVIDIA
### Backend: glx
* Driver vendors:
* GLX: NVIDIA Corporation
* GL: NVIDIA Corporation
* GL renderer: NVIDIA GeForce RTX 3080/PCIe/SSE2
[ 06/25/2026 17:31:54.510 egl_init WARN ] The egl backend is still experimental, use with care.
### Backend: egl
* Driver vendors:
* EGL: NVIDIA
* GL: NVIDIA Corporation
* GL renderer: NVIDIA GeForce RTX 3080/PCIe/SSE2
glxinfo output: https://pastebin.com/iU2Bterg
Summary
Inactive windows periodically (roughly once per second) develop a strong, full-window blur/smear effect that builds up over ~1 second and then snaps instantly back to a sharp render. This happens with
blur-background = falsein the config.Reproduces on both
backend = "glx"(new/default backend) andbackend = "egl".I tried switching to
--legacy-backendswithglxorxr_glx_hybrid, but picom crashes within ~1 second with a flood ofGLX_BAD_DRAWABLEX errors instead.If I select
backend = "xrender", then the issue disappears with the same config.Environment
v12.5(picom --version)595.71.05gdm-x-sessionRelevant picom.conf settings
Shadows/fading/blur are all either disabled or visually inert in this config, and none of them affect the bug.
Steps to reproduce
backend = "glx"(default new backend), config as above.Expected behavior
With
blur-background = false, inactive windows should render statically, with no blur or distortion at any point.Things I've tried
blur-background/blur-background-framearefalseto rule out the blur engine itself as the cause.vsync = true,glx-no-stencil = true,glx-no-rebind-pixmap = true,unredir-if-possible = false,use-damage = false(no-use-damage = true). None changed the behavior.backend = "egl". Same periodic corruption as glx.backend = "xrender". Issue completely resolved, no artifacts.--legacy-backendsandbackend = "glx". This crashes within ~1 second, console flooded with hundreds of repeats of:--legacy-backendsandbackend = "x r_glx_hybrid"— same crash/error pattern as legacy glx.backend = "xr_glx_hybrid"without--legacy-backends— refuses to start:AllowFlipping=0vianvidia-settings. No change to the glx-backend artifact.ForceFullCompositionPipeline=Onvianvidia-settings --assign CurrentMetaMode="DPY-7: 5120x2160 @5120x2160 +0+0 {ViewPortIn=5120x2160, ViewPortOut=5120x2160+0+0, ForceFullCompositionPipeline=On}". No change.journalctl -b | grep -i glx. NVIDIA's GLX module (libglxserver_nvidia.so, 595.71.05) loads normally.Addition information
`picom --backend glx --diagnostics`
glxinfooutput: https://pastebin.com/iU2Bterg