Awesome
<div align="center"> <img src="https://avatars.githubusercontent.com/u/113042587" width="150"> <br/>venmic - screenshare support for pipewire
</div>[!WARNING]
This project is not intended for standalone usage. You need a modified discord client that makes use of this.
📖 Usage
venmic can be used as node-module or as a local rest-server.
The node-module is mainly intended for internal usage by Vesktop. For a usage example, see the following Vesktop source files:
- src/main/venmic.ts
- src/renderer/patches/screenShareFixes.ts
- src/renderer/components/ScreenSharePicker.tsx: 1, 2, 3
The Rest-Server exposes three simple endpoints
-
(POST)
/list
List all available applications to share.
You can optionally define a JSON-Body containing all the props the listed nodes should have (i.e.["node.name"]
). -
(POST)
<blockquote> Expects a JSON-Body in the following form: <pre lang="json"> { "include": [ { "node.name": "Firefox" } ], "exclude": [ { "node.name": "Chrome" } ] "ignore_devices": true, "workaround": [{ "node.name": "Chrome" }] } </pre>/link
Depending on wether or not
include
orexclude
are defined the behavior will change:- only
include
- Links nodes that match given props
- only
exclude
- Links nodes that do not match given props
- both
include
andexclude
- Links all applications that match props in
include
and not those given inexclude
- Links all applications that match props in
The setting
ignore_devices
is optional and will default totrue
.
When enabled it will prevent hardware-devices like speakers and microphones from being linked to the virtual microphone.The setting
only_speakers
is optional and will default totrue
.
When enabled it will prevent linking against nodes that don't play to a speaker.The setting
only_default_speakers
is optional and will default totrue
.
When enabled it will prevent linking against nodes that don't play to the default speaker.The setting
</blockquote>workaround
is also optional and will default to an empty array.
When set, venmic will redirect the first node that matches all of the specified properties to itself. - only
-
(GET)
/unlink
Unlinks the currently linked application
🏗️ Compiling
-
Rest-Server
git clone https://github.com/Vencord/linux-virtmic && cd linux-virtmic cmake -B build && cmake --build build
-
Node-Addon
git clone https://github.com/Vencord/linux-virtmic && cd linux-virtmic pnpm install
🐛 Debugging
When reporting an issue please make sure to set the environment variable VENMIC_ENABLE_LOG
.
If said variable is set venmic will output a lot of useful information to stdout and a log-file which can be found in ~/.local/state/venmic/venmic.log
.
It is highly recommended to include this log file in your issue report otherwise we may not be able to help you!
🤝 Acknowledgements
- Curve/rohrkabel
- cmake-js
- @wwmm for improving compatibility with EasyEffects
Kudos to all the developers involved, keep up the great work!