Skip to content

Latest commit

 

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fadrio — your apps, your sound; a simple application mixer for Linux

A Linux volume mixer that controls applications—not raw audio streams.

License: GPL-3.0-or-later Latest release Platform: Linux .NET 10 Status: public alpha

Fadrio resolves PipeWire playback nodes into stable logical applications and groups every session owned by an application behind one mixer target. Three browser streams should look like one Brave or Firefox control—not three nodes, renderer processes, or PIDs.

Important

Fadrio is a source-only public alpha, not an end-user release. No supported binary package is published yet. Basic identity persistence and live application controls exist, but durable mixer policies, MIDI control, output control, and the finished interface are not implemented. Initial Steam/Proton identification requires corroborating local process, compatibility-directory, and installed-manifest evidence.

What works today

  • Native PipeWire registry connection and playback-node events.
  • Versioned C ABI with copied, serialized managed events.
  • Linux /proc and automatically refreshed XDG desktop-entry identity resolution.
  • Deterministic multi-evidence scoring with safe conflict fallback.
  • Flatpak-first canonical identity from bounded sandbox metadata and exported desktop entries.
  • Optional Snap identity from corroborated wrapper metadata, without a Snap runtime dependency.
  • Secure local PNG icon resolution with trusted-root checks and a bounded XDG cache.
  • Stable fallback identities that never use PID.
  • Multi-session application grouping and application-wide volume/mute commands.
  • Managed reconnect supervision with generation isolation.
  • Diagnostic CLI, SQLite-backed identity overrides, and the first live Avalonia application rows with volume and mute controls.

Architecture

PipeWire sessions
    ↓
Application identity resolver
    ↓
Logical applications
    ↓
Mixer state
    ↓
UI / MIDI / CLI / D-Bus

The complete product contract is in TECH_SPEC.md. Start with the shorter architecture overview when contributing.

Planning is tracked in the canonical ROADMAP.md and mirrored to the Fadrio Roadmap GitHub Project. Alpha source snapshots and their checksums are published on GitHub Releases.

Build

Install the dependencies in the Linux setup guide, then run:

./scripts/build.sh
./scripts/test.sh

Inspect current logical applications:

dotnet run --project src/Fadrio.Cli -- apps --watch

Inspect one application's resolver evidence and raw audio sessions explicitly:

dotnet run --project src/Fadrio.Cli -- inspect xdg:org.mozilla.firefox
dotnet run --project src/Fadrio.Cli -- inspect xdg:org.mozilla.firefox --redacted

Use --redacted before sharing output. The ordinary application list intentionally omits process IDs and raw node details.

Application names and icons can be overridden persistently from the CLI:

dotnet run --project src/Fadrio.Cli -- profile name xdg:firefox "My browser"
dotnet run --project src/Fadrio.Cli -- profile icon xdg:firefox firefox
dotnet run --project src/Fadrio.Cli -- profile clear xdg:firefox

The override appears in subsequent apps output while the canonical ID remains unchanged.

Launch the in-development mixer with dotnet run --project src/Fadrio.UI. Its application rows reflect the live PipeWire snapshot and use the same application-wide volume/mute command path as the CLI. Output-device controls, icons, tray behavior, and UI polish remain on the roadmap.

See the first live-row screenshot, captured with a controlled, silent PipeWire fixture rather than a user's applications.

Exercise the shared M0 command path:

dotnet run --project src/Fadrio.Cli -- set <canonical-id> 35
dotnet run --project src/Fadrio.Cli -- mute <canonical-id>
dotnet run --project src/Fadrio.Cli -- unmute <canonical-id>

These commands currently open a short-lived PipeWire client. A later milestone will route them through the single running instance over D-Bus.

Scope

Fadrio is not a PipeWire graph editor, DAW, DSP host, recorder, virtual-device manager, or network audio server. See product scope.

Contributing and security

Contributions are welcome. Read CONTRIBUTING.md, the repository-specific agent rules, and the Code of Conduct. Report vulnerabilities using SECURITY.md, not a public issue.

License

Copyright © 2026 Fadrio contributors. Fadrio is free software licensed under GPL-3.0-or-later. Third-party components retain their respective licenses; see THIRD_PARTY_NOTICES.md.

About

Application-centric PipeWire volume mixer for Linux — public alpha

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages