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.92k stars 914 forks source link

Monitors do not wake up after standby #6746

Open smitropoulos opened 5 months ago

smitropoulos commented 5 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 2fa57f2dc4909be697d003a22ce6870039e4db9b (pointer: change min cursor padding to 0 (6027)). Date: Tue Jul 2 13:17:48 2024 Tag: v0.41.2-16-g2fa57f2d, commits: 4902 flags: (if any) System Information: System name: Linux Node name: SMPC Release: 6.9.7-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Fri, 28 Jun 2024 04:32:50 +0000 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] [1002:744c] (rev c8) (prog-if 00 [VGA controller]) 16:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raphael [1002:164e] (rev c9) (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: hy3 by outfoxxed ver 0.1 ======Config-Start====== Config File: /home/smitropoulos/.config/hypr/hyprland.conf: Read Succeeded # ╭──────────────────────────────────────────────────────────╮ # │ Monitor Configs │ # ╰──────────────────────────────────────────────────────────╯ # ─[ source https://wiki.hyprland.org/Configuring/Monitors/#general ]───── $dell_monitor = desc:Dell Inc. DELL P2416D 07C536950FKU $LG_monitor = desc:LG Electronics LG ULTRAGEAR 209MAMBFWE23 $AOC_monitor = desc:AOC Q27P1B GNXKBHA113837 $SAMSUNG_G8 = desc:Samsung Electric Company Odyssey G85SB H1AK500000 # $dell_monitor = DP-3 # $LG_monitor = HDIM-A-1 # # $LG_monitor = DP-2 # $AOC_monitor = DP-1 $monitor_left = $dell_monitor $monitor_center = $SAMSUNG_G8 # $monitor_right = $AOC_monitor monitor = $monitor_left, 2560x1440@75,0x0,1,transform,3 monitor = $monitor_center, 3440x1440@175,1440x560,1 # monitor = $AOC_monitor, 2560x1440@60,4000x560,1 # Default rule fallback monitor = ,preferred,auto,auto # ╭──────────────────────────────────────────────────────────╮ # │ Set programs that you use │ # ╰──────────────────────────────────────────────────────────╯ # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mod = SUPER $terminal = kitty $fileManager = nemo $browser = firefox $menu = albert toggle # ╭──────────────────────────────────────────────────────────╮ # │ Cursor settings │ # ╰──────────────────────────────────────────────────────────╯ env = XCURSOR_THEME,Breeze_Light exec-once=hyprctl setcursor Breeze_Light 24 # ╭──────────────────────────────────────────────────────────╮ # │ Autostart background │ # ╰──────────────────────────────────────────────────────────╯ # exec = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = $terminal --title kitty_scratchpad # exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = wl-paste --type text --watch cliphist store #Stores only text data exec-once = wl-paste --type image --watch cliphist store #Stores only image data exec-once = albert & exec-once = dunst & exec-once = /usr/lib/polkit-kde-authentication-agent-1 & exec-once = waybar -c /home/smitropoulos/.config/waybar/config_hyprland & exec-once = hypridle & exec-once = sway-audio-idle-inhibit & # Auto mounting devices exec-once = udiskie & # wallpapers exec-once = hyprpaper & # Night-shift exec-once = gammastep & exec-once = easyeffects --gapplication-service & # Tmux envs exec-once = ~/.config/tmux/import_env tmux exec-once = ~/.config/tmux/import_env system # ╭──────────────────────────────────────────────────────────╮ # │ Settings │ # ╰──────────────────────────────────────────────────────────╯ general { gaps_in = 5 gaps_out = 10 border_size = 3 col.active_border = 0xbb10b77f 0xff63b2b8 0xff82599c 45deg col.inactive_border = 0xff6e738d layout = hy3 } input { kb_layout = us, gr kb_options = grp:alt_shift_toggle repeat_delay = 190 repeat_rate = 35 sensitivity = 0 # 0 - Cursor movement will not change focus. # 1 - Cursor movement will always change focus to the window under the cursor. # 2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window. # 3 - Cursor focus will be completely separate from keyboard focus. Clicking on a window will not change keyboard focus. follow_mouse = 2 } debug { error_position = 1 disable_logs = false } misc { vrr = 0 mouse_move_enables_dpms = true key_press_enables_dpms = true disable_splash_rendering = true } opengl { force_introspection = 1 } decoration { col.shadow = 0xff0f0f0f rounding = 6 blur { enabled = true } } animations { enabled = yes bezier = overshot, 0.05,0.9,0.1,1.1 animation = windows, 1, 9, overshot animation = windowsOut, 1, 7, overshot, popin 80% animation = border, 1, 10, overshot animation = fade, 1, 7, overshot animation = workspaces, 1, 3, overshot, slidefade animation = specialWorkspace, 1, 3, overshot, slidefadevert } # ╭──────────────────────────────────────────────────────────╮ # │ Plugin settings │ # ╰──────────────────────────────────────────────────────────╯ plugin { hy3 { node_collapse_policy =1 tabs { height = 24 padding = 4 render_text = true text_center = true text_height = 11 # active tab bar segment color col.active = 0xbb10b77f; # urgent tab bar segment color col.urgent = 0xbbff4f4f # inactive tab bar segment color col.inactive = 0xbb808080 # active tab bar text color col.text.active = 0xbb000000 # urgent tab bar text color col.text.urgent = 0xbb000000 # inactive tab bar text color col.text.inactive = 0xbb000000 } autotile { enable = false trigger_width = 1000 trigger_height = 1000 } } } # ╭──────────────────────────────────────────────────────────╮ # │ Autostart on workspaces │ # ╰──────────────────────────────────────────────────────────╯ exec-once = [workspace 1 silent] $browser exec-once = [workspace 2 silent] kitty --hold tmux exec-once = [workspace 4 silent] $fileManager exec-once = [workspace 5 silent] steam-runtime exec-once = [workspace 6 silent] slack exec-once = [workspace 7 silent] $terminal exec-once = [workspace 9 silent] thunderbird exec-once = [workspace 10 silent] spotify exec-once = hyprpm reload -n # ─[ bar ]──────────────────────────────────────────────────────────────── bind = SUPER,M,exec,waybar -c /home/smitropoulos/.config/waybar/config_hyprland & bind = SUPERSHIFT,M,exec,killall waybar # ─[ resize binds ]─────────────────────────────────────────────────────── bindm = SUPER,mouse:272,movewindow bindm = SUPER,mouse:273,resizewindow bindn = , mouse:272, hy3:focustab, mouse bindn = , mouse_down, hy3:focustab, l, require_hovered bindn = , mouse_up, hy3:focustab, r, require_hovered # ─[ basic keybinds ]───────────────────────────────────────────────────── bind = SUPER,Q,hy3:killactive bind = SUPERCTRLSHIFT,E,exec, /home/smitropoulos/.config/hypr/kill_hyprland.sh bind = SUPERSHIFT,space,togglefloating bind = SUPER,space,exec,albert toggle bind = SUPERSHIFT,space,pseudo bind = SUPER,F,fullscreen # ─[ Screenshotting ]───────────────────────────────────────────────────── bind = ,Print, exec, grim - | tee "$(xdg-user-dir PICTURES)/Screenshots/Screenshot from $(date +'%Y-%m-%d %H:%M:%S').png" | wl-copy; notify-send "Screenshot taken and copied to clipboard $(xdg-user-dir PICTURES)/Screenshots/Screenshot from $(date +'%Y-%m-%d %H:%M:%S').png" bind = SHIFT, Print, exec, grim -g "$(slurp -d)" - | tee "$(xdg-user-dir PICTURES)/Screenshots/Screenshot from $(date +'%Y-%m-%d %H:%M:%S').png" | wl-copy # ─[ Kitty ]────────────────────────────────────────────────────────────── bind = SUPER,RETURN,exec,$terminal # bind=CTRLALT,T,exec,kitty -o 'font_size=13' --title ok_its_kitty # bind=SUPER,t,exec,kitty --start-as=fullscreen -o 'font_size=18' --title all_is_kitty # bind=SUPER,N,exec,nvim # bind=SUPER,I,exec,kitty --title ok_its_kitty --hold nmtui # bind=SUPER,Y,exec,kitty --title ok_its_kitty --hold yay # ─[ Workspaces bindings ]──────────────────────────────────────────────── workspace = 1,monitor:$monitor_left,default:true workspace = 2,monitor:$monitor_center,default:true workspace = 3,monitor:$monitor_right,default:true workspace = 4,monitor:$monitor_left workspace = 5,monitor:$monitor_center workspace = 6,monitor:$monitor_right workspace = 7,monitor:$monitor_left workspace = 8,monitor:$monitor_center workspace = 9,monitor:$monitor_right workspace = 10,monitor:$monitor_left # ─[ Gaming ]─────────────────────────────────────────────────────────── bind = SUPER,F11,exec,~/.config/hypr/cursorlock.sh # ─[ lock screen ]──────────────────────────────────────────────────────── bind = SUPER,escape,exec, pkill remmina;sleep 1; hyprlock bind = SUPER,X,exec, wlogout --protocol layer-shell # ─[ Colorschemes ]───────────────────────────────────────────────────── bind = SUPER,F2,exec, ~/scripts/utility/colorschemes/changeColorscheme.sh # ─[ binds for workspaces ]─────────────────────────────────────────────── # ─[ focusing windows ]─────────────────────────────────────────────────── bind = SUPER,left,hy3:movefocus,l bind = SUPER,right,hy3:movefocus,r bind = SUPER,up,hy3:movefocus,u bind = SUPER,down,hy3:movefocus,d # vim-keybinds bind = SUPER,h,hy3:movefocus,l bind = SUPER,l,hy3:movefocus,r bind = SUPER,k,hy3:movefocus,u bind = SUPER,j,hy3:movefocus,d # ─[ moving windows ]───────────────────────────────────────────────────── bind = SUPERSHIFT,left,hy3:movewindow,l bind = SUPERSHIFT,right,hy3:movewindow,r bind = SUPERSHIFT,up,hy3:movewindow,u bind = SUPERSHIFT,down,hy3:movewindow,d # vim-keybinds bind = SUPERSHIFT,h,hy3:movewindow,l bind = SUPERSHIFT,l,hy3:movewindow,r bind = SUPERSHIFT,k,hy3:movewindow,u bind = SUPERSHIFT,j,hy3:movewindow,d # ─[ workspaces ]───────────────────────────────────────────────────────── # ─[ focusing other workspaces ]────────────────────────────────────────── bind = SUPER,1,workspace,1 bind = SUPER,2,workspace,2 bind = SUPER,3,workspace,3 bind = SUPER,4,workspace,4 bind = SUPER,5,workspace,5 bind = SUPER,6,workspace,6 bind = SUPER,7,workspace,7 bind = SUPER,8,workspace,8 bind = SUPER,9,workspace,9 bind = SUPER,0,workspace,10 # ─[ Tabbed ]───────────────────────────────────────────────────────────── bind = $mod, e, hy3:changegroup, opposite bind = $mod, w, hy3:makegroup, tab bind = $mod, a, hy3:changefocus, raise bind = $mod+SHIFT, a, hy3:changefocus, lower # ─[ moving windows to other workspaces ]───────────────────────────────── bind = SUPERSHIFT,1,movetoworkspace,1 bind = SUPERSHIFT,2,movetoworkspace,2 bind = SUPERSHIFT,3,movetoworkspace,3 bind = SUPERSHIFT,4,movetoworkspace,4 bind = SUPERSHIFT,5,movetoworkspace,5 bind = SUPERSHIFT,6,movetoworkspace,6 bind = SUPERSHIFT,7,movetoworkspace,7 bind = SUPERSHIFT,8,movetoworkspace,8 bind = SUPERSHIFT,9,movetoworkspace,9 bind = SUPERSHIFT,0,movetoworkspace,10 # ─[ moving windows to other workspaces (silent) ]──────────────────────── bind = SUPERCTRL,1,movetoworkspacesilent,1 bind = SUPERCTRL,2,movetoworkspacesilent,2 bind = SUPERCTRL,3,movetoworkspacesilent,3 bind = SUPERCTRL,4,movetoworkspacesilent,4 bind = SUPERCTRL,5,movetoworkspacesilent,5 bind = SUPERCTRL,6,movetoworkspacesilent,6 bind = SUPERCTRL,7,movetoworkspacesilent,7 bind = SUPERCTRL,8,movetoworkspacesilent,8 bind = SUPERCTRL,9,movetoworkspacesilent,9 bind = SUPERCTRL,0,movetoworkspacesilent,10 # ─[ moving to other wokspace with mouse control ]──────────────────────── bind = SUPER,mouse_down,workspace,e-1 bind = SUPER,mouse_up,workspace,e+1 # ─[ simple movement between spaces ]───────────────────────────────────── bind = SUPER,u,togglespecialworkspace bind = SUPER,minus,movetoworkspace,special # ─[ Audio ]────────────────────────────────────────────────────────────── bind = ,XF86AudioPlay,exec,playerctl play-pause bind = ,XF86AudioPrev,exec,playerctl previous bind = ,XF86AudioNext,exec,playerctl next bindl = ,XF86AudioMedia,exec,playerctl play-pause bindl = ,XF86AudioStop,exec,playerctl stop # Use pactl to adjust volume in PulseAudio. bindle = ,XF86AudioRaiseVolume,exec, pactl set-sink-volume @DEFAULT_SINK@ +5% bindle = ,XF86AudioLowerVolume,exec, pactl set-sink-volume @DEFAULT_SINK@ -5% bindle = ,XF86AudioMute,exec, pactl set-sink-mute @DEFAULT_SINK@ toggle bindle = ,XF86AudioMicMute,exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # ─[ brightness ]───────────────────────────────────────────────────────── bindle = ,XF86MonBrightnessUp,exec,brightnessctl set 5%+ bindle = ,XF86MonBrightnessDown,exec,brightnessctl set 5%- # ╭──────────────────────────────────────────────────────────╮ # │ Resize │ # ╰──────────────────────────────────────────────────────────╯ # will switch to a submap called resize bind = SUPER,R,submap,resize # will start a submap called "resize" submap = resize # sets repeatable binds for resizing the active window binde = ,L,resizeactive,40 0 binde = ,H,resizeactive,-40 0 binde = ,K,resizeactive,0 -40 binde = ,J,resizeactive,0 40 # use reset to go back to the global submap bind = ,escape,submap,reset bind = ,Return,submap,reset # will reset the submap, meaning end the current one and return to the global one submap = reset # ╭──────────────────────────────────────────────────────────╮ # │ Window rules │ # ╰──────────────────────────────────────────────────────────╯ # # ─[ Default ]────────────────────────────────────────────────────────── # No idle when something is fullscreen windowrulev2 = idleinhibit always, fullscreen:1 # ─[ Kitty on the scratchpad ]────────────────────────────────────────── windowrulev2 = float, class:(kitty), title:(kitty_scratchpad) windowrulev2 = workspace special silent,class:(kitty), title:(kitty_scratchpad) windowrulev2 = center 1, class:(kitty), title:(kitty_scratchpad) windowrulev2 = size 80% 80%, class:(kitty), title:(kitty_scratchpad) # ─[ Steam focus ]────────────────────────────────────────────────────── # Steam do not steal focus windowrulev2 = workspace 5 silent,class:(\bsteam\b) windowrulev2 = noinitialfocus, class:(\bsteam\b) windowrulev2 = tag +game, class:(steam_app_\d+) # ─[ New e-mail float ]───────────────────────────────────────────────── windowrulev2 = tag +floaters, class:(thunderbird) windowrulev2 = tag +60s, class:(thunderbird) # ─[ Thunderbird only main no float ]─────────────────────────────────── windowrulev2 = tile, class:(thunderbird), title:(.*Mozilla.Thunderbird.*) # ─[ File popup float ]───────────────────────────────────────────────── windowrulev2 = tag +floaters, class:(Xdg-desktop-portal.*) windowrulev2 = tag +noeffects, class:(Xdg-desktop-portal.*) windowrulev2 = tag +60s, class:(Xdg-desktop-portal.*) windowrulev2 = tag +floaters, title:(Select a (File|Folder)) windowrulev2 = tag +60s, title:(Select a (File|Folder)) windowrulev2 = tag +floaters, title:(File Upload) windowrulev2 = tag +60s, title:(File Upload) # ─[ Polkit float ]───────────────────────────────────────────────────── windowrulev2 = tag +floaters, class:(org.kde.polkit.*) # ─[ Gnome Apps float ]───────────────────────────────────────────────── windowrulev2 = tag +floaters, class:(org\.gnome\..*) # ─[ Popups/menu items for e.g. chrome ]──────────────────────────────── windowrulev2 = noblur, floating:1, class:(^$), title:(^$) # ─[ Albert rules floating ]──────────────────────────────────────────── windowrulev2 = center, floating:1, class:(albert) windowrulev2 = stayfocused, floating:1, class:(albert) windowrulev2 = dimaround, floating:1, class:(albert) # ─[ Hyprland Picker ]────────────────────────────────────────────────── windowrulev2 = tag +floaters, class:(hyprland-share-picker) windowrulev2 = tag +60s, class:(hyprland-share-picker) # ─[ Tag rules ]──────────────────────────────────────────────────────── # ┌ ┐ # │ This section should be in the end │ # └ ┘ # general floaters windowrulev2 = float, tag:floaters windowrulev2 = center, tag:floaters windowrulev2 = dimaround, tag:floaters # noeffects windowrulev2 = noblur, tag:noeffects windowrulev2 = noborder, tag:noeffects # 60 percents windowrulev2 = size 60%, tag:60s # Games windowrulev2 = float, tag:game windowrulev2 = center, tag:game windowrulev2 = immediate, tag:game windowrulev2 = noblur, tag:game windowrulev2 = noborder, tag:game windowrulev2 = nodim, tag:game windowrulev2 = noshadow, tag:game windowrulev2 = noanim, tag:game windowrulev2 = idleinhibit always, tag:game windowrulev2 = workspace 5 silent,tag:game ======Config-End======== ```

Description

After monitors go into standby mode, e.g. through hypridle, sometimes they do not wake up

How to reproduce

Either

Try to wake up PC

Crash reports, logs, images, videos

hyprland.log

smitropoulos commented 5 months ago

With one screen off:

❯ hyprctl monitors
Monitor DP-1 (ID 0):
        3440x1440@174.96201 at 1440x560
        description: Samsung Electric Company Odyssey G85SB H1AK500000
        make: Samsung Electric Company
        model: Odyssey G85SB
        serial: H1AK500000
        active workspace: 2 (2)
        special workspace: 0 ()
        reserved: 0 30 0 0
        scale: 1.00
        transform: 0
        focused: yes
        dpmsStatus: 1
        vrr: 0
        activelyTearing: false
        disabled: false
        currentFormat: XRGB8888
        availableModes: 3440x1440@119.96Hz 3440x1440@59.96Hz 3440x1440@174.96Hz 2560x1440@174.97Hz 2560x1440@120.00Hz 2560x1440@59.95Hz 1920x1200@119.96Hz 1920x1080@174.92Hz 1920x1080@120.00Hz 1920x1080@120.00Hz 1920x1080@119.88Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1600x1200@119.96Hz 1680x1050@59.95Hz 1600x900@60.00Hz 1280x1024@60.02Hz 1440x900@59.89Hz 1280x800@59.81Hz 1280x720@60.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1024x768@60.00Hz 800x600@60.32Hz 720x480@60.00Hz 720x480@59.94Hz 640x480@60.00Hz 640x480@59.94Hz

Monitor DP-3 (ID 1):
        2560x1440@75.00000 at 0x0
        description: Dell Inc. DELL P2416D 07C536950FKU
        make: Dell Inc.
        model: DELL P2416D
        serial: 07C536950FKU
        active workspace: 1 (1)
        special workspace: 0 ()
        reserved: 0 30 0 0
        scale: 1.00
        transform: 3
        focused: no
        dpmsStatus: 1
        vrr: 0
        activelyTearing: false
        disabled: false
        currentFormat: XRGB8888
        availableModes: 2560x1440@59.95Hz 2048x1152@59.90Hz 1920x1200@59.88Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1920x1080@24.00Hz 1920x1080@23.98Hz 1600x1200@60.00Hz 1680x1050@59.95Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.95Hz 1280x800@59.81Hz 1152x864@75.00Hz 1280x720@60.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@60.00Hz 800x600@75.00Hz 800x600@60.32Hz 720x576@50.00Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@60.00Hz 720x480@59.94Hz 720x480@59.94Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@60.00Hz 640x480@59.94Hz 640x480@59.94Hz 720x400@70.08Hz

Notice dpmsstatus is 1 for both monitors, only one is actually on.

smitropoulos commented 4 months ago

Noticed some amd drivers issues, attaching logs amd_output.log

smitropoulos commented 4 months ago

If I suspend without touching dpms, the monitors wake up fine. Checked with hypridle with this conf:

general {
    lock_cmd = pidof hyprlock || hyprlock       # avoid starting multiple hyprlock instances.
    before_sleep_cmd = loginctl lock-session    # lock before suspend.
    # after_sleep_cmd = hyprctl dispatch dpms on  # to avoid having to press a key twice to turn on the display.
}

listener {
    timeout = 180
    on-timeout = loginctl lock-session
}

# listener {
#     timeout = 18
#     # on-timeout = hyprctl dispatch dpms off
#     # on-resume =  hyprctl dispatch dpms on
# }
#
listener {
    timeout = 300
    on-timeout = systemctl suspend
}