libpipew...e-tunnel(7)

πŸ’– libpipewire-module-pipe-tunnel β€” Unix Pipe Tunnel πŸ’–

okay bestie, so this is the manual page for libpipewire-module-pipe-tunnel(7) β€” literally the entire Unix Pipe Tunnel page, and we're gonna get through it together, no cap. 🫢


✨ NAME ✨

libpipewire-module-pipe-tunnel β€” Unix Pipe Tunnel πŸš‡


🌸 DESCRIPTION 🌸

The pipe-tunnel module hands you a source or a sink that tunnels all the audio to or from a unix pipe respectively. like, the whole thing. every bit of the audio. it's giving tunnel. it ate. πŸ’…


πŸŽ€ MODULE NAME πŸŽ€

libpipewire-module-pipe-tunnel


πŸ¦‹ MODULE OPTIONS πŸ¦‹

  • tunnel.mode β€” the desired tunnel to create. (Default playback) ✨
  • tunnel.may-pause β€” if the tunnel stream is allowed to pause on xrun
  • pipe.filename β€” the filename of the pipe.
  • stream.props β€” Extra properties for the local stream.

Now let's break the modes down, because this is the main character part of the whole page:

  • When tunnel.mode is capture, a capture stream on the default source is created. The samples captured from the source will be written to the pipe. πŸ“₯
  • When tunnel.mode is sink, a sink node is created. Samples played on the sink will be written to the pipe. πŸ«—
  • When tunnel.mode is playback, a playback stream on the default sink is created. The samples read from the pipe will be played on the sink. πŸ”Š
  • When tunnel.mode is source, a source node is created. Samples read from the the pipe will be made available on the source. πŸ“€

(yes, "the the" β€” I'm keeping it exactly as written, that's the source's vibe, not mine 😭)

tunnel.may-pause allows the tunnel stream to become inactive (paused) when there is no data in the fifo or when the fifo is full. πŸ”₯ For capture and playback tunnel.mode this is by default true. For source and sink tunnel.mode, this is by default false. A paused stream will consume no CPU and will resume when the fifo becomes readable or writable again. so it's napping, not dead. iconic.

When pipe.filename is not given, a default fifo in /tmp/fifo_input or /tmp/fifo_output will be created that can be written and read respectively, depending on the selected tunnel.mode. 🧚


πŸ’œ GENERAL OPTIONS πŸ’œ

Options with well-known behavior. (iykyk)

  • remote.name
  • audio.format
  • audio.rate
  • audio.channels
  • audio.layout
  • audio.position
  • node.latency
  • node.name
  • node.description
  • node.group
  • node.virtual
  • media.class
  • target.object to specify the remote name or serial id to link to

When not otherwise specified, the pipe will accept or produce a 16 bits, stereo, 48KHz sample stream. 🎧


⭐ EXAMPLE CONFIGURATION OF A PIPE PLAYBACK STREAM ⭐

# ~/.config/pipewire/pipewire.conf.d/my-pipe-tunnel.conf

context.modules = [
{   name = libpipewire-module-pipe-tunnel
    args = {
        tunnel.mode = playback
        #tunnel.may-pause = true
        # Set the pipe name to tunnel to
        pipe.filename = "/tmp/fifo_output"
        #audio.format=<sample format>
        #audio.rate=<sample rate>
        #audio.channels=<number of channels>
        #audio.position=<channel map>
        #target.object=<remote target node>
        stream.props = {
            # extra sink properties
        }
    }
}
]

🫢 reminder bestie: copy that config exactly, commented lines and all. the # lines are optional ideas, not requirements. don't come for me if you uncomment something and it does a thing. πŸ’€

okay that's the whole page!! this was PipeWire 1.6.11, and it's the libpipew...e-tunnel(7) page β€” go tunnel some audio, you absolute icon πŸ‘‘πŸ’–βœ¨

πŸ“¦ where this page comes from