Skip to content

Desktop: the Linux installers ask for GStreamer, which the audio needs - #2

Merged
mcinnisdev merged 1 commit into
mainfrom
desktop-audio-deps
Sep 14, 2026
Merged

mcinnisdev merged 1 commit into
mainfrom
desktop-audio-deps

Conversation

@mcinnisdev

Copy link
Copy Markdown
Owner

Found while running the locally built desktop app: the machine worked perfectly and played nothing. No error, no warning, just silence.

Cause

WebKitGTK has no audio stack of its own — Web Audio and decodeAudioData both run through GStreamer. The element it reaches for is autoaudiosink, which lives in the "good" plugin set. On a box without it:

$ gst-inspect-1.0 autoaudiosink
No such element or plugin 'autoaudiosink'

The browser has its own audio stack, so chopdeck.com is unaffected and this only shows up on the desktop.

What was shipped

bundle.linux.deb.depends was [] and the rpm had none either, so both installers could land on exactly such a machine and hand someone a silent drum machine.

  • .deb now depends on gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-pulseaudio.
  • .rpm now depends on gstreamer1-plugins-base, gstreamer1-plugins-good.
  • webkit2gtk and gtk3 are deliberately not listed: Tauri appends those itself, and naming them again produced a Depends: line with each entry twice.
  • The AppImage already carries its own copies via linuxdeploy-plugin-gstreamer, so it was never affected.

docs/DESKTOP.md now warns that the failure is silent, gives the Arch and Debian install commands, and names gst-inspect-1.0 autoaudiosink as the check.

Testing

Rebuilt the .deb and read the control file back:

Depends: gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-pulseaudio, libwebkit2gtk-4.1-0, libgtk-3-0

Config-only change; no source touched.

🤖 Generated with Claude Code

https://claude.ai/code/session_019U7kCMZc9a7sezDwKKseJy

WebKitGTK has no audio stack of its own. Web Audio and decodeAudioData both
run through GStreamer, and the element it reaches for is `autoaudiosink` from
the "good" plugin set. A Linux box without it runs the machine perfectly and
plays nothing: no error, no warning, just silence, which is a miserable thing
to hand someone who has just installed a drum machine.

The .deb declared no dependencies at all and the .rpm none either, so both
could install onto exactly that. Declare webkit2gtk, gtk3 and the base/good
GStreamer plugins on each. The AppImage already carries its own copies via
linuxdeploy-plugin-gstreamer, so only the bare `cargo build` binary is left
needing the system packages, and DESKTOP.md now says so with the command.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019U7kCMZc9a7sezDwKKseJy
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying chopdeck with  Cloudflare Pages  Cloudflare Pages

Latest commit: ca4a3b7
Status: ✅  Deploy successful!
Preview URL: https://ffa19524.chopdeck.pages.dev
Branch Preview URL: https://desktop-audio-deps.chopdeck.pages.dev

View logs

@mcinnisdev
mcinnisdev merged commit c822dbf into main Sep 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant