Compare commits

..

9 Commits

Author SHA1 Message Date
Malte Jürgens
092fbf72b6 bump version 2022-07-27 21:25:24 +02:00
Malte Jürgens
4d3e77bc9a Merge branch 'master' into appimage 2022-07-27 21:24:54 +02:00
Malte Jürgens
ae57550b46 Merge branch 'master' into appimage 2022-07-27 20:45:16 +02:00
Malte Jürgens
6681c0591a Merge branch 'master' into appimage 2022-07-17 19:43:36 +02:00
Malte Jürgens
8597416bb5 still not working 2022-07-16 22:28:16 +02:00
Malte Jürgens
ce94b44997 almost working 2022-07-16 22:03:33 +02:00
Malte Jürgens
2741e1afaa muh working 2022-07-16 20:41:26 +02:00
Malte Jürgens
b2f5f8e7d0 not working but better 2022-07-16 19:09:11 +02:00
Malte Jürgens
c4c32b1615 it doesnt work 2022-07-13 22:00:30 +02:00
10 changed files with 95 additions and 80 deletions

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.11)
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(discord-screenaudio_SRC set(${CMAKE_PROJECT_NAME}_SRC
src/main.cpp src/main.cpp
src/mainwindow.cpp src/mainwindow.cpp
src/virtmic.cpp src/virtmic.cpp
@@ -43,11 +43,12 @@ endif()
add_subdirectory(submodules/rohrkabel) add_subdirectory(submodules/rohrkabel)
add_executable(discord-screenaudio ${discord-screenaudio_SRC}) add_executable(${CMAKE_PROJECT_NAME} ${${CMAKE_PROJECT_NAME}_SRC})
target_link_libraries(discord-screenaudio Qt5::Widgets Qt5::WebEngineWidgets rohrkabel) target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets Qt5::WebEngineWidgets rohrkabel)
install(TARGETS discord-screenaudio DESTINATION bin) install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin)
install(PROGRAMS assets/discord.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps) install(PROGRAMS assets/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
install(PROGRAMS assets/discord-screenaudio.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications) install(FILES assets/discord.png DESTINATION share/pixmaps)
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})

View File

@@ -1,55 +0,0 @@
<?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.8" />
</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
<a href="https://github.com/edisionnano/Screenshare-with-audio-on-Discord-with-Linux" >
great work
</a>
of <a href="https://github.com/edisionnano">@edisionnano</a> and the
<a href="https://github.com/Soundux/rohrkabel">Rohrkabel</a> library by
<a href="https://github.com/Curve">@Curve</a>.
</p>
<p>
The purpose of this project is
<b>not</b>
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>

View File

@@ -4,3 +4,4 @@ Name=discord-screenaudio
Exec=discord-screenaudio Exec=discord-screenaudio
Icon=discord Icon=discord
Terminal=false Terminal=false
Categories=Audio;

View File

@@ -81,16 +81,11 @@ setInterval(() => {
}); });
hiddenElements.length = 0; hiddenElements.length = 0;
} else { } else {
for (const el of [ for (const el of document.querySelectorAll(
document.getElementsByClassName("actionButtons-2vEOUh")?.[0]?.children[1], '[aria-label="Share Your Screen"]'
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");
@@ -122,7 +117,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.8"; aboutEl.innerText = "discord-screenaudio v1.0.0-rc.7 (AppImage)";
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");

4
scripts/Dockerfile Normal file
View File

@@ -0,0 +1,4 @@
FROM debian:11
ADD ./prepare-container.sh /tmp/prepare-container.sh
RUN /tmp/prepare-container.sh
WORKDIR /work

32
scripts/build-appimage.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/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

37
scripts/prepare-container.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/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

View File

@@ -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,11 +78,10 @@ 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) {
qDebug() << url; // if (type == QWebEnginePage::NavigationTypeLinkClicked) {
if (type == QWebEnginePage::NavigationTypeLinkClicked) { // QDesktopServices::openUrl(url);
QDesktopServices::openUrl(url); // return false;
return false; // }
}
return true; return true;
}; };

View File

@@ -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.8"); QApplication::setApplicationVersion("1.0.0-rc.7");
QCommandLineParser parser; QCommandLineParser parser;
parser.setApplicationDescription( parser.setApplicationDescription(

1
version Normal file
View File

@@ -0,0 +1 @@
v1.0.0-rc.7