Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Property override_redirect = true matches all windows irrespective of state #625

Closed
ffs97 opened this issue May 4, 2021 · 4 comments
Closed
Labels
feature Feature request

Comments

@ffs97
Copy link

ffs97 commented May 4, 2021

Platform

Arch Linux x86_64

GPU, drivers, and screen setup

NVIDIA GeForce GTX 1660 Ti Mobile, nvidia-drivers 465.27, single monitor setup with xrandr
Using video drivers - xf86-video-intel-1:2.99.917+916+g31486f40-1, mesa-21.0.3-2

glxinfo -B

name of display: :0
display: :0  screen: 0
direct rendering: Yes
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 6144 MB
    Total available memory: 6144 MB
    Currently available dedicated video memory: 4973 MB
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce GTX 1660 Ti/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 465.27
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 465.27
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 465.27
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Environment

Awesome WM

picom version

**Version:** vgit-9cb55

### Extensions:

* Shape: Yes
* XRandR: Yes
* Present: Present

### Misc:

* Use Overlay: No
  (Another compositor is already running)
* Config file used: None

### Drivers (inaccurate):

NVIDIA, modesetting

### Backend: glx

* Driver vendors:
 * GLX: NVIDIA Corporation
 * GL: NVIDIA Corporation
* GL renderer: NVIDIA GeForce GTX 1660 Ti/PCIe/SSE2

Configuration:

#
#  ███████████████████████████████████████████████████████████████████████████████████
#                                              ░██                                     
#   █████   ███████   █████    █████   █████   ░██  ██     ██  ███████   ████   █████ 
#  ░░░░░██ ░░███░░█  ███░░██  ███░░██ ░░░░░██  ░██  ███    ██ ░░███░░█ ░███░   ███░░██
#   ██████  ░███ ░█ ░███ ░██ ░███ ░░   ██████  ░██ ░░███  ██   ░███ ░█  ░███  ░██████ 
#  ███░░██  ░██████ ░███ ░██ ░███  ██ ███░░██  ░██  ░░█████    ░██████  ░░░██ ░███░░  
#  ░███████ ░███░░  ░░█████  ░░█████  ░███████ ████  ░░░██     ░███░░   ████  ░░██████
#  ░░░░░░░  ░██      ░░░░░    ░░░░░   ░░░░░░░ ░░░░   █  ██     ░██     ░░░░    ░░░░░░ 
#           ████                                    ░ ███      ████    
#          ░░░░                                      ░░░      ░░░░     
#
# ======================================================================================
#   Name:       apocalyspe
#   Author:     Gurpreet Singh
#   Url:        https://github.com/ffs97/dotfiles/picom/apocalyspe.config
#   License:    The MIT License (MIT)
#
#   A picom configuration file for apocalyspe colorscheme
# ======================================================================================

# --------------------------------------------------------------------------------------
# Backend

backend = "glx";

glx-no-stencil = true;
glx-copy-from-front = false;
glx-swap-method = -1;
glx-no-rebind-pixmap = true;
xrender-sync-fence = true;
use-damage = false;

# --------------------------------------------------------------------------------------
# Shadows

shadow = true;
shadow-radius = 12;
shadow-offset-x = -15;
shadow-offset-y = -15;
shadow-opacity = 0.65;

shadow-exclude = [
    "! name~=''",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'GLava'",
    "name = 'xfce4-notifyd'",
    "name *= 'VLC'",
    "name *= 'compton'",
    "name = 'zoom_linux_float_message_reminder'",
    "class_g = 'bubble'",
	"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'",
    "_GTK_FRAME_EXTENTS@:c",
    "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
    "class_g = 'awesome'",
];
shadow-ignore-shaped = true;

# --------------------------------------------------------------------------------------
# Opacity

inactive-opacity = 0.75;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;

opacity-rule = [
    "85:class_g = 'kitty' && focused",
    "75:class_g = 'kitty' && !focused",
    "90:class_g = 'Zathura' && focused",
    "75:class_g = 'Zathura' && !focused",
    "85:class_g = 'Gvim'",
    "75:class_g = 'Gvim' && !focused",
    "90:class_g = 'Rofi'",
    # "85:name *= 'Jupyter Notebook' && focused",
    # "75:name *= 'Jupyter Notebook' && !focused",
    # "99:class_g = 'zoom' && override_redirect = true",
    "99:class_g = 'Gimp-2.10'",
    "99:class_g = 'awesome'"
]

# --------------------------------------------------------------------------------------
# Blur

blur-background = true;
blur-method = "dual_kawase";
blur-strength = 10;
blur-background-fixed = false;
blur-background-frame = true;
blur-background-exclude = [
    # "class_g = 'zoom'",
    "window_type = 'dock'",
    # "override_redirect = true"
];

# --------------------------------------------------------------------------------------
# Fading

fading = false;
fade-delta = 1;
fade-in-step = 0.03;
fade-out-step = 0.03;
no-fading-openclose = false;

fade-exclude = [ ];

# --------------------------------------------------------------------------------------
# Miscellaneous

mark-wmwin-focused = false;
mark-ovredir-focused = false;
use-ewmh-active-win = false;
detect-rounded-corners = true;

detect-client-opacity = true;

refresh-rate = 0;

vsync = false;

dbe = false;

unredir-if-possible = true;

focus-exclude = [
    "class_g = 'Rofi'",
    "override_redirect = true"
];

detect-transient = true;
detect-client-leader = true;

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

wintypes:
{
    tooltip =
    {
        shadow = false;
        opacity = false;
        focus = true;
        blur_background = false;
    };
    dock =
    {
        shadow = false;
    };
    dnd =
    {
        shadow = false;
    };
    popup_menu =
    {
        opacity = false;
        shadow = false;
        blur_background = false;
    };
    dropdown_menu =
    {
        opacity = false;
        shadow = false;
        blur_background = false;
    };
};

Steps of reproduction

  1. Start a window gravitating to some corner with override redirect set with transparent background
  2. Add override_redirect = true to background-blur-exclude

Note: I did this using zoom. All I did was start a zoom meeting and it shows a reminder on the corner. This window has the override redirect property set. Also, it has rounded corners along with a transparent border.

Expected behavior

Adding override_redirect = true to background-blur-exclude property should remove blur from such windows and the behaviour for remaining windows should be the same.

Current Behavior

This removes background blur from all windows (irrespective of override redirect state)

EDIT: I tried this with exclude-shadow as well. Seems like it is not being detected after all. tryone144's comment makes sense.

Other details

vokoscreenNG-2021-05-04_14-36-58

@ffs97 ffs97 changed the title Cannot disable background-blur (kawase) for windows with override redirect state Adding override_redirect = true to background-blur-exclude (dual-kawase) removes blur from all windows May 4, 2021
@tryone144
Copy link
Collaborator

If I am not mistaken, override_redirect by itself will match against the parent window (i.e. the awesome frames) which most likely have the Override Redirect State set.
It seems there is currently no support to match against the Override Redirect State in the client windows.

@ffs97
Copy link
Author

ffs97 commented May 5, 2021

@tryone144 Thanks so much for your reply. I see, that's a bummer. Do you see anyway that this could be implemented in the future? A lot of functionality in zoom somewhat depends on this (such as annotations while screensharing) and it's annoying to remove background blur from all zoom windows. Alternatively, would there be a way to toggle this when I have to screenshare?

Also, Is this documented somewhere? I did not see anything in the manpages regarding this.

P.S. Thanks so much for your contributions, especially the kawase blur haha

@ffs97 ffs97 changed the title Adding override_redirect = true to background-blur-exclude (dual-kawase) removes blur from all windows Property override_redirect = true matches all windows irrespective of state May 5, 2021
@yshui yshui added the feature Feature request label Jun 4, 2021
@yshui
Copy link
Owner

yshui commented May 16, 2024

I can make override_redirect only match top-level windows that do not have a client window. I don't know if someone actually relies on the current behavior, I guess we'll find out if we get complaints.

yshui added a commit that referenced this issue May 16, 2024
Fixes #625

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
@yshui yshui closed this as completed in 97c14ee May 16, 2024
@yshui
Copy link
Owner

yshui commented May 16, 2024

Fixed in next, since this is a breaking change, it won't be backported into v11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Feature request
Projects
None yet
Development

No branches or pull requests

3 participants