diff --git a/src/renderer/patches/screenShareAudio.ts b/src/renderer/patches/screenShareAudio.ts index 90320ca..6435718 100644 --- a/src/renderer/patches/screenShareAudio.ts +++ b/src/renderer/patches/screenShareAudio.ts @@ -1,36 +1,45 @@ -const original = navigator.mediaDevices.getDisplayMedia; -async function getVirtmic() { - const getAudioDevice = async (deviceName: string|undefined) => {; - let devices = await navigator.mediaDevices.enumerateDevices(); - let audioDevice = devices.find(({ - label - }) => label === deviceName); - return audioDevice; - } +import { isLinux } from "../utils"; +if (isLinux) { + const original = navigator.mediaDevices.getDisplayMedia; + async function getVirtmic() { + const getAudioDevice = async (deviceName: string|undefined) => {; + let devices = await navigator.mediaDevices.enumerateDevices(); + let audioDevice = devices.find(({ + label + }) => label === deviceName); + return audioDevice; + } - var id: string|undefined; - try { - let myDiscordAudioSink = await getAudioDevice('virtmic'); - id = myDiscordAudioSink?.deviceId; - } - catch (error) { - id = 'default'; - } -return id; -}; -navigator.mediaDevices.getDisplayMedia = async function() { - const id = await getVirtmic(); - const stream = await original.apply(this); - - const audio = await navigator.mediaDevices.getUserMedia({ - audio: { - deviceId: { - exact: id - }, - autoGainControl: false, - echoCancellation: false, - noiseSuppression: false - } }); - audio.getAudioTracks().forEach(t => stream.addTrack(t)); - return stream; -} \ No newline at end of file + var id: string|undefined; + try { + let myDiscordAudioSink = await getAudioDevice('virtmic'); + id = myDiscordAudioSink?.deviceId; + } + catch (error) { + id = 'error'; + } + return id; + }; + navigator.mediaDevices.getDisplayMedia = async function() { + const id = await getVirtmic(); + const stream = await original.apply(this); + if (id !== 'error'){ + const audio = await navigator.mediaDevices.getUserMedia({ + audio: { + deviceId: { + exact: id + }, + autoGainControl: false, + echoCancellation: false, + noiseSuppression: false + } + }); + audio.getAudioTracks().forEach(t => stream.addTrack(t)); + } else { + const audio = await navigator.mediaDevices.getUserMedia({ audio: false }); + + }; + + return stream; + }; +}; \ No newline at end of file diff --git a/src/renderer/utils.ts b/src/renderer/utils.ts index f79718f..967fe88 100644 --- a/src/renderer/utils.ts +++ b/src/renderer/utils.ts @@ -17,3 +17,4 @@ const { platform } = navigator; export const isWindows = platform.startsWith("Win"); export const isMac = platform.startsWith("Mac"); +export const isLinux = platform.startsWith("Linux");