Skip to content

Instantly share code, notes, and snippets.

@HikariKnight
Created April 30, 2023 15:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HikariKnight/f12a482e1cf7e1b730faf5573ae7f32c to your computer and use it in GitHub Desktop.
Save HikariKnight/f12a482e1cf7e1b730faf5573ae7f32c to your computer and use it in GitHub Desktop.
Place this file inside ~/.config/pipewire/pipewire.conf.d/ to create virtual channels for different applications for streaming or for audio isolation
context.modules = [
{ name = libpipewire-module-loopback
args = {
node.description = "Game"
capture.props = {
node.name = "game_output"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.game_output"
audio.position = [ FL FR ]
node.passive = true
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Voice"
capture.props = {
node.name = "voice_output"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.voice_output"
audio.position = [ FL FR ]
node.passive = true
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Browser"
capture.props = {
node.name = "browser_output"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.browser_output"
audio.position = [ FL FR ]
node.passive = true
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Music"
capture.props = {
node.name = "music_output"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.music_output"
audio.position = [ FL FR ]
node.passive = true
}
}
}
]
@HikariKnight
Copy link
Author

you can tell applications to use these channels using pavucontrol or similar applications (wireplumber and pipewire should rememeber these selections)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment