#!/usr/bin/env bash # Sets the text read from stdin as the Sway wallpaper. TEXT=$(< /dev/stdin) TEMPDIR=$(mktemp -d) FONT_SIZE=18 swaymsg -t get_outputs | jq -r '.[] | "\(.name) \(.rect.width) \(.rect.height)"'\ | while read -r name width height; do file="$TEMPDIR/${name}".png offset=$(($height / 20)) width=$(($width - $offset)) height=$(($height - $offset)) magick -size ${width}x$height xc:black -font "DejaVu-Sans-Mono" -pointsize $FONT_SIZE -fill white \ -annotate +0+15 "$TEXT" $file sway output "$name" bg $file center done sleep 0.1 # sway reads the wallpaper in a different process, so wait a bit rm -r "$TEMPDIR"