Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4f6c33f9d | ||
|
|
758ffa8cb5 | ||
|
|
753da8b1d3 | ||
|
|
5f37ab314f |
@@ -18,10 +18,9 @@ find_package(Qt5 CONFIG REQUIRED COMPONENTS
|
||||
WebEngineWidgets
|
||||
)
|
||||
|
||||
option(KF5NOTIFICATIONS "Use KF5Notifications for enhanced system notifications" ON)
|
||||
if(KF5NOTIFICATIONS)
|
||||
add_definitions( -DKF5NOTIFICATIONS )
|
||||
find_package(KF5Notifications)
|
||||
find_package(KF5Notifications)
|
||||
if(KF5Notifications_FOUND)
|
||||
add_definitions( -DKNOTIFICATIONS )
|
||||
endif()
|
||||
|
||||
set(discord-screenaudio_SRC
|
||||
@@ -59,7 +58,7 @@ add_executable(discord-screenaudio ${discord-screenaudio_SRC})
|
||||
|
||||
target_link_libraries(discord-screenaudio Qt5::Widgets Qt5::WebEngineWidgets rohrkabel)
|
||||
|
||||
if(KF5NOTIFICATIONS)
|
||||
if(KF5Notifications_FOUND)
|
||||
target_link_libraries(discord-screenaudio KF5::Notifications)
|
||||
install(FILES assets/discord-screenaudio.notifyrc DESTINATION ${CMAKE_INSTALL_PREFIX}/share/knotifications5)
|
||||
endif()
|
||||
|
||||
15
README.md
15
README.md
@@ -1,12 +1,16 @@
|
||||
# discord-screenaudio
|
||||
|
||||
A very WIP custom discord client that supports streaming with audio on Linux,
|
||||
made possible by the
|
||||
A custom discord client that supports streaming with audio on Linux, made
|
||||
possible by the
|
||||
[great work](https://github.com/edisionnano/Screenshare-with-audio-on-Discord-with-Linux)
|
||||
of [@edisionnano](https://github.com/edisionnano) and the
|
||||
[Rohrkabel library](https://github.com/Soundux/rohrkabel) by
|
||||
[@Curve](https://github.com/Curve).
|
||||
|
||||
Unlike a lot of other solutions, the audio here is directly fed into the
|
||||
screenshare and not passed to the user microphone
|
||||
([see explanation](#how-it-works)).
|
||||
|
||||

|
||||
|
||||
The purpose of this project is **not** to provide an alternative to the original
|
||||
@@ -23,8 +27,9 @@ told you and it's not my fault.
|
||||
## Known Issues
|
||||
|
||||
- Only works with **PipeWire**
|
||||
- Can only share primary screen on X11 (no other screens or specific applications)
|
||||
(see [#1](https://github.com/maltejur/discord-screenaudio/issues/1))
|
||||
- Can only share primary screen on X11 (no other screens or specific
|
||||
applications) (see
|
||||
[#1](https://github.com/maltejur/discord-screenaudio/issues/1))
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -36,7 +41,7 @@ You have multiple options:
|
||||
[`discord-screenaudio`](https://aur.archlinux.org/packages/discord-screenaudio)
|
||||
from the AUR
|
||||
- If you are on openSUSE, you can use the
|
||||
[Open Build Service package](https://software.opensuse.org/download.html?project=home%3AVortexAcherontic&package=discord-screenaudio)
|
||||
[Open Build Service package](https://software.opensuse.org//download.html?project=games%3Atools&package=discord-screenaudio)
|
||||
by [@VortexAcherontic](https://github.com/VortexAcherontic)
|
||||
- You can [build it yourself](#building-from-source)
|
||||
|
||||
|
||||
@@ -8,14 +8,18 @@
|
||||
<release version="${DISCORD_SCEENAUDIO_VERSION_FULL}" timestamp="${TIMESTAMP}" />
|
||||
</releases>
|
||||
|
||||
<summary>A very WIP custom discord client that supports streaming with audio on Linux</summary>
|
||||
<summary>A custom discord client that supports streaming with audio on Linux</summary>
|
||||
|
||||
<description>
|
||||
<p>A very WIP custom discord client that supports streaming with audio on Linux, made possible by the great work of @edisionnano and the Rohrkabel library by @Curve.</p>
|
||||
<p>A custom discord client that supports streaming with audio on Linux, made possible by the great work of @edisionnano and the Rohrkabel library by @Curve.</p>
|
||||
<p>Unlike a lot of other solutions, the audio here is directly fed into the screenshare and not passed to the user microphone.</p>
|
||||
<p>The purpose of this project is not to provide an alternative to the original Discord client. Rather, it should be used in addition to the original client in case you want to stream something, maybe used with a second account. For anything else, this client has way too many things that work less well than in the original client.</p>
|
||||
<p>Technically this could be against Discord's TOS, so be warned. Discord probably won't ban you for using this, but if they do I told you and it's not my fault.</p>
|
||||
<p>Known issues:</p>
|
||||
<ul><li>Only works with PipeWire</li><li>Can only share primary screen on X11</li></ul>
|
||||
<ul>
|
||||
<li>Only works with PipeWire</li>
|
||||
<li>Can only share primary screen on X11</li>
|
||||
</ul>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">
|
||||
|
||||
@@ -112,6 +112,7 @@ setInterval(() => {
|
||||
const initialDisplay = el.style.display;
|
||||
|
||||
window.discordScreenaudioStartStream = (width, height, frameRate) => {
|
||||
window.discordScreenaudioResolutionString = `${height}p ${frameRate}FPS`;
|
||||
setGetDisplayMedia({
|
||||
audio: true,
|
||||
video: { width, height, frameRate },
|
||||
@@ -147,6 +148,14 @@ setInterval(() => {
|
||||
// Remove stream settings if stream is active
|
||||
document.getElementById("manage-streams-change-windows")?.remove();
|
||||
document.querySelector(`[aria-label="Stream Settings"]`)?.remove();
|
||||
|
||||
if (window.discordScreenaudioResolutionString) {
|
||||
for (const el of document.getElementsByClassName(
|
||||
"qualityIndicator-39wQDy"
|
||||
)) {
|
||||
el.innerHTML = window.discordScreenaudioResolutionString;
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
|
||||
// Fix for broken discord notifications after restart
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "mainwindow.h"
|
||||
#include "virtmic.h"
|
||||
|
||||
#ifdef KF5NOTIFICATIONS
|
||||
#ifdef KNOTIFICATIONS
|
||||
#include <KNotification>
|
||||
#endif
|
||||
|
||||
@@ -36,7 +36,7 @@ void MainWindow::setupWebView() {
|
||||
m_webView = new QWebEngineView(this);
|
||||
m_webView->setPage(page);
|
||||
|
||||
#ifdef KF5NOTIFICATIONS
|
||||
#ifdef KNOTIFICATIONS
|
||||
QWebEngineProfile::defaultProfile()->setNotificationPresenter(
|
||||
[&](std::unique_ptr<QWebEngineNotification> notificationInfo) {
|
||||
KNotification *notification = new KNotification("discordNotification");
|
||||
|
||||
Reference in New Issue
Block a user