Co-authored-by: V <vendicated@riseup.net> Co-authored-by: kaitlynkitty <87152313+kaitlynkittyy@users.noreply.github.com> Co-authored-by: Curve <fynnbwdt@gmail.com>
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
/*
|
|
* SPDX-License-Identifier: GPL-3.0
|
|
* Vesktop, a desktop app aiming to give you a snappier Discord Experience
|
|
* Copyright (c) 2023 Vendicated and Vencord contributors
|
|
*/
|
|
|
|
import { isLinux } from "renderer/utils";
|
|
|
|
if (isLinux) {
|
|
const original = navigator.mediaDevices.getDisplayMedia;
|
|
|
|
async function getVirtmic() {
|
|
try {
|
|
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
const audioDevice = devices.find(({ label }) => label === "vencord-screen-share");
|
|
return audioDevice?.deviceId;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
navigator.mediaDevices.getDisplayMedia = async function (opts) {
|
|
const stream = await original.call(this, opts);
|
|
const id = await getVirtmic();
|
|
|
|
if (id) {
|
|
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;
|
|
};
|
|
}
|