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.55k stars 821 forks source link

crash when changing hyprpaper wallpaper after screen lock #7097

Closed winneratwin closed 1 month ago

winneratwin commented 1 month ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit a9d87bd6669568741704de08b6f0328a92e29396 (surface: emit unmap before unmapping and releasing the buffers). Date: Sun Jul 28 23:56:35 2024 Tag: v0.41.2-123-ga9d87bd6, commits: 5009 flags: (if any) System Information: System name: Linux Node name: pog-os Release: 6.10.2-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Sat, 27 Jul 2024 16:49:55 +0000 GPU information: 2b:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3060 Ti Lite Hash Rate] [10de:2489] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 555.58.02 Release Build (archlinux-builder@pog-os) 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/winner/.config/hypr/hyprland.conf: Read Succeeded # This is an example Hyprland config file. # # Refer to the wiki for more information. # nvidia env vars env = LIBVA_DRIVER_NAME,nvidia env = XDG_SESSION_TYPE,wayland env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = NVD_BACKEND,direct # env = HYPRLAND_TRACE,1 # env = AQ_TRACE,1 # # Please note not all available settings / options are set here. # For a full list, see the wiki # # See https://wiki.hyprland.org/Configuring/Monitors/ #monitor=,preferred,auto,auto monitor=HDMI-A-1,prefered,0x390,1 monitor=DP-3,highrr,1680x0,1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch # exec-once = waybar & hyprpaper & firefox exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = hyprpaper # wallpaper exec-once = waybar # bar # exec-once = picom exec-once = plover # stenography exec-once = copyq # clipboard manager exec-once = ckb-next -b # corsair keyboard manager exec-once = nm-applet # network manager exec-once = opensnitch-ui # application firewall exec-once = dunst # notification daemon exec-once = blueman-applet # bluetooth manager exec-once = gammastep -l manual -l 57.070435:-2.134568 # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # Some default env vars. env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 15 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) resize_on_border = false allow_tearing = false # layout = hy3 # waiting until https://github.com/outfoxxed/hy3/pull/126 is merged (move focus crosses monitors) layout = dwindle } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 10 active_opacity = 1.0 # inactive_opacity = 1.0 inactive_opacity = 0.85 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } } animations { enabled = true # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 4, default animation = workspaces, 1, 6, default } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # you probably want this } misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more key_press_enables_dpms = true force_default_wallpaper = 2 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_status = true } ############# ### INPUT ### ############# input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = false } } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = false } experimental { # See https://wiki.hyprland.org/Configuring/Variables/ for more #explicit_sync = true } # equivalent to the above # experimental:explicit_sync = true debug { disable_logs = false } cursor { no_hardware_cursors = true allow_dumb_copy = true } # source = ~/.config/hypr/pluginsconf.conf plugin { hy3 { # disable gaps when only one window is onscreen # 0 - always show gaps # 1 - hide gaps with a single window onscreen # 2 - 1 but also show the window border no_gaps_when_only = 0 # default: 0 # policy controlling what happens when a node is removed from a group, # leaving only a group # 0 = remove the nested group # 1 = keep the nested group # 2 = keep the nested group only if its parent is a tab group node_collapse_policy = 2 # default: 2 # offset from group split direction when only one window is in a group group_inset = 10 # default: 10 # if a tab group will automatically be created for the first window spawned in a workspace tab_first_window = false # tab group settings tabs { # height of the tab bar height = 15 # default: 15 # padding between the tab bar and its focused node padding = 5 # default: 5 # the tab bar should animate in/out from the top instead of below the window from_top = false # default: false # rounding of tab bar corners rounding = 3 # default: 3 # render the window title on the bar render_text = true # default: true # center the window title text_center = false # default: false # font to render the window title with text_font = Sans # default: Sans # height of the window title text_height = 8 # default: 8 # left padding of the window title text_padding = 3 # default: 3 # active tab bar segment color col.active = 0xff32b4ff # default: 0xff32b4ff # urgent tab bar segment color col.urgent = 0xffff4f4f # default: 0xffff4f4f # inactive tab bar segment color col.inactive = 0x80808080 # default: 0x80808080 # active tab bar text color col.text.active = 0xff000000 # default: 0xff000000 # urgent tab bar text color col.text.urgent = 0xff000000 # default: 0xff000000 # inactive tab bar text color col.text.inactive = 0xff000000 # default: 0xff000000 } # autotiling settings autotile { # enable autotile enable = false # default: false # make autotile-created groups ephemeral ephemeral_groups = true # default: true # if a window would be squished smaller than this width, a vertical split will be created # -1 = never automatically split vertically # 0 = always automatically split vertically # = pixel height to split at trigger_width = 0 # default: 0 # if a window would be squished smaller than this height, a horizontal split will be created # -1 = never automatically split horizontally # 0 = always automatically split horizontally # = pixel height to split at trigger_height = 0 # default: 0 # a space or comma separated list of workspace ids where autotile should be enabled # it's possible to create an exception rule by prefixing the definition with "not:" # workspaces = 1,2 # autotiling will only be enabled on workspaces 1 and 2 # workspaces = not:1,2 # autotiling will be enabled on all workspaces except 1 and 2 workspaces = all # default: all } } } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more # device:epic-mouse-v1 { # sensitivity = -0.5 # } # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more # hyprland bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, E, exit, bind = $mainMod, T, togglefloating, bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # programs # terminal bind = $mainMod, RETURN, exec, alacritty # file manager bind = $mainMod, E, exec, thunar # rofi bind = $mainMod, D, exec, ./.config/rofi/scripts/launcher_t1 # clipboard manager bind = $mainMod, V, exec, copyq menu # lockscreen # bind = $mainMod, ESCAPE, exec, swaylock --image /home/winner/Pictures/backgrounds/D3pZLXx.png & sleep 0.5 && hyprctl dispatch dpms off bind = $mainMod, ESCAPE, exec, hyprlock & sleep 0.5 && hyprctl dispatch dpms off # open thunar using o bind = $mainMod, O, exec, thunar # screenshot save copy and open with gimp bind = $mainMod, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh # media keys # i3 version: # bindsym XF86AudioPlay exec playerctl play-pause # bindsym XF86AudioStop exec playerctl stop # bindsym XF86AudioNext exec playerctl next # bindsym XF86AudioPrev exec playerctl previous bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioStop, exec, playerctl stop bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous # bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status # bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status # bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status # bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d bind = $mainMod+SHIFT, left, movewindow, l bind = $mainMod+SHIFT, right, movewindow, r bind = $mainMod+SHIFT, up, movewindow, u bind = $mainMod+SHIFT, down, movewindow, d # Move windows with mainMod + SHIFT + arrow keys # disable for now until move focus is fixed # bind = $mainMod, left, hy3:movefocus, l # bind = $mainMod, right, hy3:movefocus, r # bind = $mainMod, up, hy3:movefocus, u # bind = $mainMod, down, hy3:movefocus, d # bind = $mainMod+SHIFT, left, hy3:movewindow, l # bind = $mainMod+SHIFT, down, hy3:movewindow, d # bind = $mainMod+SHIFT, up, hy3:movewindow, u # bind = $mainMod+SHIFT, right, hy3:movewindow, r # bind = $mainMod, r, hy3:makegroup, opposite, force_ephemeral # Switch workspaces with mainMod + [0-9] # bind = $mainMod, 1, exec, ~/.config/hypr/scripts/dispatch.sh 1 # bind = $mainMod, 2, exec, ~/.config/hypr/scripts/dispatch.sh 2 # bind = $mainMod, 3, exec, ~/.config/hypr/scripts/dispatch.sh 3 # bind = $mainMod, 4, exec, ~/.config/hypr/scripts/dispatch.sh 4 # bind = $mainMod, 5, exec, ~/.config/hypr/scripts/dispatch.sh 5 # bind = $mainMod, 6, exec, ~/.config/hypr/scripts/dispatch.sh 6 # bind = $mainMod, 7, exec, ~/.config/hypr/scripts/dispatch.sh 7 # bind = $mainMod, 8, exec, ~/.config/hypr/scripts/dispatch.sh 8 # bind = $mainMod, 9, exec, ~/.config/hypr/scripts/dispatch.sh 9 # bind = $mainMod, 0, exec, ~/.config/hypr/scripts/dispatch.sh 10 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 # Move active window to a workspace with mainMod + SHIFT + [0-9] 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 # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow ############################## ### WINDOWS AND WORKSPACES ### ############################## # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # workspace monitor bindings workspace=3,monitor:HDMI-A-1,defaultName:discord workspace=5,monitor:DP-3,defaultName:steam workspace=1,defaultName:web windowrule = float, file_progress windowrule = float, confirm windowrule = float, dialog windowrule = float, download windowrule = float, notification windowrule = float, error windowrule = float, splash windowrule = float, confirmreset windowrule = float, title:Open File windowrule = float, title:branchdialog windowrule = float, Lxappearance windowrule = float, Rofi windowrule = animation none,Rofi windowrule = float, title:CopyQ windowrule = float,viewnior windowrule = float,feh windowrule = float, pavucontrol-qt windowrule = float, pavucontrol windowrule = float, file-roller windowrule = fullscreen, wlogout windowrule = float, title:wlogout windowrule = fullscreen, title:wlogout windowrule = idleinhibit focus, mpv windowrule = idleinhibit fullscreen, firefox windowrule = float, title:^(Media viewer)$ windowrule = float, title:^(Volume Control)$ windowrule = float, title:^(Picture-in-Picture)$ windowrule = size 800 600, title:^(Volume Control)$ windowrule = move 75 44%, title:^(Volume Control)$ windowrule = float, ^(opensnitch_ui)$ windowrule = fullscreen, steam_app_1293830 windowrulev2 = fullscreen,class:^(steam_app_1293830)$ windowrulev2=noanim,class:^(flameshot)$ windowrulev2=float,class:^(flameshot)$ windowrulev2=fakefullscreen,class:^(flameshot)$ windowrulev2=monitor 1,class:^(flameshot)$ windowrulev2=move -1680 0,class:^(flameshot)$ windowrule = move cursor -45% -30%,^(com.github.hluk.copyq)$ # moves copyq to the center of the cursor #disable animations for copyq, flameshot, and rofi windowrulev2 = noanim,class:^(com.github.hluk.copyq)$ windowrulev2 = noanim,class:^(flameshot)$ windowrulev2 = noanim,class:^(Rofi)$ # bind discord and variants to workspace 3 windowrulev2 = workspace discord,class:^(discord)$ # opacity rules # 100% for active windows and picture-in-picture # 85% for unfocused windows # windowrulev2 = opacity 1.0 0.75,class:.* # 85 for floating and focused # 75 for floating and unfocused # windowrulev2 = opacity 0.85 0.75,floating:1 windowrulev2 = opacity 1.0,title:^(Picture-in-Picture)$ # 85 for rofi windowrulev2 = opacity 1.0 0.95,class:^(Rofi)$ ======Config-End======== ```

Description

had a cronjob that changes the hyprpaper background every 5 minutes and saw that hyprland was crashing when it was locked when the background was due to change.

initial commit with the issue is 963816b9a6524a99a6716fa1aa30b2c4f369d2f0

reverting 729b47d46 and 963816b fixes the issue

How to reproduce

run the following command and replace the picture with an actual picture, only crashes on the final command.

hyprlock & sleep 1 && hyprctl --instance 0 hyprpaper unload all && hyprctl --instance 0 hyprpaper preload picture.png && hyprctl --instance 0 hyprpaper wallpaper "HDMI-A-1, picture.png"

doesn't need to be hyprlock, could also be swaylock.

Crash reports, logs, images, videos

hyprlandCrashReport25168.txt

VirtCode commented 1 month ago

can you try whether #7092 fixes it?

winneratwin commented 1 month ago

that pull request fixes it