A native Discord integration for StreamController. This plugin communicates directly with the local Discord desktop application over IPC/RPC for real-time, bi-directional state synchronization.
When the Discord desktop application is closed or disconnected, all plugin action keys automatically update to indicate offline status:
- Every action key displays a clear
Disconnectedlabel on its bottom line. - Channel actions (Voice Channel and Text Channel) automatically hide server name top labels while disconnected to maintain a clean visual layout.
- Once the Discord desktop client is launched and connects, the
Disconnectedindicators clear automatically without requiring a StreamController restart.
-
Mute Toggle

Toggles your microphone mute state in Discord. The key icon dynamically updates between muted (mute.png) and unmuted (unmute.png) visual states. -
Deafen Toggle

Toggles your deafen status in Discord. Deafening automatically mutes incoming audio as well as your microphone, mirroring native Discord client behavior. -
Push to Talk

Holds your microphone unmuted while pressed. The key keeps your mic muted during idle state (push_to_talk.png) and switches to an active talking icon (push_to_talk_talking.png) while held down. -
Input Mode Toggle

Switches Discord's input mode setting between Voice Activity (input_voice_activity.png) and Push-to-Talk mode (input_push_to_talk.png) without altering your microphone mute status. -
Soundboard Sound

Select a server and a Discord soundboard sound from action settings, then press the key to play it in your currently connected voice channel. If your Discord RPC build does not expose soundboard commands, the action will show an unsupported status.
-
Voice Channel Switcher

Select a server and voice channel directly from the action settings. Pressing the key connects you to the voice channel, highlights green (voice_channel_active.png) while active, and disconnects when pressed again. Displays the server name as a top label when connected. -
Text Channel Quick Switcher

Select a server and text channel from settings. Pressing the key brings Discord to the foreground and opens that channel immediately. Displays the server name as a top label while online. -
Server Status

Displays the server icon and live online member count badge for your selected Discord server. Pressing the key opens Discord directly to that server.
- Discord Call Mixer (Dial & Touchscreen)

Individual participant volume and mute controller for voice and video calls on Stream Deck + dials and LCD touch strips.- Turn Dial: Adjusts the selected participant's local volume up or down (configurable step size, default 5%, range 0%–200%).
- Press Dial: Toggles local mute for the selected participant.
- Tap LCD: Cycles to the next eligible speaker in the call with permission to speak (automatically filters out suppressed stage audience and bots).
- LCD Strip Display: Shows participant circular avatar (with green speaking glow or red muted ring), display name, counter
[ 2 / 5 ], and graphical volume bar.
- Notification Hub

Tracks unread Direct Messages and server mentions. Displays sender profile avatars along with a red notification count badge. Automatically cycles through pending notification avatars every 5 seconds. Tap the key to open Discord directly to the active DM and dismiss it, or hold the key to clear all notifications. Shows disconnected icon when Discord is closed.
- Open the Discord Developer Portal.
- Click New Application and enter a name (e.g.,
StreamController). - Navigate to the OAuth2 tab.
- Under Redirects, click Add Redirect and enter
http://localhost:9000. - Click Save Changes.
- Open StreamController settings and select Discord Plugin.
- Copy the Client ID from your application's General Information page and paste it into the plugin settings.
- Reset and copy the Client Secret from the OAuth2 page and paste it into the plugin settings.
- Ensure the Redirect URI is set to
http://localhost:9000. - Click Save.
- Ensure your Discord desktop client is open and running.
- Click Authorize in the StreamController Discord plugin settings page.
- Click Authorize in the Discord desktop prompt to grant local IPC permissions.
- The button in StreamController settings will switch to Re-Authorize upon successful pairing.
-
Disconnected Status on Keys:
Ensure Discord is running. If StreamController is running inside a Flatpak container, grant IPC socket permissions using:flatpak override --filesystem=xdg-run/discord-ipc-* com.core447.StreamControllerAlternatively, you can grant the same permission graphically using Flatseal:
- Install Flatseal from Flathub if you haven't already.
- Open Flatseal and select StreamController (
com.core447.StreamController) from the application list. - Scroll to the Filesystem section under Other files.
- Click the + button and enter
xdg-run/discord-ipc-*. - Restart StreamController for the permission to take effect.
-
Authentication Failures:
Confirm that your Client ID, Client Secret, and Redirect URI in StreamController settings match your Discord Developer Portal application settings exactly.
Notice: Plugin was written/updated with assistance of Google Antigravity
