hyprwm / Hyprland

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

windowrule move onscreen cursor results in crash, repeatedly applies window rule #6670

Open uwidev opened 3 days ago

uwidev commented 3 days ago

Regression?

No?

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit e4d09aa3a9de9a9e71c10bf4b6800585b3db9a4c (sessionLock: focus lock on creation based on mouse position (6658)). Date: Tue Jun 25 14:22:38 2024 Tag: v0.41.2-5-ge4d09aa3a, commits: 4891 flags: (if any) System Information: System name: Linux Node name: Timmy-PC Release: 6.9.6-zen1-1-zen Version: #1 ZEN SMP PREEMPT_DYNAMIC Fri, 21 Jun 2024 19:48:59 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD106 [GeForce RTX 4060 Ti 16GB] [10de:2805] (rev a1) (prog-if 00 [VGA controller]) os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/Timmy/.config/hypr/hyprland.conf: Read Succeeded ################ ############################# ### ENVIRONMENT VARIABLES ### ############################# source=~/.config/hypr/env.conf ### MONITORS ### ################ # HIDPI, but scaler < 1 results in graphical issues # Wayland, please fix #monitor=DP-3,2560x1440@144,auto,1 #monitor=HDMI-A-1,1920x1080,0x-1120,0.75,transform,1 #monitor=HDMI-A-1,addreserved,1120,0,0,0 # Intead of scaling up, scale down 1440p to 1080p # At least there isn't graphical glitches monitor=DP-3,2560x1440@144,0x0,1.3333,bitdepth,10 monitor=HDMI-A-1,1920x1080,-1080x-840,1,transform,1,bitdepth,10 monitor=HDMI-A-1,addreserved,840,0,0,0 #monitor=HDMI-A-1,modeline 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vync,-1440x-1120,1 #monitor=HDMI-A-1,modeline 241.5 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync,-1440x-1120,1 #monitor=HDMI-A-1,modeline 234.59 2560 2568 2600 2640 1440 1467 1475 1481 +hsync -vsync,-1440x-1120,1 #monitor=HDMI-A-1,modeline 229.046 2560 2568 2600 2640 1440 1467 1475 1481 +hsync -vsync,-1440x-1120,1 #monitor=HDMI-A-1,,-1440x-1120,1,transform,1,bitdepth,10 #monitor=HDMI-A-1,,-1440x-1120,1,transform,1,bitdepth,10 #monitor=HDMI-A-1,2560x1440,-1440x-1120,1,transform,1,bitdepth,10 # IF YOU CHANGE THE ADDRESERVED OFFSET, MAKE SURE YOU CHANGE THE BIND FOR # MOVING A WINDOW TO RESERVED AREA ################### ### MY PROGRAMS ### ################### $terminal = foot $fileManager = pcmanfm-qt $menu = rofi -show run $emoji = rofimoji $browser = floorp ################# ### AUTOSTART ### ################# source=~/.config/hypr/startup.conf ####### XDG-related ########## #env = XDG_CURRENT_DESKTOP,hyprland #env = XDG_SESSION_TYPE,wayland #env = XDG_SESSION_DESKTOP,Hyprland # ########## Nvidia ############ #env = LIBVA_DRIVER_NAME,nvidia #env = GBM_BACKEND,nvidia-drm # REMOVE IF FIREFOX CRASHES #env = __GLX_VENDOR_LIBRARY_NAME,nvidia #env = NVD_BACKEND,direct # ######## All Theming ######### ## Cursor #env = HYPRCURSOR_THEME,Posy_Cursor_Black_h #env = HYPRCURSOR_SIZE,32 # ## XCursor fallback if app doesn't support server-side cursors #env = XCURSOR_PATH,~/.local/share/icons:/usr/share/icons #env = XCURSOR_THEME,Posy_Cursor_Black #env = XCURSOR_SIZE,32 # ## Qt Theming Variables #env = QT_QPA_PLATFORM,wayland;xcb #env = QT_QPA_PLATFORMTHEME,qt6ct #env = QT_STYLE_OVERRIDE,kvantum # #env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 # ##env = QT_AUTO_SCREEN_SCALE_FACTOR,1 ##env = QT_ENABLE_HIGHDPI_SCALING,1 # ## swww defaults #env = SWWW_TRANSITION,random #env = SWWW_TRANSITION_STEP,90 # ## Use hyprland notify ##env = HYPRLAND_NO_SD_NOTIFY,1 ## Use zprofile instead? # ########### Fixes ############ ## Fix gamma correction for Electron applications ## See https://wiki.archlinux.org/title/Font_configuration#Text_is_blurry #env = FREETYPE_PROPERTIES,cff:no-stem-darkening=0 autofitter:no-stem-darkening=0 # ## Force applications to use wayland #env = GDB_BACKEND,wayland,x11,* #env = SDL_VIDEODRIVER,wayland #env = CLUTTER_BACKEND,wayland ##################### ### LOOK AND FEEL ### ##################### source=~/.config/hypr/pywal.conf general { gaps_in = -2 gaps_out = 0 border_size = 4 col.active_border = $color9 $color10 $color11 $color12 $color13 $color14 $color15 col.inactive_border = rgba(00000000) resize_on_border = false allow_tearing = false layout = dwindle } decoration { rounding = 24 active_opacity = 0.95 inactive_opacity = 0.85 drop_shadow = false col.shadow = $color8 col.shadow_inactive = rgba(00000000) shadow_range = 12 shadow_render_power = 2 blur { enabled = true size = 3 passes = 1 # Turn on xray to reduce power usage xray = false vibrancy = 0.1696 } } animations { enabled = true # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.02 bezier = linear, 0.0, 0.0, 1.0, 1.0 animation = windows, 1, 4, myBezier animation = windowsOut, 1, 4, default, popin 80% animation = border, 1, 10, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default # Comment out to reduce power usage animation = borderangle, 1, 300, linear, loop } dwindle { pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # You probably want this #default_split_ratio = 0.878 } misc { force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( splash_font_family = syne } cursor { no_warps = true # warp_on_change_workspace = false # enable_hyprcursor = false } ############# ### INPUT ### ############# input { kb_layout = us kb_variant = kb_model = pc105+inet kb_options = terminate:ctrl_alt_bksp kb_rules = repeat_rate = 35 repeat_delay = 300 follow_mouse = 1 mouse_refocus = false accel_profile = flat sensitivity = 0 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = false scroll_factor = 0.2 # tap-to-click = false # drag_lock = true disable_while_typing = true } } gestures { workspace_swipe = true workspace_swipe_invert = false } #################### ### KEYBINDINGSS ### #################### source=~/.config/hypr/binds.conf ############################## ### WINDOWS AND WORKSPACES ### ############################## # Never maximize applications windowrulev2 = suppressevent maximize, class:.* # Steam fix, might work? windowrulev2 = stayfocused, title:^()$, class:^(steam)$ # Image viewer windowrulev2 = float, class:^(org\.nomacs\.ImageLounge)$ windowrulev2 = opaque, class:^(org\.nomacs\.ImageLounge)$ windowrulev2 = move onscreen cursor -50% -50%, class:^(org\.nomacs\.ImageLounge)$ # Terminal windowrulev2 = float, class:^($terminal|Alacritty|kitty|org.wezfurlong.wezterm|foot)$ windowrulev2 = move onscreen cursor -50% -50%, class:^($terminal|Alacritty|kitty|org.wezfurlong.wezterm|foot)$ # KeepassXC windowrulev2 = float, class:^(org.keepassxc.KeePassXC)$ windowrulev2 = center, class:^(org.keepassxc.KeePassXC)$ # ags debug windowrulev2 = float, class: ^(com.github.Aylur.ags)$ windowrulev2 = center, class: ^(com.github.Aylur.ags)$ # Apply to all windows unless further matched by rules below # windowrulev2 = suppressevent maximize, class:^(.*)$ # windowrulev2 = minsize 1 1, class:^(.*)$ # windowrulev2 = move onscreen cursor -50% -50%, class:^(.*)$ # applies if floating ############# ### FIXES ### ############# debug { disable_logs = false } # Fix for non-native wayland xorg app scaling # See https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland # unscale xWayland #xwayland { # force_zero_scaling = true #} # toolkit-specific scale # may not be needed if scaling up existing monitors env = GDK_SCALE,1 env = GDK_DPI_SCALE,1 env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_ENABLE_HIGHDPI_SCALING,1 Config File: /home/Timmy/.config/hypr/env.conf: Read Succeeded # Environmental variables that need to be set upon starting a DE (Hyprland) # # This should not include variables that do not depend on a DE running. This # means that modifications to PATH should not exist here, and should be instead # placed under .zprofile. # XDG Specifications env = XDG_CURRENT_DESKTOP,hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland # Themeing # Cursor env = HYPRCURSOR_THEME,Posy_Cursor_Black_h env = HYPRCURSOR_SIZE,32 # XCursor fallback if app doesn't support server-side cursors env = XCURSOR_PATH,~/.local/share/icons:/usr/share/icons env = XCURSOR_THEME,Posy_Cursor_Black env = XCURSOR_SIZE,32 # Qt Theming Variables env = QT_QPA_PLATFORM,wayland;xcb env = QT_QPA_PLATFORMTHEME,qt6ct:qt5ct env = QT_STYLE_OVERRIDE,kvantum env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 #env = QT_AUTO_SCREEN_SCALE_FACTOR,1 #env = QT_ENABLE_HIGHDPI_SCALING,1 # swww defaults env = SWWW_TRANSITION,random env = SWWW_TRANSITION_STEP,90 Config File: /home/Timmy/.config/hypr/startup.conf: Read Succeeded # Applications to startup on boot # System configurations through third party tools # For screen sharing # See https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580#editing-the-configuration-file exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = xrandr --output DP-3 --primary # Make graphical applications treat DP-3 as primary monitor # Utilities exec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1 # Allows GUI apps to ask for elevated permissions exec-once = hyprlock # Lock from autologin exec-once = wl-paste --type text --watch cliphist store # Clipboard "manager" exec-once = wl-paste --type image --watch cliphist store # Need both for text and images # Themeing exec-once = ~/.local/lib/mywal/theme-boot # DE setup exec-once = ags # one to rule them all... # exec-once = waybar # Bar exec-once = hypridle # Idle daemon # exec-once = mako # Notifications # Apps exec-once = vesktop --start-minimized exec-once = keepassxc # exec-once = foot --server Config File: /home/Timmy/.config/hypr/pywal.conf: Read Succeeded $foreground = rgb(c1c1c1) $color0 = rgb(0a0907) $color1 = rgb(7f4f3c) $color2 = rgb(5b6253) $color3 = rgb(8e7856) $color4 = rgb(a1764d) $color5 = rgb(7e5170) $color6 = rgb(8c7d7c) $color7 = rgb(848483) $color8 = rgb(474645) $color9 = rgb(AA6A51) $color10 = rgb(7A836F) $color11 = rgb(BEA073) $color12 = rgb(D79E67) $color13 = rgb(A96D96) $color14 = rgb(BBA7A6) $color15 = rgb(c1c1c1) Config File: /home/Timmy/.config/hypr/binds.conf: Read Succeeded #################### ### KEYBINDINGSS ### #################### $mainMod = SUPER # Sets "Windows" key as main modifier # Program Binds # See hyprland.conf for program definitions bind = $mainMod, q, exec, $terminal bind = $mainMod SHIFT, w, killactive bind = $mainMod SHIFT, M, exit, bind = $mainMod, e, exec, $fileManager bind = $mainMod, f, togglefloating, bind = ALT, space, exec, $menu #bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, p, exec, $browser bind = $mainMod, period, exec, $emoji # Window Management bind = $mainMod, s, togglesplit, # dwindle bind = $mainMod, u, fullscreen, 2 bind = $mainMod SHIFT, U, fullscreen, 0 bind = $mainMod SHIFT CONTROL, U, fakefullscreen # Move focus with mainMod + arrow keys bind = $mainMod, h, movefocus, l bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u bind = $mainMod, j, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 bind = ALT, tab, workspace, e+1 bind = $mainMod, tab, workspace, e-1 # Moving of windows is $mainMod + SHIFT bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $mainMod SHIFT, j, movetoworkspace, +1 bind = $mainMod SHIFT, k, movetoworkspace, -1 bind = $mainMod SHIFT, l, movetoworkspace, e+1 bind = $mainMod SHIFT, h, movetoworkspace, e-1 # Swap, retains layout bind = $mainMod CONTROL, l, swapwindow, r bind = $mainMod CONTROL, h, swapwindow, l bind = $mainMod CONTROL, k, swapwindow, u bind = $mainMod CONTROL, j, swapwindow, d # Move, destructive to layout, will autotile/autoresize # also merges and leaves groups bind = $mainMod SHIFT CONTROL, l, movewindoworgroup, r bind = $mainMod SHIFT CONTROL, h, movewindoworgroup, l bind = $mainMod SHIFT CONTROL, k, movewindoworgroup, u bind = $mainMod SHIFT CONTROL, j, movewindoworgroup, d # Resize $RESIZE_AMOUNT = 16 binde = $mainMod ALT, h, resizeactive, -$RESIZE_AMOUNT 0 binde = $mainMod ALT, l, resizeactive, $RESIZE_AMOUNT 0 binde = $mainMod ALT, k, resizeactive, 0 -$RESIZE_AMOUNT binde = $mainMod ALT, j, resizeactive, 0 $RESIZE_AMOUNT # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Desktop secondary monitor, move to reserved area bind = $mainMod SHIFT, F, setfloating, bind = $mainMod SHIFT, F, movewindow, mon:HDMI-A-1 bind = $mainMod SHIFT, F, moveactive, exact -1076 -804 bind = $mainMod SHIFT, F, resizeactive, exact 1072 836 # For historical 1440p monitor setup, see monitors section #bind = $mainMod SHIFT, F, moveactive, exact 4 -1092 #bind = $mainMod SHIFT, F, resizeactive, exact 1432 1112 # Force opaque on active bind = $mainMod, O, toggleopaque # Grouping bind = $mainMod, g, togglegroup bind = $mainMod SHIFT, g, lockactivegroup, toggle bind = $mainMod SHIFT, next, movegroupwindow, bind = $mainMod SHIFT, prior, movegroupwindow, b bind = $mainMod, next, changegroupactive, bind = $mainMod, prior, changegroupactive, b # Idle and lock bind = $mainMod CONTROL ALT, L, exec, hyprlock # Monitor Brightness binde = , XF86MonBrightnessUp, exec, ~/.config/hypr/scripts/backlight --inc binde = , XF86MonBrightnessDown, exec, ~/.config/hypr/scripts/backlight --dec # Volume and Media Control #bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 #bind = , XF86AudioLowerVolume, exec, pamixer -d 5 #bind = , XF86AudioMicMute, exec, pamixer --default-source -t #bind = , XF86AudioMute, exec, pamixer -t bind = , XF86AudioRaiseVolume, exec, ~/.config/hypr/scripts/volume --inc bind = , XF86AudioLowerVolume, exec, ~/.config/hypr/scripts/volume --dec bind = , XF86AudioMicMute, exec, ~/.config/hypr/scripts/volume --toggle-mic bind = , XF86AudioMute, exec, ~/.config/hypr/scripts/volume --toggle bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioPause, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous # Clipboard with rofi #bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy bind = $mainMod, V, exec, rofi -modi clipboard:~/.local/lib/cliphist/cliphist-rofi-img -show clipboard -show-icons # Screenshotting with Hyprshot bind = $mainMod CONTROL, backslash, exec, hyprshot -m window bind = $mainMod CONTROL SHIFT, backslash, exec, hyprshot -m output bind = $mainMod, backslash, exec, hyprshot -m region ======Config-End======== ```

Description

Some applications (just nomacs image viewer in my case) seem to crash Hyprland when setting the onscreen option and starting the application.

This could the a problem with my configuration, but as far as I'm aware, to apply multiple rules to a single application, you use multiple windowrule lines applied to the same application.

It was actually working fine in the past, but suddenly stopped working (I believe after a Hyprland crash?). Ever since then it has not worked. I don't believe it was due to a system or Hyprland update on my end, but I could very much be wrong.

And well, reading the hyprland crash log tails, it seems like it's in some infinite loop on constantly applying window rules to nomacs for some reason, almost as if it's re-setting itself when the rules apply, and then because it's a new class, it checks for the windowrules again, and loops, and then crashes.

How to reproduce

  1. Install nomacs or nomacs-qt6-git. I have tested that both of these crash.
  2. windowrulev2 = move onscreen cursor -50% -50%, class:^(org\.nomacs\.ImageLounge)$ for nomacs-qt6-git. May be under a different class for the non-qt6-git version.
  3. Start nomacs.
  4. Crash.

Crash reports, logs, images, videos

hypr.log journal.log