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.62k stars 904 forks source link

hyprctl dispatch dpms off does not work #8377

Open TAforever opened 5 days ago

TAforever commented 5 days ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 4520b30d498daca8079365bdb909a8dea38e8d55 (version: bump to 0.44.1). Date: Wed Oct 9 12:54:39 2024 Tag: v0.44.1, commits: 5309 built against aquamarine 0.4.3 flags: (if any) System Information: System name: Linux Node name: arch Release: 6.6.59-1-lts Version: #1 SMP PREEMPT_DYNAMIC Fri, 01 Nov 2024 06:29:43 +0000 GPU information: 2b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] [1002:73ff] (rev c7) (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/theodor/.config/hypr/hyprland.conf: Read Succeeded # Some default env vars. env = XCURSOR_SIZE,24 env = XDG_CURRENT_DESKTOP,Hyprland env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORMTHEME,qt6ct env = XDG_SESSION_TYPE,wayland #env = SDL_VIDEODRIVER,wayland # autostart exec = pkill waybar; waybar exec-once = hypridle exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland exec-once = sed -i 's/offset = 10x30/offset = 10x10/g' ~/.config/dunst/dunstrc && dunst exec-once = swaybg.sh exec-once = easyeffects --gapplication-service exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = automount.sh exec-once = wl-paste --watch cliphist store exec-once = firefox exec-once = telegram-desktop exec-once = thunderbird # window rules windowrulev2 = workspace 1,class:(firefox) windowrulev2 = workspace 2 silent,class:(org.telegram.desktop) windowrulev2 = workspace 3,class:(pcsx2-qt) windowrulev2 = workspace 3 silent,class:(steam) windowrulev2 = workspace 3,class:(PortProton) windowrulev2 = workspace 3,class:(org.libretro.RetroArch) windowrulev2 = workspace 4 silent,class:(thunderbird) windowrulev2 = workspace 5,class:(com.transmissionbt.transmission_2066_12218468) windowrulev2 = workspace 5,class:(transmission-gtk) windowrulev2 = workspace 6,class:(Gimp-2.10) windowrulev2 = float,class:(flameshot) windowrulev2 = float,class:(Beyond-All-Reason) windowrulev2 = float,class:(galculator) windowrulev2 = fullscreen,class:(Rusted Warfare) windowrulev2 = suppressevent maximize, class:.* # appearance exec = gsettings set org.gnome.desktop.interface gtk-theme 'Gruvbox-Material-Dark' exec = gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark' exec = gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita' exec = gsettings set org.gnome.desktop.interface font-name 'Noto Sans Regular 10' # main settings monitor = ,preferred,auto,auto general { gaps_in = 0 gaps_out = 0 border_size = 1 col.active_border = rgba(000000ee) 45deg col.inactive_border = rgba(222222ff) layout = master allow_tearing = false } debug { disable_logs = false } input { kb_layout = us,ru kb_variant = kb_model = pc104 kb_options = grp:caps_toggle,compose:menu kb_rules = follow_mouse = 1 repeat_rate = 20 repeat_delay = 300 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } misc { disable_hyprland_logo = true focus_on_activate = true force_default_wallpaper = 0 disable_splash_rendering = true enable_swallow = true swallow_regex = kitty swallow_exception_regex = wev new_window_takes_over_fullscreen = 2 exit_window_retains_fullscreen = false mouse_move_enables_dpms = true key_press_enables_dpms = true } decoration { rounding = 0 blur { enabled = false size = 20 passes = 1 new_optimizations = true } drop_shadow = 0 shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = 0 bezier = myBezier, 0.05, 0.1, 0.1, 1.05 animation = windows, 1, 2, myBezier animation = windowsOut, 1, 2, default, popin 80% animation = border, 1, 2, default animation = borderangle, 1, 2, default animation = fade, 1, 3, default animation = workspaces, 1, 2, default } master { new_status = master mfact = 0.55 new_on_top = true no_gaps_when_only = 0 orientation = left } # binds $mainMod = SUPER bind = $mainMod,return,exec,kitty bind = $mainMod SHIFT,return,layoutmsg,swapwithmaster bind = $mainMod,Q,killactive bind = $mainMod SHIFT,Q,exec,kill -9 $(hyprctl activewindow | grep pid | tail -1 | awk '{print$2}') bind = $mainMod,E,exec,rofi -show emoji -modi emoji bind = $mainMod,D,exec,rofi -show drun bind = $mainMod,X,exec,rofi -modi clipboard:$HOME/.local/bin/cliphist-rofi -show clipboard bind = $mainMod,C,exec,rofi -modi calc -show calc bind = Control,delete,exec,dunstctl close-all bind = Control,insert,exec,dunstctl history-pop bind = Control,backslash, exec, dunstify -u low $(curl 'wttr.in/Saint-Peterburg?format=1') bind = Control ALT,R,exec,systemctl reboot bind = Control ALT,S,exec, suspend.sh bind = Control ALT,P,exec, systemctl poweroff bind = $mainMod,S,togglefloating, bind = $mainMod,P,pseudo, # dwindle bind = $mainMod, J,togglesplit, # dwindle bind = Control ALT,Down, exec, playerctl play-pause bind = Control ALT,Right, exec, playerctl next bind = Control ALT,Left, exec, playerctl previous bind = $mainMod SHIFT,E,exit bind = $mainMod SHIFT,R,exec,hyprctl reload bind = $mainMod,F,fullscreen bind = $mainMod,M,exec,monocle.sh bind = $mainMod,F1,exec,firefox bind = $mainMod,F2,exec,telegram-desktop bind = $mainMod,F3,exec,steam bind = $mainMod,F4,exec,crow bind = $mainMod,F5,exec,thunderbird bind = $mainMod,F6,exec,galculator bind = $mainMod,F7,exec,kitty -e btop bind = ,Print,exec,flameshot screen bind = SHIFT,Print,exec,flameshot gui #bind = ,Print,exec,grim ~/Pictures/screenshots/screen-"$(date +%s)".png #bind = SHIFT,Print,exec,grim -g "$(slurp)" ~/Pictures/screenshots/screen-"$(date +%s)".png #bind = $mainMod,Print,exec,grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:- | tail -n 1 | cut -d ' ' -f 4 | wl-copy bind = $mainMod,A,layoutmsg,addmaster bind = $mainMod,R,layoutmsg,removemaster binde = CTRL,right,exec,changevolume.sh 5%+ binde = CTRL,left,exec,changevolume.sh 5%- bind = CTRL,m,exec,changevolume.sh mute bind = CTRL,u,exec,changevolume.sh unmute # Move focus through list of windows bind = $mainMod, up, layoutmsg, cyclenext bind = $mainMod, down, layoutmsg, cycleprev bind = $mainMod SHIFT, up, layoutmsg, swapnext bind = $mainMod SHIFT, down, layoutmsg, swapprev bind = $mainMod, j, layoutmsg, cyclenext bind = $mainMod, k, layoutmsg, cycleprev bind = $mainMod SHIFT, j, layoutmsg, swapnext bind = $mainMod SHIFT, k, layoutmsg, swapprev # chandge layout orientation bind = $mainMod, grave, layoutmsg, orientationcycle left right bottom top # 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 # Move active window to a workspace with mainMod + SHIFT + [0-9] 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 # 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 # sets repeatable binds for resizing the active window binde = $mainMod,right,resizeactive,50 0 binde = $mainMod,left,resizeactive,-50 0 binde = $mainMod,l,resizeactive,50 0 binde = $mainMod,h,resizeactive,-50 0 # scratchpad bind = $mainMod SHIFT, Z, movetoworkspacesilent, special bind = $mainMod, Z, togglespecialworkspace ======Config-End======== ```

