{ ... }: { text = '' function monitor() { toggle() { local output=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') local state=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .power') if ''${state}; then swaymsg "output \"''${output}\" power off" else swaymsg "output \"''${output}\" power on" fi pkill -RTMIN+4 waybar } _sway_iterate_sockets toggle } function gaming() { toggle() { local output=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') local state=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .adaptive_sync_status') if [[ "''${state}" = "disabled" ]]; then swaymsg "output \"''${output}\" adaptive_sync on" else swaymsg "output \"''${output}\" adaptive_sync off" fi pkill -RTMIN+4 waybar } _sway_iterate_sockets toggle } function dnd() { toggle() { local state=$(makoctl mode) if [[ "''${state}" = "dnd" ]]; then makoctl mode -s default else makoctl mode -s dnd fi pkill -RTMIN+4 waybar } _sway_iterate_sockets toggle } # Waybar output. function displaywidget() { local __monitor=$(_monitor) local __gaming=$(_gaming) local __recording=$(_recording) local __dnd=$(_dnd) local class="" if [[ "''${__monitor}" = "on" ]] || [[ "''${__gaming}" = "on" ]] || [[ "''${__recording}" = "on" ]] || [[ "''${__dnd}" = "on" ]]; then class="modified" fi printf "{\"text\": \"󰍹\", \"tooltip\": \"DND: ''${__dnd^} / Monitor: ''${__monitor^} / Gaming: ''${__gaming^} / Recording: ''${__recording^}\", \"class\": \"''${class}\"}\n" } function _monitor() { local outputs=($(swaymsg -t get_outputs | jq -r '.[] | .power')) for state in "''${outputs[@]}"; do ''${state} || { printf on return 1 } done printf off return 0 } function _recording() { [[ "$(ps cax | rg wf-recorder)" = "" ]] && printf off || printf on } function _dnd() { [[ "$(makoctl mode)" = "dnd" ]] && printf on || printf off } function _gaming() { local outputs=($(swaymsg -t get_outputs | jq -r '.[] | .adaptive_sync_status')) for state in "''${outputs[@]}"; do [[ "''${state}" = "disabled" ]] || { printf on return 1 } done printf off return 0 } ''; }