Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/IceDBorn/pipewire-screenaudio
Extension to passthrough pipewire audio to WebRTC Screenshare
https://github.com/IceDBorn/pipewire-screenaudio
audio firefox firefox-addon firefox-extension pipewire screenshare webrtc
Last synced: about 1 month ago
JSON representation
Extension to passthrough pipewire audio to WebRTC Screenshare
- Host: GitHub
- URL: https://github.com/IceDBorn/pipewire-screenaudio
- Owner: IceDBorn
- License: gpl-3.0
- Created: 2023-03-30T12:53:55.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-19T16:18:02.000Z (5 months ago)
- Last Synced: 2024-08-03T09:04:26.357Z (5 months ago)
- Topics: audio, firefox, firefox-addon, firefox-extension, pipewire, screenshare, webrtc
- Language: JavaScript
- Homepage: https://addons.mozilla.org/firefox/addon/pipewire-screenaudio/
- Size: 289 KB
- Stars: 152
- Watchers: 7
- Forks: 4
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Pipewire Screenaudio
Extension to passthrough Pipewire audio to WebRTC Screenshare
Based on [virtual-mic](https://github.com/Curve/rohrkabel/tree/master/examples/virtual-mic) and [Screenshare-with-audio-on-Discord-with-Linux](https://github.com/edisionnano/Screenshare-with-audio-on-Discord-with-Linux)
## Communication
You can find us on [Matrix](https://matrix.to/#/#pipewire-screenaudio:matrix.org)
## Installation
### Packages
[![AUR](https://img.shields.io/aur/version/pipewire-screenaudio?style=for-the-badge)](https://aur.archlinux.org/packages/pipewire-screenaudio)
[![AUR](https://img.shields.io/aur/version/pipewire-screenaudio-git?style=for-the-badge)](https://aur.archlinux.org/packages/pipewire-screenaudio-git)#### NixOS Flakes
```nix
# 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 { nativeMessagingHosts = [ inputs.pipewire-screenaudio.packages.${pkgs.system}.default ]; })
# ...
];
}
```### Installing from Source
#### Requirements
- cargo
- pipewire```bash
git clone https://github.com/IceDBorn/pipewire-screenaudio.git
cd pipewire-screenaudio
bash install.sh
```## Usage
- #### Via the extension
- Install the [extension](https://addons.mozilla.org/firefox/addon/pipewire-screenaudio)
- 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- #### Via the CLI
- **Description:** It's used to manually call the commands that are normally called by the extension. It is meant for troubleshooting, but it could be used for integrating the connector with other apps.
- **Usage:**
```bash
bash native/connector/cli.sh COMMAND ARGUMENTS
```
- **Example:**
```bash
bash native/connector/cli.sh GetNodes
```
```bash
bash native/connector/cli.sh SetSharingNode '{ "micId": 100, "node": 200 }'
```
- **Environment:**
```bash
DEBUG=1 # Set to enable verbose logging
```## Known Problems
- You can't stream firefox WebRTC calls at all while using `All Desktop Audio`, they are excluded by default
### resistFingerprinting
- 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` in `about:config`
### Audio pitching
- This bug exclusively impacts Firefox versions predating 120
## Planned Features
- Multiple nodes selection
- More customization options (node matching, watcher behavior etc.)
- Chromium support