diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf index 357fd14..4ccc480 100644 --- a/hypr/hypridle.conf +++ b/hypr/hypridle.conf @@ -4,7 +4,7 @@ general { before_sleep_cmd = loginctl lock-session # Small delay so the DRM/GPU is ready before re-enabling the display; # running `dpms on` immediately at resume is the classic cause of a black screen. - after_sleep_cmd = sh -c 'sleep 2; hyprctl dispatch dpms on' + after_sleep_cmd = sh -c "sleep 2; hyprctl dispatch 'hl.dsp.dpms(\"on\")'" } # Step 1: Dim monitor at 115 sec idle (warning that it will lock soon) @@ -26,19 +26,19 @@ listener { # Step 3: Turn screen off at 5 min idle listener { timeout = 300 - on-timeout = hyprctl dispatch dpms off && ddcutil setvcp 10 0 + on-timeout = hyprctl dispatch "hl.dsp.dpms('off')" && ddcutil setvcp 10 0 # Explanation: - # - hyprctl dispatch dpms off → tells the compositor to power off the display (DPMS standby) + # - hl.dsp.dpms("off") → tells the compositor to power off the display (DPMS standby) # - ddcutil setvcp 10 0 → sets monitor brightness to 0 at the hardware level (safe for OLED) # # Both together ensure the screen is fully off visually and electrically # When the user becomes active again, restore display - on-resume = hyprctl dispatch dpms on && ddcutil setvcp 10 100 && wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 + on-resume = hyprctl dispatch "hl.dsp.dpms('on')" && ddcutil setvcp 10 100 && wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 # Explanation: - # - hyprctl dispatch dpms on → ensures the display is powered on by the compositor + # - hl.dsp.dpms("on") → ensures the display is powered on by the compositor # - ddcutil setvcp 10 100 → restores monitor brightness to full # # Both together guarantee the screen wakes reliably on all monitors diff --git a/hypr/scripts/dynamic-borders.sh b/hypr/scripts/dynamic-borders.sh index 3395c4b..579b6ba 100755 --- a/hypr/scripts/dynamic-borders.sh +++ b/hypr/scripts/dynamic-borders.sh @@ -1,5 +1,18 @@ #!/usr/bin/env bash +# Hyprland 0.56 removed the "noborder" window prop (use border_size 0) and +# "hyprctl dispatch " — runtime props now go through the Lua API. +# Keep in sync with decoration.border_size in hyprland.lua. +BORDER_SIZE=3 + +# set_border
<1 = hide border, 0 = show border> +set_border() { + local hex=${1#address:}; hex=${hex#0x} + local size=0 + [[ $2 == 0 ]] && size=$BORDER_SIZE + hyprctl dispatch "hl.dsp.window.set_prop({prop='border_size', value='$size', window='address:0x$hex'})" >/dev/null +} + function handle { if [[ ${1:0:10} == "openwindow" ]] then @@ -16,9 +29,9 @@ function handle { floating_status=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$window_id\" ) | .floating" ) if [[ $floating_status == "false" ]] then - hyprctl dispatch setprop address:0x$window_id noborder 1 + set_border "0x$window_id" 1 else - hyprctl dispatch setprop address:0x$window_id noborder 0 + set_border "0x$window_id" 0 return fi @@ -28,7 +41,7 @@ function handle { for address in $addresses do if [[ "$address" != "$window_id" ]]; then - hyprctl dispatch setprop address:$(echo $address | xargs) noborder 0 + set_border "$(echo $address | xargs)" 0 fi done fi @@ -52,9 +65,9 @@ function handle { floating_status=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$window_id\" ) | .floating" ) if [[ $floating_status == "false" ]] then - hyprctl dispatch setprop address:0x$window_id noborder 1 + set_border "0x$window_id" 1 else - hyprctl dispatch setprop address:0x$window_id noborder 0 + set_border "0x$window_id" 0 return fi elif [[ $windows -eq 2 ]] @@ -63,7 +76,7 @@ function handle { for address in $addresses do if [[ "$address" != "$window_id" ]]; then - hyprctl dispatch setprop address:$(echo $address | xargs) noborder 0 + set_border "$(echo $address | xargs)" 0 fi done fi @@ -73,7 +86,7 @@ function handle { for workspace in $single_window_workspaces do window=$(hyprctl clients -j | jq ".[] | select(.workspace.id == $workspace) | .address") - hyprctl dispatch setprop address:$(echo $window | xargs) noborder 1 + set_border "$(echo $window | xargs)" 1 done elif [[ ${1:0:11} == "closewindow" ]] @@ -87,9 +100,9 @@ function handle { floating_status=$(hyprctl activewindow -j | jq ".floating") if [[ $floating_status == "false" ]] then - hyprctl dispatch setprop address:$window_id noborder 1 + set_border "$window_id" 1 else - hyprctl dispatch setprop address:$window_id noborder 0 + set_border "$window_id" 0 return fi @@ -102,14 +115,14 @@ function handle { workspace_id=$(hyprctl clients -j | jq --arg address "$address" '.[] | select(.address == $address) | .workspace.id') if [[ $floating_status -eq 1 ]] then - hyprctl dispatch setprop address:$address noborder 0 + set_border "$address" 0 else no_windows=$(hyprctl workspaces -j | jq ".[] | select(.id == $workspace_id) | .windows") if [[ $no_windows -eq 1 ]] then - hyprctl dispatch setprop address:$address noborder 1 + set_border "$address" 1 else - hyprctl dispatch setprop address:$address noborder 0 + set_border "$address" 0 fi fi fi diff --git a/hypr/scripts/lid-close.sh b/hypr/scripts/lid-close.sh index e728bbd..1cd58ef 100755 --- a/hypr/scripts/lid-close.sh +++ b/hypr/scripts/lid-close.sh @@ -3,6 +3,6 @@ pkill -x dim hyprctl switchxkblayout all 0 wpctl set-mute @DEFAULT_AUDIO_SINK@ 1 pidof hyprlock || hyprlock --no-fade-in & -hyprctl dispatch dpms off +hyprctl dispatch "hl.dsp.dpms('off')" wait wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 diff --git a/hypr/scripts/monitor-mirror.sh b/hypr/scripts/monitor-mirror.sh index 72e4ed1..afa599c 100755 --- a/hypr/scripts/monitor-mirror.sh +++ b/hypr/scripts/monitor-mirror.sh @@ -21,6 +21,7 @@ if [[ -n "$mirror_of" ]]; then hyprctl reload notify-send "Mirror" "Off — reverted to default layout" else - hyprctl keyword monitor "$external,preferred,auto,1,mirror,$internal" + # hl.monitor via eval replaces the removed `hyprctl keyword` (Hyprland 0.56) + hyprctl eval "hl.monitor({output='$external', mode='preferred', position='auto', scale=1, mirror='$internal'})" notify-send "Mirror" "On — $internal → $external" fi diff --git a/wlogout/layout b/wlogout/layout index fddaccf..1000ce2 100644 --- a/wlogout/layout +++ b/wlogout/layout @@ -1,6 +1,6 @@ { "label" : "lock", - "action" : "hyprctl dispatch exec hyprlock", + "action" : "hyprlock &", "text" : "Lock", "keybind" : "l" } @@ -12,7 +12,7 @@ } { "label" : "logout", - "action" : "hyprctl dispatch exit", + "action" : "hyprctl dispatch 'hl.dsp.exit()'", "text" : "Logout", "keybind" : "e" }