Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7e6c5d82b | ||
|
|
ee0c66762d | ||
|
|
c3483a42db | ||
|
|
d68797cebb | ||
|
|
ef221d4574 | ||
|
|
3fa2e3fa3c |
@@ -18,6 +18,12 @@ find_package(Qt5 CONFIG REQUIRED COMPONENTS
|
||||
WebEngineWidgets
|
||||
)
|
||||
|
||||
option(KF5NOTIFICATIONS "Use KF5Notifications for enhanced system notifications" ON)
|
||||
if(KF5NOTIFICATIONS)
|
||||
add_definitions( -DKF5NOTIFICATIONS )
|
||||
find_package(KF5Notifications)
|
||||
endif()
|
||||
|
||||
set(discord-screenaudio_SRC
|
||||
src/main.cpp
|
||||
src/mainwindow.cpp
|
||||
@@ -52,6 +58,11 @@ add_executable(discord-screenaudio ${discord-screenaudio_SRC})
|
||||
|
||||
target_link_libraries(discord-screenaudio Qt5::Widgets Qt5::WebEngineWidgets rohrkabel)
|
||||
|
||||
if(KF5NOTIFICATIONS)
|
||||
target_link_libraries(discord-screenaudio KF5::Notifications)
|
||||
install(FILES assets/discord-screenaudio.notifyrc DESTINATION ${CMAKE_INSTALL_PREFIX}/share/knotifications5)
|
||||
endif()
|
||||
|
||||
install(TARGETS discord-screenaudio DESTINATION bin)
|
||||
install(FILES assets/de.shorsh.discord-screenaudio.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/256x256/apps)
|
||||
install(PROGRAMS assets/de.shorsh.discord-screenaudio.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
|
||||
|
||||
28
README.md
28
README.md
@@ -15,18 +15,30 @@ 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.
|
||||
|
||||
Technically this could be against
|
||||
[Discord's TOS](https://discord.com/terms#software-in-discord%E2%80%99s-services),
|
||||
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.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- Only works with **PipeWire**
|
||||
- Only works on **X11**
|
||||
- Can only share primary screen (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
|
||||
|
||||
If you are using Arch, you can build and install
|
||||
[from the AUR](https://aur.archlinux.org/packages/discord-screenaudio). If you
|
||||
aren't, you will have to [build it yourself](#building-from-source).
|
||||
You have multiple options:
|
||||
|
||||
- Install the Flatpak (recommended):
|
||||
`flatpak install de.shorsh.discord-screenaudio`
|
||||
- If you are on Arch, you can build and install
|
||||
[`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)
|
||||
by [@VortexAcherontic](https://github.com/VortexAcherontic)
|
||||
- You can [build it yourself](#building-from-source)
|
||||
|
||||
## Building from Source
|
||||
|
||||
@@ -34,12 +46,12 @@ aren't, you will have to [build it yourself](#building-from-source).
|
||||
|
||||
- Basic building tools
|
||||
- CMake
|
||||
- Qt5 and QtWebEngine
|
||||
- Qt5, QtWebEngine and Kf5Notifications
|
||||
- **PipeWire** (it currently doesn't work with PulseAudio)
|
||||
- Git
|
||||
|
||||
On Debian:
|
||||
`apt install -y build-essential cmake qtbase5-dev qtwebengine5-dev pkg-config libpipewire-0.3-dev git`
|
||||
`apt install -y build-essential cmake qtbase5-dev qtwebengine5-dev libkf5notifications-dev pkg-config libpipewire-0.3-dev git`
|
||||
|
||||
### Building
|
||||
|
||||
|
||||
8
assets/discord-screenaudio.notifyrc
Normal file
8
assets/discord-screenaudio.notifyrc
Normal file
@@ -0,0 +1,8 @@
|
||||
[Global]
|
||||
IconName=de.shorsh.discord-screenaudio
|
||||
Name=discord-screenaudio
|
||||
DesktopEntry=de.shorsh.discord-screenaudio.desktop
|
||||
|
||||
[Event/discordNotification]
|
||||
Name=Discord Notification
|
||||
Action=Popup
|
||||
@@ -10,6 +10,7 @@ int main(int argc, char *argv[]) {
|
||||
QApplication::setWindowIcon(
|
||||
QIcon(":assets/de.shorsh.discord-screenaudio.png"));
|
||||
QApplication::setApplicationVersion(DISCORD_SCEENAUDIO_VERSION_FULL);
|
||||
QApplication::setDesktopFileName("de.shorsh.discord-screenaudio");
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(
|
||||
@@ -29,6 +30,10 @@ int main(int argc, char *argv[]) {
|
||||
Virtmic::start(parser.value(virtmicOption));
|
||||
}
|
||||
|
||||
qputenv("QTWEBENGINE_CHROMIUM_FLAGS",
|
||||
"--enable-features=WebRTCPipeWireCapturer " +
|
||||
qgetenv("QTWEBENGINE_CHROMIUM_FLAGS"));
|
||||
|
||||
MainWindow w;
|
||||
w.show();
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#include "mainwindow.h"
|
||||
#include "virtmic.h"
|
||||
|
||||
#ifdef KF5NOTIFICATIONS
|
||||
#include <KNotification>
|
||||
#endif
|
||||
|
||||
#include <QApplication>
|
||||
#include <QColor>
|
||||
#include <QComboBox>
|
||||
@@ -11,6 +15,8 @@
|
||||
#include <QSpacerItem>
|
||||
#include <QThread>
|
||||
#include <QUrl>
|
||||
#include <QWebEngineNotification>
|
||||
#include <QWebEngineProfile>
|
||||
#include <QWebEngineScript>
|
||||
#include <QWebEngineScriptCollection>
|
||||
#include <QWebEngineSettings>
|
||||
@@ -30,6 +36,23 @@ void MainWindow::setupWebView() {
|
||||
m_webView = new QWebEngineView(this);
|
||||
m_webView->setPage(page);
|
||||
|
||||
#ifdef KF5NOTIFICATIONS
|
||||
QWebEngineProfile::defaultProfile()->setNotificationPresenter(
|
||||
[&](std::unique_ptr<QWebEngineNotification> notificationInfo) {
|
||||
KNotification *notification = new KNotification("discordNotification");
|
||||
notification->setTitle(notificationInfo->title());
|
||||
notification->setText(notificationInfo->message());
|
||||
notification->setPixmap(QPixmap::fromImage(notificationInfo->icon()));
|
||||
notification->setDefaultAction("View");
|
||||
connect(notification, &KNotification::defaultActivated,
|
||||
[&, notificationInfo = std::move(notificationInfo)]() {
|
||||
notificationInfo->click();
|
||||
activateWindow();
|
||||
});
|
||||
notification->sendEvent();
|
||||
});
|
||||
#endif
|
||||
|
||||
setCentralWidget(m_webView);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user