Compare commits
9 Commits
v1.0.0-rc.
...
appimage
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
092fbf72b6 | ||
|
|
4d3e77bc9a | ||
|
|
ae57550b46 | ||
|
|
6681c0591a | ||
|
|
8597416bb5 | ||
|
|
ce94b44997 | ||
|
|
2741e1afaa | ||
|
|
b2f5f8e7d0 | ||
|
|
c4c32b1615 |
@@ -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/de.shorsh.discord-screenaudio.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
|
install(PROGRAMS assets/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
|
||||||
install(PROGRAMS assets/de.shorsh.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})
|
||||||
|
|||||||
@@ -1,38 +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.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>
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB |
@@ -2,5 +2,6 @@
|
|||||||
Type=Application
|
Type=Application
|
||||||
Name=discord-screenaudio
|
Name=discord-screenaudio
|
||||||
Exec=discord-screenaudio
|
Exec=discord-screenaudio
|
||||||
Icon=de.shorsh.discord-screenaudio
|
Icon=discord
|
||||||
Terminal=false
|
Terminal=false
|
||||||
|
Categories=Audio;
|
||||||
BIN
assets/discord.png
Normal file
BIN
assets/discord.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
@@ -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.10";
|
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
4
scripts/Dockerfile
Normal 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
32
scripts/build-appimage.sh
Executable 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
37
scripts/prepare-container.sh
Executable 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
|
||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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.10");
|
QApplication::setApplicationVersion("1.0.0-rc.7");
|
||||||
|
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.setApplicationDescription(
|
parser.setApplicationDescription(
|
||||||
|
|||||||
Reference in New Issue
Block a user