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
21.5k stars 899 forks source link

Hyprland crashes (SIGV) with external monitor connected after waking up from hibernate #7700

Closed yadobler closed 2 weeks ago

yadobler commented 2 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 027140b7315efe3cd2e7b78fa608bd36da839894 (). Date: 2024-09-04 Tag: , commits: 027140b7315efe3cd2e7b78fa608bd36da839894 flags: (if any) System Information: System name: Linux Node name: vellinator Release: 6.6.48 Version: #1-NixOS SMP PREEMPT_DYNAMIC Thu Aug 29 15:33:59 UTC 2024 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-UP3 GT2 [Iris Xe Graphics] [8086:46a8] (rev 0c) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240831.12228ff" DOCUMENTATION_URL="https://nixos.org/learn.html" HOME_URL="https://nixos.org/" ID=nixos IMAGE_ID="" IMAGE_VERSION="" LOGO="nix-snowflake" NAME=NixOS PRETTY_NAME="NixOS 24.11 (Vicuna)" SUPPORT_URL="https://nixos.org/community.html" VERSION="24.11 (Vicuna)" VERSION_CODENAME=vicuna VERSION_ID="24.11" plugins: hyprbars by Vaxry ver 1.0 hyprgrass by horriblename ver 0.7 ======Config-Start====== Config File: /home/yukna/.config/hypr/hyprland.conf: Read Succeeded # vim:ft=hyprlang debug:disable_logs = false source = ./colors.conf # GLOBAL VARIABLES $menu_paste = ~/.config/scripts/paste_menu.sh $term = foot $filebrowser = thunar $webbrowser = brave --gtk-version=4 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --enable-features=WaylandWindowDecorations $volume = ~/.config/scripts/volume.sh $brightness = ~/.config/scripts/brightness.sh $launcher1 = ~/.config/scripts/app_launcher.sh $launcher2 = ~/.config/scripts/icon_launcher.sh $powermenu = ~/.config/scripts/powermenu_launcher.sh $selective_kill = ~/.config/scripts/selective_kill.sh $printscr_savepath = ~/Pictures/Screenshots/$(date +'%Y%m%d-%H%M%S') $printscr_fullscreen = grim $printscr_select = grim -g "$(slurp)" $printscr_sf = $printscr_fullscreen - | tee $(echo $printscr_savepath)-original.png | swappy -f - $printscr_f = $printscr_fullscreen - | tee $(echo $printscr_savepath)-full.png | wl_copy $printscr_ss = $printscr_select - | tee $(echo $printscr_savepath)-original.png | swappy -f - $printscr_sw = ~/.config/scripts/print_window.sh $scratchpad_name = 󰉇 # DISPLAY monitor = eDP-1, 3000x2000@60, 0x0, 2 monitor = DP-3, preferred, -1920x0, 1 monitor =, preferred,auto,auto # STARTUP exec-once = bash ~/.config/scripts/hyprland-plugin-script.sh exec-once = hypridle exec-once = wbg $wallpaper exec-once = waybar exec-once = iio-hyprland exec-once = dunst exec-once = lxqt-policykit-agent exec-once = wl-paste --watch cliphist store exec-once = light -N 5 exec-once = pulseaudio -D exec-once = blueman-applet exec-once = rfkill block bluetooth exec-once = ~/.config/scripts/start_ime.sh #exec-once = ~/.config/scripts/start_squeekboard.sh exec-once = hyprctl setcursor Banana 24 exec-once = [workspace $scratchpad_name silent] gio launch ~/.local/share/applications/whatsapp.desktop exec-once = [workspace $scratchpad_name silent] telegram-desktop # exec-once = ibus-daemon --desktop=hyprland -d # exec-once = ~/.config/scripts/lisgd_touchscreen.sh # exec-once = gio launch .config/autostart/* # ENV VAR $im_platform = fcitx env = QT_QPA_PLATFORM,xcb env = QT_QPA_PLATFORMTHEME,gtk3 # force qt to use gtk file picker env = GTK_IM_MODULE,$im_platform env = QT_IM_MODULE,$im_platform env = SCRATCHPAD_NAME,$scratchpad_name env = SDL_IM_MODULE,$im_platform env = XMODIFIERS,@im=$im_platform env = GTK_THEME,Adwaita:dark env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_THEME,Banana env = MOZ_ENABLE_WAYLAND , 1 # ensure enable wayland for Firefox env = NIXOS_OZONE_WL , 1 # hint electron apps to use wayland env = NIXOS_XDG_OPEN_USE_PORTAL , 1 # needed to open apps after web login env = RANGER_LOAD_DEFAULT_RC,FALSE env = WLR_NO_HARDWARE_CURSORS , 1 # disable hardware cursors for wlroots env = WLR_RENDERER_ALLOW_SOFTWARE , 1 # enable software rendering for wlroots env = XCURSOR_SIZE,24 env = XDG_CURRENT_DESKTOP,hyprland env = _JAVA_AWT_WM_NONREPARENTING,1 # SETTINGS input { kb_layout = us follow_mouse = 1 touchpad { natural_scroll = true disable_while_typing = true middle_button_emulation = true } # -1.0 - 1.0, 0 means no modification. sensitivity = 0 } decoration { drop_shadow = false rounding = 0 shadow_range = 10 shadow_render_power = 2 col.shadow = rgba($color13ee) active_opacity = 1.0 inactive_opacity = 0.9 dim_inactive = true dim_strength = 0.3 dim_around = 0.4 } animations { enabled = true bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 5, default, popin 80% animation = border, 1, 10, myBezier animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } dwindle { pseudotile = true preserve_split = true } #master { # new_is_master = true #} misc { disable_hyprland_logo = true # force_hypr_chan = true # enable_swallow = false # swallow_regex = ^(foot)$ vfr = true } general { gaps_in = 5 gaps_out = 10 border_size = 2 col.active_border = rgba($color14ee) col.inactive_border = rgba($color1ff) layout = dwindle resize_on_border = true } # WINDOW RULES $spd_opacity = 0.9 #windowrule = opacity $spd_opacity, ^(foot)$ windowrule = opacity $spd_opacity, ^(org.pwmt.zathura)$ windowrule = pseudo, fcitx # windowrule = float, ^(jetbrains-idea-ce)$ # windowrule = plugin:hyprbars:nobar, ^(jetbrains-idea-ce)$ # windowrule = center, ^(jetbrains-idea-ce)$ # windowrule = noborder, ^(jetbrains-idea-ce)$ windowrule = float, ^(wofi)$ windowrule = dimaround, ^(wofi)$ windowrule = center, ^(wofi)$ windowrule = noborder, ^(wofi)$ windowrule = plugin:hyprbars:nobar, ^(wofi)$ windowrule = float, ^(Spotify)$ windowrule = dimaround, ^(Spotify)$ windowrule = center, ^(Spotify)$ windowrule = noborder, ^(Spotify)$ windowrule = float, ^(xdg-desktop-portal-gtk)$ windowrule = dimaround, ^(xdg-desktop-portal-gtk)$ windowrule = center, ^(xdg-desktop-portal-gtk)$ windowrulev2 = float, tag:scratchpad_window* windowrulev2 = size 70% 70%, tag:scratchpad_window* windowrulev2 = opacity $spd_opacity, tag:scratchpad_window* windowrulev2 = center, tag:scratchpad_window* windowrulev2 = dimaround, tag:scratchpad_window* windowrule = tag +scratchpad_window, ^(org.telegram.desktop)$ windowrule = tag +scratchpad_window, ^(TelegramDesktop)$ windowrule = tag +scratchpad_window, ^(.telegram-desktop-wrapped)$ windowrule = tag +scratchpad_window, ^(swayimg_) windowrule = tag +scratchpad_window, ^(brave-calendar.google.com__calendar_u_1_r-Default)$ windowrule = tag +scratchpad_window, ^(brave-mail.google.com__mail_u_.-Default)$ windowrule = tag +scratchpad_window, ^(ncspot)$ windowrule = tag +scratchpad_window, ^(brave-to-do.live.com.+)$ windowrule = tag +scratchpad_window, ^(brave-keep.google.com.+)$ windowrule = tag +scratchpad_window, ^(brave-open.spotify.com.+)$ windowrule = tag +scratchpad_window, ^(brave-web.whatsapp.com.+)$ # KEY BINDINGS $mainMod = SUPER # GLOBAL KEYS bind = $mainMod SHIFT, C, exec, hyprctl reload bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, T, exec, ~/.config/scripts/animations.sh toggle bind = $mainMod SHIFT, O, pseudo, bind = $mainMod, V, exec, $menu_paste bind = $mainMod, Return, exec, $term bind = $mainMod, E, exec, $filebrowser bind = $mainMod, B, exec, $webbrowser bind = $mainMod, N, exec, swaync-client -t -sw bind = $mainMod, Escape, exec, $powermenu bind = $mainMod, Tab, togglesplit, bind = ALT, Space, exec, $launcher1 bind = ALT, Tab, cyclenext, bind = ALT, Tab, bringactivetotop, bind = ALT SHIFT, Tab, cyclenext, prev bind = ALT SHIFT, Tab, bringactivetotop, # FUNCTION BUTTONS bindm= $mainMod, mouse:272, movewindow bindm= $mainMod, mouse:273, resizewindow # This only triggers when turning camera around # bindl=, switch[HP WMI camera shutter], exec, notify-send.sh test bindm= $mainMod, mouse:272, movewindow bindm= $mainMod, mouse:273, resizewindow bindl=, XF86MonBrightnessUp, exec, $brightness up 5 bindl=, XF86MonBrightnessDown, exec, $brightness down 5 bindl=, XF86AudioMute, exec, $volume mute bindl=, XF86AudioLowerVolume, exec, $volume down 5 bindl=, XF86AudioRaiseVolume, exec, $volume up 5 bind =, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle bind =, XF86AudioPrev, exec, playerctl previous bind =, XF86AudioNext, exec, playerctl next bind =, XF86AudioPlay, exec, playerctl play-pause bind = SHIFT, F9, exec, playerctl position 5- bind = SHIFT, F6, exec, $volume down 1 bind = SHIFT, F7, exec, $volume up 1 bind = SHIFT, F3, exec, $brightness up 1 bind = SHIFT, F2, exec, $brightness down 1 bind = SHIFT, F11, exec, playerctl position 5+ # PRINT SCREEN bind=CONTROL SHIFT,Print, exec, $printscr_sw bind=SHIFT,Print, exec, $printscr_ss bind=$mainMod, Print, exec, $printscr_f bind=,Print, exec, $printscr_sf # MODES # bindr=, swipe:4:u, submap, resize bind = $mainMod, W, submap, resize submap = resize bind =, W, cyclenext, bind =, W, bringactivetotop, bind =, W, submap, reset bind = SHIFT, W, cyclenext, prev bind = SHIFT, W, bringactivetotop, bind = SHIFT, W, submap, reset bind =, Q, exec, $selective_kill bind =, Q, submap, reset bind = SHIFT, Q, killactive, bind = SHIFT, Q, submap, reset bind = SHIFT, F, fullscreen, 0 bind = SHIFT, F, submap, reset bind =, F, fullscreen, 1 bind =, F, submap, reset bind =, Space, togglefloating, bind =, Space, centerwindow, bind =, Space, submap, reset bind =, C, centerwindow, bind =, C, submap, reset bind =, Tab, togglesplit, bind =, h, movefocus, l bind =, l, movefocus, r bind =, k, movefocus, u bind =, j, movefocus, d bind = SHIFT, h, movewindow, l bind = SHIFT, l, movewindow, r bind = SHIFT, k, movewindow, u bind = SHIFT, j, movewindow, d bind =, swipe:3:l, movewindow, l bind =, swipe:3:r, movewindow, r bind =, swipe:3:u, movewindow, u bind =, swipe:3:d, movewindow, d bind = CONTROL, h, resizeactive, l bind = CONTROL, l, resizeactive, r bind = CONTROL, k, resizeactive, u bind = CONTROL, j, resizeactive, d bind =, 1, workspace, 1 bind =, 2, workspace, 2 bind =, 3, workspace, 3 bind =, 4, workspace, 4 bind =, 5, workspace, 5 bind =, 6, workspace, 6 bind =, 7, workspace, 7 bind =, 8, workspace, 8 bind =, 9, workspace, 9 bind =, Comma, workspace, r-1 bind =, Period, workspace, r+1 bind = SHIFT, 1, movetoworkspacesilent, 1 bind = SHIFT, 2, movetoworkspacesilent, 2 bind = SHIFT, 3, movetoworkspacesilent, 3 bind = SHIFT, 4, movetoworkspacesilent, 4 bind = SHIFT, 5, movetoworkspacesilent, 5 bind = SHIFT, 6, movetoworkspacesilent, 6 bind = SHIFT, 7, movetoworkspacesilent, 7 bind = SHIFT, 8, movetoworkspacesilent, 8 bind = SHIFT, 9, movetoworkspacesilent, 9 bind = SHIFT, Comma, movetoworkspacesilent, r-1 bind = SHIFT, Period, movetoworkspacesilent, r+1 bindm=, mouse:272, movewindow bindm=, mouse:273, resizewindow bindm=, longpress:1, movewindow bindm=, longpress:2, resizewindow bind =, tap:3, togglefloating, #bind =, tap:4, submap, reset bindr = SHIFT, 0, movetoworkspacesilent, special:$scratchpad_name bindr =, 0, exec, ~/.config/scripts/swap_scratchpad.sh bind =, Escape, submap, reset bind = $mainMod, W, submap, reset submap = reset # WORKSPACE AND WINDOWS 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 bindr= $mainMod, 0, exec, ~/.config/scripts/swap_scratchpad.sh bind = $mainMod, Comma, workspace, r-1 bind = $mainMod, Period, workspace, r+1 bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 bindr= $mainMod SHIFT, 0, movetoworkspacesilent, special:$scratchpad_name bind = $mainMod SHIFT, Comma, movetoworkspacesilent, r-1 bind = $mainMod SHIFT, Period, movetoworkspacesilent, r+1 bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow bindm = $mainMod, longpress:2, movewindow bindm = $mainMod, longpress:3, resizewindow # GESTURES gestures { workspace_swipe = on workspace_swipe_fingers = 4 workspace_swipe_distance = 200 workspace_swipe_cancel_ratio = 0.1 } plugin { hyprbars { bar_height = 30 bar_color = rgba($color14AA) bar_precedence_over_border = 1 bar_part_of_window = 1 # bar_color -> (col) bar's background color # bar_height -> (int) bar's height (default 15) # col.text -> (col) bar's title text color # bar_title_enabled -> (bool) whether to render the title (default true) # bar_text_size -> (int) bar's title text font size (default 10) # bar_text_font -> (str) bar's title text font (default Sans) # bar_text_align -> (str) bar's title text alignment (default center, can also be left) # bar_buttons_alignment -> (str) bar's buttons alignment (default: right, can also be left) # bar_part_of_window -> (bool) whether the bar is a part of the main window (if it is, stuff like shadows render around it) # bar_precedence_over_border -> (bool) whether the bar should have a higher priority than the border (border will be around the bar) # bar_padding -> (int) left / right edge padding (default 7) # bar_button_padding -> (int) padding between the buttons (default 5) # example buttons (R -> L) # hyprbars-button = color, size, on-click windowrulev2 = bordercolor rgb(880808),fullscreen:1 hyprbars-button = rgb($color5), 20, 󰖭, hyprctl dispatch exec ~/.config/scripts/selective_kill.sh hyprbars-button = rgb($color3), 20, , hyprctl dispatch fullscreen 1 hyprbars-button = rgb($color3), 20, , hyprctl dispatch movetoworkspacesilent special:$scratchpad_name hyprbars-button = rgb($color3), 20, 󰉈, hyprctl --batch "dispatch togglefloating; dispatch resizeactive exact 70% 70%; dispatch centerwindow; " } touch_gestures { sensitivity = 5.0 long_press_delay = 1000 # must be >= 3 workspace_swipe_fingers = 4 experimental { send_cancel = 0 } } } Config File: /home/yukna/.config/hypr/colors.conf: Read Succeeded # Generated by 'wal' $wallpaper="/home/yukna/Pictures/Wallpaper/cropped-image.jpg" # Special $cursor=E0E1DE $background=0D0807 $foreground=E0E1DE # Colors $color0=100A09 $color1=478394 $color2=498997 $color3=83743F $color4=4E5EA2 $color5=5A95AF $color6=A54F94 $color7=CBCCC7 $color8=8E8E8B $color9=539AAC $color10=6EAAB9 $color11=AE9C56 $color12=5A6AAF $color13=98BDCD $color14=C383B8 $color15=CBCCC7 ======Config-End======== ```

