Warning
Deprecation Notice
This project isn't actively maintained anymore. Reasons are me not having
enough time to work on it, some fundamental issues (like hardware acceleration
problems caused by QtWebEngine), and the fact that there are now better
alternatives which make me not want to duplicate efforts. I mainly recommend
using and contributing to Vesktop as an
alternative Discord client with great audio screensharing support, but a list
of other alternatives can be found below. You can of course
still continue to use discord-screenaudio if it works for you.
A custom discord client that supports streaming with audio on Linux, made possible by the great work of @edisionnano and the Rohrkabel library by @Curve.
Unlike a lot of other solutions, the audio here is directly fed into the screenshare and not passed to the user microphone (see explanation).
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.
Technically this could be against Discord's TOS, 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.
- Only works with PipeWire
- Can only share primary screen on X11 (no other screens or specific applications) (see #1)
If you have problems with this client, you can also try one of these alternatives which work in a similar way:
- Vesktop - The Vencord desktop client, which, in addition to allowing you to stream audio, also has propper plugin and theming support.
- pipewire-screenaudio - Firefox extension which allows all websites (including Discord) to stream audio.
- WebCord - Another simple third-party Discord client, which allows you to share the whole desktop audio through new Electron functionality.
- Google Chrome - Chrome has recently added support for sharing another Chrome tab, including audio. This should also cover a lot of usecases for sharing screen audio.
- Screenshare-with-audio-on-Discord-with-Linux Userscript and manual instructions on how to stream audio in Discord with Chrome or Firefox.
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
from the AUR - If you are on openSUSE, you can use the Open Build Service package by @VortexAcherontic
- You can build it yourself
- Basic building tools
- An up-to-date system (I can't guarantee that it works on Debian or Ubuntu 20/21)
- CMake
- Qt5 and QtWebEngine
- PipeWire (it currently doesn't work with PulseAudio)
- Git
- Kf5Notifications (optional, for better notifications)
- KXMLGui and KGlobalAccel (optional, for keybinds)
With apt:
apt install -y build-essential cmake qtbase5-dev qtwebengine5-dev libkf5notifications-dev libkf5xmlgui-dev libkf5globalaccel-dev pkg-config libpipewire-0.3-dev git
With dnf:
dnf install @development-tools cmake qt5-qtbase-devel qt5-qtwebengine-devel kf5-knotifications-devel kf5-kxmlgui-devel kf5-kglobalaccel-devel pkgconfig pipewire-devel git
First, clone the repository:
git clone https://github.com/maltejur/discord-screenaudio.git
cd discord-screenaudio
Then, to build the program, run this in the source directory:
cmake -B build
cmake --build build --config Release
And then to optionally install it, run:
sudo cmake --install build
This whole project is based on this repository, which very nicely explains how to stream audio in the web version of Discord. Basically: a virtual microphone is created which captures the application audio, and this microphone is then fed to the Discord stream by intercepting a API call of Discord.
This is due to sandboxing limitations of Flatpak. The main Discord Flatpak has the same problem. If you still want to use drag and drop, you can disable most of Flatpak's sandboxing by installing Flatseal and allowing access to "All system files" under the "Filesystem" section.
Yes, you can add all your styles into
~/.config/discord-screenaudio/userstyles.css
(or
~/.var/app/de.shorsh.discord-screenaudio/config/discord-screenaudio/userstyles.css
if you are using the Flatpak). But please note that due to QtWebEngine
limitations concerning content security policies, you can't use any external
files (like @import
or url()
).
Copyright (C) 2022 Malte Jürgens
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.