Compare commits
3 Commits
appimage
...
v1.0.0-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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/discord.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
|
||||||
install(FILES assets/discord.png DESTINATION share/pixmaps)
|
install(PROGRAMS assets/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})
|
|
||||||
|
|||||||
55
assets/de.shorsh.discord-screenaudio.metainfo.xml
Normal file
55
assets/de.shorsh.discord-screenaudio.metainfo.xml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?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>
|
||||||
@@ -4,4 +4,3 @@ Name=discord-screenaudio
|
|||||||
Exec=discord-screenaudio
|
Exec=discord-screenaudio
|
||||||
Icon=discord
|
Icon=discord
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Audio;
|
|
||||||
|
|||||||
@@ -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.8";
|
||||||
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.8");
|
||||||
|
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.setApplicationDescription(
|
parser.setApplicationDescription(
|
||||||
|
|||||||
Reference in New Issue
Block a user