Description

Whenever I hibernate (with systemctl hibernate) or hypridle hibernates my computer after a timeout, Hyprland crashes (back to tty1 - that is how I launch Hyprland) if there is an external monitor connected.

I can't seem to tell which commit this arises from. The issue is inconsistent, usually gone when I manually try hibernating and restarting.

My monitor setup is such:

monitor = eDP-1, 3000x2000@60, 0x0, 2  # laptop main monitor
monitor = DP-3, preferred, -1920x0, 1  # external monitor, placed on left
monitor =, preferred,auto,auto

Removing the second line does not solve the issue. Using auto or 0x0 for position, and preferred or 1920x1080@60 does not solve the issue either.

I am currently using the 2024-09-04 commit from github. I use NixOS, so the flake input is directly from github:

        nixpkgs = {
            url = "github:NixOS/nixpkgs/nixos-unstable"; 
        };
        hyprland = {
            url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; 
            inputs.nixpkgs.follows = "nixpkgs";
        };
My hypridle config is as followed ```sh # vim:ft=hyprlang general { lock_cmd = pidof hyprlock || hyprlock before_sleep_cmd = loginctl lock-session after_sleep_cmd = hyprctl dispatch dpms on; hyprctl reload } listener { timeout = 300 on-timeout = light -O && light -S 10 on-resume = light -I } listener { timeout = 600 on-timeout = loginctl lock-session } listener { timeout = 900 on-timeout = hyprctl dispatch dpms off on-resume = hyprctl dispatch dpms on } listener { timeout = 1500 on-timeout = systemctl hibernate } ```

