PipeWire
Tools
pw-record&pw-play- capture and play soundqpwgraph- visual tool for making links between portspw-dot- dump graph as dot file:pw-dot && dot -T svg -O pw.dot && firefox pw.dot.svgpavucontrol- PulseAudio mixer GUIpw-dump- writes JSON representation of nodes, links and portspw-top- stats
Playback over SSH
pw-record --target 56 - | ssh ann XDG_RUNTIME_DIR=/run/user/hxd pw-play -
Where 56 is ID of output monitor named alsa_output.pci-0000_00_1f.3.analog-stereo in my case.
pw-dump | jq '.[] | select(.info.props."node.name" == "alsa_output.pci-0000_00_1f.3.analog-stereo").id'
pw-dump | jq '.[] | select(.info.props."node.description" == "Built-in Audio Analog Stereo" and .info.props."api.alsa.pcm.stream" == "playback").id'
pw-dump | jq '.[] | select(.info.props."device.profile.name" == "analog-stereo" and .info.props."api.alsa.pcm.stream" == "playback").id'
Full script can look like this:
#!/bin/fish
pw-record --target (pw-dump | jq '.[] | select(.info.props."device.profile.name" == "analog-stereo" and .info.props."api.alsa.pcm.stream" == "playback").id') - | ssh ann XDG_RUNTIME_DIR=/run/user/hxd pw-play -