Skip to content

Support for Linux (Debian/Ubuntu) #501

Description

@tr33squid

Problem

Steno only ships for macOS (stable) and Windows (alpha). I love using this app on macOS, but i really want to use it on my Linux (Ubuntu 26.04) machines as well.

Proposed solution

Scoped and prototyped this on a Ubuntu 26.04 LTS (GNOME/Wayland, PipeWire) machine. Summary of findings:

  • Backend (Python/CLI) is already Linux-ready. get_user_data_dir(), the parakeet.py platform dispatcher (onnx-asr off-darwin), and stenoai.spec's non-macOS bundling branches already treat Linux the same as Windows. pip install -r requirements.txt and pyinstaller stenoai.spec both succeed on Linux with zero changes.
  • System-audio (loopback) capture — the biggest open question — has a working answer. macOS/Windows capture system audio via getDisplayMedia, which on Linux/Wayland would route through xdg-desktop-portal's ScreenCast picker (a real UX regression — a screen-share dialog just to get audio). Instead: a pw-record subprocess targeting the default sink's monitor, with PCM bridged into the renderer's existing mix graph via MediaStreamTrackGenerator. No portal, no dialog, no new packaged dependency (pw-record ships in Ubuntu's default pipewire-audio stack). Verified end-to-end against the real Electron app: real audio in, real audio in the recorded file out.
  • Packaging: no linux target existed in electron-builder config. Added one (deb + AppImage); both build successfully and the unpacked app launches and runs its full startup sequence against the real bundled backend.
  • CI: added a build-linux.yml mirroring build-windows.yml (PyInstaller backend + Electron build), not yet wired into the release/auto-update pipeline — that's a separate decision once Linux is further along.
  • Found and fixed along the way: scripts/download-ollama.sh's Linux path was broken — Ollama's GitHub releases dropped the .tgz asset in favor of .tar.zst, so the bundled-Ollama download 404's today on Linux.

Diarization (mac-only Swift/CoreML sidecar) and the mic-monitor auto-detect helper (mac-only Swift) stay unavailable on Linux, same as they already are on Windows — not a new gap.

Scope/vision

Fits the existing cross-platform direction (macOS stable, Windows alpha). This would land Linux as a third alpha-tier platform using the same CPU-only ASR path Windows already uses, no new runtime dependencies beyond what a standard Ubuntu desktop already ships.

Status

Prototyping currently on a fork (branch spike/linux-loopback-poc) — system-audio capture, the renderer bridging, packaging config, and the CI workflow are all implemented and were run but holding off on a PR until it's been validated further; this issue tracks the feature so the fork's PR has something to link to.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions