adaptive sync

This commit is contained in:
nnduc
2026-09-27 17:16:30 +07:00
parent 37b16c4e7c
commit 9b8320cead
4 changed files with 28 additions and 6 deletions
+3 -1
View File
@@ -38,7 +38,9 @@ exec --no-startup-id ~/.config/sway/scripts/wallpaper-rotate $wallpaper_dir
# You can get the names of your outputs by running: swaymsg -t get_outputs
# adaptive_sync on the desktop makes sway stutter/flicker; 120Hz avoids AMD
# VRAM clock flicker at high refresh (see README).
output DP-1 mode 1920x1080@120Hz adaptive_sync off allow_tearing yes
output DP-1 mode 1920x1080@240Hz adaptive_sync off allow_tearing yes
exec_always pkill -xf '/bin/sh /home/nnduc/.config/sway/scripts/vrr-follow'; ~/.config/sway/scripts/vrr-follow
#output DP-1 mode 1920x1080@240Hz adaptive_sync on allow_tearing yes
### Idle configuration
#
+5 -5
View File
@@ -1,8 +1,8 @@
#!/bin/bash
wall_dir="${1:?wallpaper directory required}"
img=$(find "$wall_dir" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | shuf -n1)
if [ -n "$img" ]; then
exec swaylock -f -i "$img"
else
exec swaylock -f
fi
swaymsg -q output DP-1 adaptive_sync off # lock screen redraws rarely: fixed 240 Hz
swaylock -f ${img:+-i "$img"}
# once unlocked, let vrr-follow decide again (in background so swayidle/suspend aren't held up)
( while pgrep -x swaylock >/dev/null; do sleep 1; done
~/.config/sway/scripts/vrr-follow once ) &
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
# adaptive_sync on DP-1 only while the visible workspace shows a fullscreen window
OUT=DP-1
update() {
if [ "$(swaymsg -t get_tree | jq --arg o "$OUT" '
.nodes[] | select(.name==$o) as $out | $out.nodes[]
| select(.name==$out.current_workspace)
| [.. | objects | select((.fullscreen_mode? // 0) > 0)] | length')" -gt 0 ]
then s=on; else s=off; fi
[ "$s" != "$last" ] && swaymsg -q output "$OUT" adaptive_sync "$s" && last=$s
}
[ "$1" = once ] && { update; exit; }
update
swaymsg -t subscribe -m '["workspace","window"]' | while read -r _; do update; done