Compare commits
7 Commits
appimage
...
v1.0.0-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
88b129f863 | ||
|
|
f4fc2e1f19 | ||
|
|
e1b35e3ca8 | ||
|
|
a773795e38 | ||
|
|
c8695ca5ff | ||
|
|
bc23d3423a | ||
|
|
f5217dfdfa |
@@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.11)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
project(discord-screenaudio)
|
project(discord-screenaudio)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
@@ -13,7 +13,7 @@ find_package(Qt5 CONFIG REQUIRED COMPONENTS
|
|||||||
WebEngineWidgets
|
WebEngineWidgets
|
||||||
)
|
)
|
||||||
|
|
||||||
set(${CMAKE_PROJECT_NAME}_SRC
|
set(discord-screenaudio_SRC
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
src/mainwindow.cpp
|
src/mainwindow.cpp
|
||||||
src/virtmic.cpp
|
src/virtmic.cpp
|
||||||
@@ -43,12 +43,11 @@ endif()
|
|||||||
|
|
||||||
add_subdirectory(submodules/rohrkabel)
|
add_subdirectory(submodules/rohrkabel)
|
||||||
|
|
||||||
add_executable(${CMAKE_PROJECT_NAME} ${${CMAKE_PROJECT_NAME}_SRC})
|
add_executable(discord-screenaudio ${discord-screenaudio_SRC})
|
||||||
|
|
||||||
target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets Qt5::WebEngineWidgets rohrkabel)
|
target_link_libraries(discord-screenaudio Qt5::Widgets Qt5::WebEngineWidgets rohrkabel)
|
||||||
|
|
||||||
install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin)
|
install(TARGETS discord-screenaudio DESTINATION bin)
|
||||||
install(PROGRAMS assets/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
|
install(PROGRAMS assets/de.shorsh.discord-screenaudio.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
|
||||||
install(FILES assets/discord.png DESTINATION share/pixmaps)
|
install(PROGRAMS assets/de.shorsh.discord-screenaudio.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
|
||||||
|
install(PROGRAMS assets/de.shorsh.discord-screenaudio.metainfo.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo)
|
||||||
add_custom_target(appimage ${CMAKE_SOURCE_DIR}/scripts/build-appimage.sh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
||||||
|
|||||||
@@ -2,6 +2,5 @@
|
|||||||
Type=Application
|
Type=Application
|
||||||
Name=discord-screenaudio
|
Name=discord-screenaudio
|
||||||
Exec=discord-screenaudio
|
Exec=discord-screenaudio
|
||||||
Icon=discord
|
Icon=de.shorsh.discord-screenaudio
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Audio;
|
|
||||||
38
assets/de.shorsh.discord-screenaudio.metainfo.xml
Normal file
38
assets/de.shorsh.discord-screenaudio.metainfo.xml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="desktop-application">
|
||||||
|
<id>de.shorsh.discord-screenaudio</id>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>GPL-3.0+</project_license>
|
||||||
|
<name>discord-screenaudio</name>
|
||||||
|
<releases>
|
||||||
|
<release version="v1.0.0-rc.10" />
|
||||||
|
</releases>
|
||||||
|
|
||||||
|
<summary>
|
||||||
|
A very WIP 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>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>
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<launchable type="desktop-id">
|
||||||
|
discord-screenaudio.desktop
|
||||||
|
</launchable>
|
||||||
|
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<image>
|
||||||
|
https://user-images.githubusercontent.com/48161361/179571245-11ea05f3-fb5e-4aef-9132-2736e122ef04.png
|
||||||
|
</image>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
|
||||||
|
<url type="homepage">https://github.com/maltejur/discord-screenaudio</url>
|
||||||
|
|
||||||
|
<provides>
|
||||||
|
<binary>discord-screenaudio</binary>
|
||||||
|
</provides>
|
||||||
|
</component>
|
||||||
BIN
assets/de.shorsh.discord-screenaudio.png
Normal file
BIN
assets/de.shorsh.discord-screenaudio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.8 KiB |
@@ -81,11 +81,16 @@ setInterval(() => {
|
|||||||
});
|
});
|
||||||
hiddenElements.length = 0;
|
hiddenElements.length = 0;
|
||||||
} else {
|
} else {
|
||||||
for (const el of document.querySelectorAll(
|
for (const el of [
|
||||||
'[aria-label="Share Your Screen"]'
|
document.getElementsByClassName("actionButtons-2vEOUh")?.[0]?.children[1],
|
||||||
)) {
|
document.querySelector(
|
||||||
|
".wrapper-3t3Yqv > div > div > div > div > .controlButton-2PMNom"
|
||||||
|
),
|
||||||
|
]) {
|
||||||
|
if (!el) continue;
|
||||||
|
if (el.classList.contains("discord-screenaudio-cloned")) continue;
|
||||||
|
el.classList.add("discord-screenaudio-cloned");
|
||||||
elClone = el.cloneNode(true);
|
elClone = el.cloneNode(true);
|
||||||
elClone.ariaLabel = "Share Your Screen with Audio";
|
|
||||||
elClone.title = "Share Your Screen with Audio";
|
elClone.title = "Share Your Screen with Audio";
|
||||||
elClone.addEventListener("click", () => {
|
elClone.addEventListener("click", () => {
|
||||||
console.log("!discord-screenaudio-start-stream");
|
console.log("!discord-screenaudio-start-stream");
|
||||||
@@ -117,7 +122,7 @@ setInterval(() => {
|
|||||||
) {
|
) {
|
||||||
for (const el of document.getElementsByClassName("info-3pQQBb")) {
|
for (const el of document.getElementsByClassName("info-3pQQBb")) {
|
||||||
const aboutEl = document.createElement("div");
|
const aboutEl = document.createElement("div");
|
||||||
aboutEl.innerText = "discord-screenaudio v1.0.0-rc.7 (AppImage)";
|
aboutEl.innerText = "discord-screenaudio v1.0.0-rc.10";
|
||||||
aboutEl.style.fontSize = "12px";
|
aboutEl.style.fontSize = "12px";
|
||||||
aboutEl.style.color = "var(--text-muted)";
|
aboutEl.style.color = "var(--text-muted)";
|
||||||
aboutEl.classList.add("dirscordScreenaudioAboutText");
|
aboutEl.classList.add("dirscordScreenaudioAboutText");
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
FROM debian:11
|
|
||||||
ADD ./prepare-container.sh /tmp/prepare-container.sh
|
|
||||||
RUN /tmp/prepare-container.sh
|
|
||||||
WORKDIR /work
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Check if inside of docker container
|
|
||||||
if [ ! -f /.dockerenv ]; then
|
|
||||||
# Check if docker is available
|
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
|
||||||
echo "Error: Docker is not available."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
docker run --rm -u $(id -u) -v "$PWD":/work discord-screenaudio-buildenv bash /work/scripts/build-appimage.sh
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmpdir="$(mktemp -d)"
|
|
||||||
builddir="$tmpdir/build"
|
|
||||||
appdir="$tmpdir/AppDir"
|
|
||||||
export CMAKE_GENERATOR="Ninja"
|
|
||||||
cmake -B "$builddir" -S "$PWD"
|
|
||||||
cmake --build "$builddir" --config Release
|
|
||||||
DESTDIR="$appdir" cmake --install "$builddir" --prefix "/usr"
|
|
||||||
# Include libnss related files
|
|
||||||
mkdir -p "$appdir/AppDir/usr/lib/"
|
|
||||||
cp -rv "/usr/lib/x86_64-linux-gnu/nss" "$appdir/usr/lib/"
|
|
||||||
|
|
||||||
VERSION="$(cat version)" linuxdeploy \
|
|
||||||
--appdir "$appdir" \
|
|
||||||
--icon-file "assets/discord.png" \
|
|
||||||
--plugin qt \
|
|
||||||
--exclude-library "libpipewire-0.3.so.0" \
|
|
||||||
--output appimage
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
if [ ! -f /.dockerenv ]; then
|
|
||||||
# Check if docker is available
|
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
|
||||||
echo "Error: Docker is not available."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
docker build -t discord-screenaudio-buildenv .
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "-> Installing dependencies with apt..."
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y curl build-essential qtbase5-dev qtwebengine5-dev qt5-qmake cmake ninja-build pkg-config git libpipewire-0.3-dev file
|
|
||||||
|
|
||||||
echo "-> Installing linuxdeploy..."
|
|
||||||
tmpdir="$(mktemp -d)"
|
|
||||||
install_appimage() {
|
|
||||||
curl -Lo "$tmpdir/$1.AppImage" "$2"
|
|
||||||
chmod +x "$tmpdir/$1.AppImage"
|
|
||||||
sed '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' -i -i "$tmpdir/$1.AppImage"
|
|
||||||
(cd "$tmpdir" && ./$1.AppImage --appimage-extract)
|
|
||||||
mv -v "$tmpdir/squashfs-root" "/opt/$1"
|
|
||||||
ln -sv "/opt/$1/AppRun" "/usr/local/bin/$1"
|
|
||||||
}
|
|
||||||
install_appimage "linuxdeploy" "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
|
|
||||||
install_appimage "linuxdeploy-plugin-qt" "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
|
|
||||||
|
|
||||||
echo "-> Cleaning up..."
|
|
||||||
rm -rf "$tmpdir"
|
|
||||||
rm /tmp/prepare-container.sh
|
|
||||||
apt-get clean
|
|
||||||
@@ -37,7 +37,7 @@ DiscordPage::DiscordPage(QWidget *parent) : QWebEnginePage(parent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DiscordPage::injectScript(QString source) {
|
void DiscordPage::injectScript(QString source) {
|
||||||
qDebug() << "[main ] Injecting" << source;
|
qDebug() << "[main ] Injecting " << source;
|
||||||
|
|
||||||
QFile userscript(source);
|
QFile userscript(source);
|
||||||
|
|
||||||
@@ -78,10 +78,11 @@ void DiscordPage::featurePermissionRequested(const QUrl &securityOrigin,
|
|||||||
bool DiscordPage::acceptNavigationRequest(const QUrl &url,
|
bool DiscordPage::acceptNavigationRequest(const QUrl &url,
|
||||||
QWebEnginePage::NavigationType type,
|
QWebEnginePage::NavigationType type,
|
||||||
bool isMainFrame) {
|
bool isMainFrame) {
|
||||||
// if (type == QWebEnginePage::NavigationTypeLinkClicked) {
|
qDebug() << url;
|
||||||
// QDesktopServices::openUrl(url);
|
if (type == QWebEnginePage::NavigationTypeLinkClicked) {
|
||||||
// return false;
|
QDesktopServices::openUrl(url);
|
||||||
// }
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QApplication::setApplicationName("discord-screenaudio");
|
QApplication::setApplicationName("discord-screenaudio");
|
||||||
QApplication::setApplicationVersion("1.0.0-rc.7");
|
QApplication::setApplicationVersion("1.0.0-rc.10");
|
||||||
|
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.setApplicationDescription(
|
parser.setApplicationDescription(
|
||||||
|
|||||||
Reference in New Issue
Block a user