yshui / picom

A lightweight compositor for X11 with animation support
https://picom.app/
Other
4.14k stars 588 forks source link

unredir-if-possible option does not function #1018

Open NextRank opened 1 year ago

NextRank commented 1 year ago

Platform

Arch Linux - amd64

GPU, drivers, and screen setup

output of "glxinfo -B": ``` name of display: :0 display: :0 screen: 0 direct rendering: Yes Memory info (GL_NVX_gpu_memory_info): Dedicated video memory: 4096 MB Total available memory: 4096 MB Currently available dedicated video memory: 3411 MB OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: NVIDIA GeForce GTX 960/PCIe/SSE2 OpenGL core profile version string: 4.6.0 NVIDIA 525.85.05 OpenGL core profile shading language version string: 4.60 NVIDIA OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL version string: 4.6.0 NVIDIA 525.85.05 OpenGL shading language version string: 4.60 NVIDIAname of display: :0 display: :0 screen: 0 direct rendering: Yes Memory info (GL_NVX_gpu_memory_info): Dedicated video memory: 4096 MB Total available memory: 4096 MB Currently available dedicated video memory: 3411 MB OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: NVIDIA GeForce GTX 960/PCIe/SSE2 OpenGL core profile version string: 4.6.0 NVIDIA 525.85.05 OpenGL core profile shading language version string: 4.60 NVIDIA OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL version string: 4.6.0 NVIDIA 525.85.05 OpenGL shading language version string: 4.60 NVIDIA OpenGL context flags: (none) OpenGL profile mask: (none) OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 525.85.05 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 OpenGL context flags: (none) OpenGL profile mask: (none) OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 525.85.05 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 ```

Environment

Using i3-gaps and polybar, LightDM for session manager

Picom Info

Diagnostics **Version:** vgit-b700a ` - aka v10.2` ### Extensions: * Shape: Yes * XRandR: Yes * Present: Present ### Misc: * Use Overlay: Yes * Config file used: /home/morpheus/.config/picom/picom.conf ### Drivers (inaccurate): NVIDIA ### Backend: glx * Driver vendors: * GLX: NVIDIA Corporation * GL: NVIDIA Corporation * GL renderer: NVIDIA GeForce GTX 960/PCIe/SSE2 ### Backend: egl * Driver vendors: * EGL: NVIDIA * GL: NVIDIA Corporation * GL renderer: NVIDIA GeForce GTX 960/PCIe/SSE2

Configuration:

Configuration file ``` backend = "glx"; glx-no-stencil = true; glx-copy-from-front = false; glx-no-rebind-pixmap = true; unredir-if-possible = true; unredir-if-possible-exclude = [ "class_g = 'looking-glass-client' && !focused", "_NET_WM_BYPASS_COMPOSITOR@:c = 2", "_NET_WM_BYPASS_COMPOSITOR@:c = 1" ] unredir-if-possible-delay = 1000 shadow-ignore-shaped = false; vsync = false #refresh-rate = 0 inactive-opacity = 1; active-opacity = 1; frame-opacity = 1; inactive-opacity-override = false; blur-background = true; blur-kern = "5x5box"; transparent-clipping = false detect-transient = true; detect-client-leader = true; blur: { # method = "kern"; # strength = 6; # background = true; # background-frame = true; # background-fixed = true; } opacity-rule = [ "85:class_g = 'URxvt' && focused", "75:class_g = 'URxvt' && !focused", "100:_NET_WM_STATE@[0]:32a = '_NET_WM_STATE_FULLSCREEN'", "100:_NET_WM_STATE@[1]:32a = '_NET_WM_STATE_FULLSCREEN'", "100:_NET_WM_STATE@[2]:32a = '_NET_WM_STATE_FULLSCREEN'", "100:_NET_WM_STATE@[3]:32a = '_NET_WM_STATE_FULLSCREEN'", "100:_NET_WM_STATE@[4]:32a = '_NET_WM_STATE_FULLSCREEN'", "0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'", "0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'", "0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'", "0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'", "0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'", "100:class_g = 'firefox' && focused", "80:class_g = 'firefox' && !focused", "100:class_g = 'Rofi'" ]; blur-background-exclude = [ "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", "_GTK_FRAME_EXTENTS@:c", "class_g = 'i3-frame'", "class_g = 'eww-example'" ]; mark-wmwin-focused = true; mark-ovredir-focused = true; fading = true; fade-delta = 4; #corner-radius = 0; shadow = true; shadow-offset-x = -18; shadow-offset-y = -18; xrender-sync-fence = true; #detect-rounded-corners = true; detect-client-opacity = true; clip-shadow-above = [ "_NET_WM_WINDOW_TYPE@:a *= 'DOCK'", "class_g = 'polybar'" ] wintypes : { dock : { clip-shadow-above = true; #corner-radius = 10; }; tooltip: { fade = true; shadow = false; opacity = 1; focus = true; #corner-radius = 8; }; menu : { opacity = 1 } }; shadow-exclude-reg = "1900x27+10+10"; shadow-exclude = [ "class_g = 'i3-frame'" ]; rounded-corners-exclude = [ "class_g = 'i3bar'", "class_g = 'i3-frame'" ]; ```

Steps of reproduction

  1. Add unredir-if-possible = true; to the config.
  2. Fullscreen a program such as urxvt

Expected behavior

Compositing for urxvt should stop, as should compositing for other programs

Current Behavior

URxvt still displays a non-transparent background. Everything else functions fine except for unredirect.

I have searched hours for a solution, and nothing was able to fix this. I can provide more info if needed.

tryone144 commented 1 year ago

Do you have by any chance more than one monitor attached to your system?

absolutelynothelix commented 1 year ago

URxvt still displays a non-transparent background.

to make unredirection possible a fullscreen window has to be opaque.

NextRank commented 1 year ago

Do you have by any chance more than one monitor attached to your system?

I only have one 1920 x 1080 monitor

NextRank commented 1 year ago

URxvt still displays a non-transparent background.

to make unredirection possible a fullscreen window has to be opaque.

They are opaque though... I have it set so that it becomes opaque when I fullscreen a window. For example, URxvt is transparent unless fullscreen. If I fullscreen a window then compositing should stop for all other windows right? Currently, if I were to fullscreen URxvt and then open a new instance in another desktop view, the new instance still receives compositing.

absolutelynothelix commented 1 year ago

@NextRank, a window has to be opaque by itself, i.e. have 24-bit depth.