From 9acc6652ff72531194f5159576abcf79845edc84 Mon Sep 17 00:00:00 2001
From: Noah <37805707+Curve@users.noreply.github.com>
Date: Fri, 12 Jul 2024 16:14:18 +0200
Subject: [PATCH] AudioShare: Even more granular selection, Allow device
sharing (#750)
---
src/main/venmic.ts | 2 +-
src/renderer/components/ScreenSharePicker.tsx | 74 ++++++++++++++-----
src/shared/settings.d.ts | 2 +
3 files changed, 60 insertions(+), 18 deletions(-)
diff --git a/src/main/venmic.ts b/src/main/venmic.ts
index 885fd2d..c127e90 100644
--- a/src/main/venmic.ts
+++ b/src/main/venmic.ts
@@ -72,7 +72,7 @@ ipcMain.handle(IpcEvents.VIRT_MIC_LIST, () => {
const { granularSelect } = Settings.store.audio ?? {};
const targets = obtainVenmic()
- ?.list(granularSelect ? ["application.process.id"] : undefined)
+ ?.list(granularSelect ? ["node.name"] : undefined)
.filter(s => s["application.process.id"] !== audioPid);
return targets ? { ok: true, targets, hasPipewirePulse } : { ok: false, isGlibCxxOutdated };
diff --git a/src/renderer/components/ScreenSharePicker.tsx b/src/renderer/components/ScreenSharePicker.tsx
index c7403b9..2055067 100644
--- a/src/renderer/components/ScreenSharePicker.tsx
+++ b/src/renderer/components/ScreenSharePicker.tsx
@@ -254,7 +254,13 @@ function AudioSettingsModal({
(Settings.audio = { ...Settings.audio, ignoreDevices: v })}
+ onChange={v =>
+ (Settings.audio = {
+ ...Settings.audio,
+ ignoreDevices: v,
+ deviceSelect: v ? false : Settings.audio?.deviceSelect
+ })
+ }
value={Settings.audio?.ignoreDevices ?? true}
note={<>Exclude device nodes, such as nodes belonging to microphones or speakers.>}
>
@@ -271,6 +277,23 @@ function AudioSettingsModal({
>
Granular Selection
+ {
+ Settings.audio = { ...Settings.audio, deviceSelect: value };
+ setAudioSources("None");
+ }}
+ value={Settings.audio?.deviceSelect ?? false}
+ disabled={Settings.audio?.ignoreDevices}
+ note={
+ <>
+ Allow to select devices such as microphones. Requires Ignore Devices to be turned
+ off.
+ >
+ }
+ >
+ Device Selection
+