hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
19.43k stars 814 forks source link

though 'nofocus' still bring cursor to the workspace #5618

Open vincentaxhe opened 4 months ago

vincentaxhe commented 4 months ago

Hyprland Version

System/Version info ```sh Hyprland, built from branch HEAD at commit 1c460e98f870676b15871fe4e5bfeb1a32a3d6d8 (props: bump ver to 0.36.0). Date: Wed Feb 28 00:32:40 2024 Tag: v0.36.0 flags: (if any) System Information: System name: Linux Node name: vincent-laptop Release: 6.6.25-1-MANJARO Version: #1 SMP PREEMPT_DYNAMIC Thu Apr 4 20:32:38 UTC 2024 GPU information: 0000:00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01) (prog-if 00 [VGA controller]) os-release: NAME="Manjaro Linux" PRETTY_NAME="Manjaro Linux" ID=manjaro ID_LIKE=arch BUILD_ID=rolling ANSI_COLOR="32;1;24;144;200" HOME_URL="https://manjaro.org/" DOCUMENTATION_URL="https://wiki.manjaro.org/" SUPPORT_URL="https://forum.manjaro.org/" BUG_REPORT_URL="https://docs.manjaro.org/reporting-bugs/" PRIVACY_POLICY_URL="https://manjaro.org/privacy-policy/" LOGO=manjarolinux VERSION=rolling plugins: ```

Bug or Regression?

Bug

Description

follow_mouse = 0
windowrule = pin, deadd-notification-center
windowrule = monitor 1, deadd-notification-center
windowrule = move 2000 100, deadd-notification-center
windowrule = nofocus, deadd-notification-center

deadd-notification will only show in monitor 1 and nofocus, when on monitor 1 works fine, but when on monitor 0, deadd-notification show still bring focus to monitor 1 to some window.

How to reproduce

try above

Crash reports, logs, images, videos

No response

vaxerski commented 4 months ago

is deadd an xwayland app?

vincentaxhe commented 4 months ago

no, 'xwayland 0'. It's a notification app written by python, mainly could replace process which xfce4-notify would not do.

vaxerski commented 4 months ago

why is it opening a window then and not a layersurface?

vincentaxhe commented 4 months ago

It did use window instead of wlr-layer-shell,it can add some buttons on the notification, so It needs some rules on it.But since it's nofocused , but still noticed and trigger focus switch. I can see why Hyprland is doing it ,nofocused window can still switch focus on it because it's still a member of windows, In this case I want it be completely ignored.

vincentaxhe commented 4 months ago

is it need 'slient'? just try windowrule = move 2000 100 silent, deadd-notification-center,but did not fix

vaxerski commented 4 months ago

try noinitialfocus too

vincentaxhe commented 4 months ago

windowrule = noinitialfocus, deadd-notification-center It did not help, still bring focus to workspace where notification show

vaxerski commented 4 months ago

what's the hyprctl clients output of the properties of the window in question?

vincentaxhe commented 4 months ago
Window 562651e81930 -> deadd-notification-center:
    mapped: 1
    hidden: 0
    at: 3536,100
    size: 500,130
    workspace: 2 (2)
    floating: 1
    monitor: 1
    class: deadd-notification-center
    title: deadd-notification-center
    initialClass: deadd-notification-center
    initialTitle: deadd-notification-center
    pid: 4332
    xwayland: 0
    pinned: 1
    fullscreen: 0
    fullscreenmode: 0
    fakefullscreen: 0
    grouped: 0
    swallowing: 0
    focusHistoryID: 6

I try windowrule = monitor 1 silent, deadd-notification-center again, It works as expect ,did not move focus,but windowrule = move 2000 100, deadd-notification-center is not applicable, It is based on monitor 0,need to add more than 1000 to width to move to the same spot on monitor 1, but when on monitor 1, it's too much ,out range of screen. Though notification show did not switch focus by use 'monitor 1 silent', but make mpv on monitor 0 quit fullscreen to tile.here is my mpv settings.

workspace= 1, monitor:eDP-1, persistent:true, default:true
workspace= 2, monitor:HDMI-A-1, persistent:true, default:true
windowrulev2 = fullscreen, workspace:1
windowrule = workspace 1, mpv
windowrule = fullscreen, mpv
windowrulev2 = suppressevent maximize, class: mpv
windowrule = opaque, mpv
windowrule = noborder, mpv
windowrule = keepaspectratio, mpv
windowrule = dimaround, mpv
windowrule = idleinhibit fullscreen, mpv