#!/bin/sh # set -x output_file=${1:-"${HOME}/Videos/rec_$(now).mkv"} audio_output=${WF_AOUT:-alsa_output.pci-0000_00_1f.3.analog-stereo} audio_input=${WF_AIN:-alsa_input.pci-0000_00_1f.3.analog-stereo} video_output=${WF_VOUT:-DP-5} showkeys=${WF_KEYS} mux_sink=${WF_ASINK} if [ -z "${mux_sink}" ]; then mux_sink=wf-mux mux_sink_id= output_loopback_id= input_loopback_id= prepare_mux_sink() { mux_sink_id=$(pactl load-module module-null-sink sink_name="${mux_sink}") output_loopback_id=$(pactl load-module module-loopback sink="${mux_sink}" source="${audio_output}.monitor") input_loopback_id=$(pactl load-module module-loopback sink="${mux_sink}" source="${audio_input}") } teardown_mux_sink() { pactl unload-module "${mux_sink_id}" pactl unload-module "${output_loopback_id}" pactl unload-module "${input_loopback_id}" } trap '{ teardown_mux_sink >/dev/null; }' EXIT prepare_mux_sink >/dev/null fi if [ -n "${showkeys}" ]; then echo "Starting wshowkeys on ${video_output}" echo "WARNING: currently the -o flag to force display to a specific output is not implemented" >&2 sway exec "wshowkeys -a bottom -a left -F 'Iosevka Sparkle 25' -t 1 -o ${video_output}" >/dev/null trap '{ pkill wshowkeys; }' EXIT fi wf-recorder -c h264_vaapi -d /dev/dri/renderD128 -o "${video_output}" -a "${mux_sink}.monitor" -f "${output_file}"