Extension to passthrough Pipewire audio to WebRTC Screenshare
Based on virtual-mic and Screenshare-with-audio-on-Discord-with-Linux
You can find us on Matrix
# flake.nix
{
inputs.pipewire-screenaudio.url = "github:IceDBorn/pipewire-screenaudio";
# ...
outputs = {nixpkgs, pipewire-screenaudio, ...} @ inputs: {
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; # this is the important part
modules = [
./configuration.nix
];
};
}
}
# configuration.nix
{inputs, pkgs, ...}: {
environment.systemPackages = with pkgs; [
(firefox.override { extraNativeMessagingHosts = [ inputs.pipewire-screenaudio.packages.${pkgs.system}.default ]; })
# ...
];
}
- gawk
- hexdump
- jq
- pipewire
git clone https://github.com/IceDBorn/pipewire-screenaudio.git
cd pipewire-screenaudio
bash install.sh
- Install the extension
- Optional: Grant extension with access permissions to all sites
- Join a WebRTC call, click the extension icon, select an audio node and share
- Stream, your transmission should contain both audio and video
- You can't stream firefox WebRTC calls at all while using
All Desktop Audio
, they are excluded by default
- privacy.resistFingerprinting (enabled by default in LibreWolf, arkenfox user.js, etc.) breaks the extension. Either disable the preference or add any domains you wish to use Pipewire Screenaudio with to
privacy.resistFingerprinting.exemptedDomains
inabout:config
- This bug exclusively impacts Firefox versions predating 120
- Multiple nodes selection
- More customization options (node matching, watcher behavior etc.)
- Chromium support