#!/bin/sh PID=`pgrep wf-recorder` FILE="$HOME/multimedia/screencasts/`date '+%Y%m%d-%H%M%S'`.mkv" if [ "$PID" ]; then kill -INT $PID for module in `pactl list short modules | grep wf-recorder | cut -f1`; do pactl unload-module $module done while `pgrep wf-recorder`; do sleep 0.01; done pkill -SIGRTMIN+8 waybar sleep 0.01 pkill -SIGRTMIN+8 waybar else TYPE=${1:-output} case $TYPE in output) GEOMETRY=`slurp -o -b "303030AA" -B "303030AA"` ;; window) GEOMETRY=`swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x+.window_rect.x),\(.rect.y+.window_rect.y) \(.window_rect.width)x\(.window_rect.height)"' | slurp -b "303030AA" -B "303030AA"` ;; *) echo "Usage: $0 [output|window]" exit 1 ;; esac if [ -z "$GEOMETRY" ]; then exit; fi pactl load-module module-null-sink sink_name=wf-recorder pactl load-module module-loopback sink=wf-recorder source=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor pactl load-module module-loopback sink=wf-recorder source=alsa_input.pci-0000_00_1b.0.analog-stereo wf-recorder --audio=wf-recorder.monitor \ --geometry="$GEOMETRY" \ --pixel-format=yuv420p \ --file="$FILE" & disown $! pkill -SIGRTMIN+8 waybar fi