How to reproduce

  1. Connect external monitor to device, while using hyprland
  2. Hibernate to disk with systemctl hibernate (Optionally after hyprlock is activated)
  3. Boot up / Resume computer, with external monitor still plugged in
  4. Hyprland / Hyprlock will flash briefly, and then Hyprland crashes (falling back to either session manager or tty1 depending on how you launched Hyprland)

Crash reports, logs, images, videos

hyprlandCrashReport2058.txt hyprland.log.txt

yadobler commented 2 months ago

Updated my system.

My `hyprctl version` output ```sh Hyprland, built from branch at commit 7c4c402bd7f24241c096d809cc80408a469f15cb (). Date: 2024-09-08 Tag: , commits: 5200 flags: (if any) ```

What I have noted:

If monitor is already plugged in when Hyprland starts, hyprland "ignores" it until I cycle the HDMI 2-to-1 switch

Before this happens, hyprlock also crashes:

image ![image](https://github.com/user-attachments/assets/e76abe2a-2dcf-4cac-9ba7-159c4ac05547)

crash reports hyprlandCrashReport402601.txt

hyprlandCrashReport401433.txt

running diff on them (nvim -d) shows similar result:

[ERR] [AQ] drm: No format for output
...
[WARN] [wl_output] Binding a wl_output that's inert?? Possible client bug.

If I plug out and plug in, hyprland is ok

yadobler commented 1 month ago

@vaxerski any updates? I just crashed again when connecting my hdmi into the laptop.

hyprlandCrashReport186.txt

vaxerski commented 1 month ago

update

yadobler commented 2 weeks ago

Sflr. I will close this but if it happens again I'll open a new issue. So far so good. Thanks