#!/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