Description

The author of https://github.com/hyprwm/Hyprland/issues/1475 closed the issue for some reason, but the problem is still not solved

How to reproduce

hyprctl dispatch dpms off

Crash reports, logs, images, videos

No response

marzeq commented 5 days ago

Same here, my Lenovo L28u-30 connected over HDMI turns off for a few seconds but then it comes back on, but on the other hand, my Gigabyte G27Q connected over DP shuts off correctly with dpms off

vaxerski commented 4 days ago

log pls

TAforever commented 4 days ago

I'm sorry, the last log was not correct hyprland.log

vaxerski commented 3 days ago

to me this looks like you have a garbage display that disconnects whenever it gets dpms off

TAforever commented 3 days ago

dpms works flawlessly on xorg, sway and if you want, I can test it on river

vaxerski commented 3 days ago

they might remember dpms state after replug, we don't.

TAforever commented 3 days ago

What are your ideas? Do I need to change the monitor? But I'm not the only one with this problem

Rational-Curiosity commented 3 days ago

Same here, my Lenovo L28u-30 connected over HDMI turns off for a few seconds but then it comes back on, but on the other hand, my Gigabyte G27Q connected over DP shuts off correctly with dpms off

Same AOC connected over HDMI... turns off for 10 seconds aprox. and then it comes back on.

krzysztof-bochm commented 2 days ago

Same here, my Lenovo L28u-30 connected over HDMI turns off for a few seconds but then it comes back on, but on the other hand, my Gigabyte G27Q connected over DP shuts off correctly with dpms off

Same AOC connected over HDMI... turns off for 10 seconds aprox. and then it comes back on.

The same for me having AOC monitor connected via HDMI

After i run dpms off the monitor seams to be searching for other inputs disconnecting from HDMI entirely, after it cannot find DP signal it reconnects to HDMI, hyprland finds it as new monitor, maps it and enables it ( which is confirmed by logs which i may send if requested, but not before ) ignoring the fact that i have run dpms off couple of seconds ago

What are your ideas? Do I need to change the monitor? But I'm not the only one with this problem

As with the issue linked here this has never happened to me in sway, and unfortunately it is easier for me to stay with sway instead of turning auto scanning on my monitor, as I use both DP and HDMI on my monitor and am used to sway and have not got used to hypr yet, just wanted to try

they might remember dpms state after replug, we don't.

based on my logs this seams to be the problem ( at least in my case )

cathartyc commented 2 days ago

FWIW I had the same issue since I started using Hyprland almost 2 years ago (I indeed do remember #1475) with my Lenovo L27q-10 (plugged via HDMI), and after reading the Arch Wiki on display control I discovered that I can control mine via DDC.

To turn the monitor on and off, I installed ddcutil, and now I just have to execute ddcutil setvcp D6 01 and ddcutil setvcp D6 04 respectively. Thus, I added them on my hypridle.conf (copying here the relevant part for persistency):

[...]
listener {
    timeout = 240
    on-timeout = ddcutil setvcp D6 04; hyprctl dispatch dpms off
    on-resume = ddcutil setvcp D6 01; hyprctl dispatch dpms on
}
[...]

Works like a charm (maybe I should wrap everything in a script to check if the attached monitor is the right one, one day).

EDIT: just found the same solution in a comment under the original issue.