Skip to content

BurntToasters/Dacx

Repository files navigation

Dacx: Cross-Platform Music and Video Player

Fast, lightweight, open source media player for Windows, macOS, and Linux.

Built with Flutter + media_kit (libmpv).

Latest Release Downloads Tests License: GPLv3

Dacx is a desktop music and video player focused on speed and low overhead, with modern playback controls, media session integration, and broad format support.

Dacx logo

Dacx screenshot  

⬇️ Download Dacx

Need assistance? Check out the Installation Documentation!

Windows MacOS Linux
MSI: x64 DMG: Universal AppImage: x64
ZIP: Universal DEB: x64
RPM: x64
Flatpak: x64
TAR.GZ: x64

Platforms

  • Windows
  • macOS
  • Linux

Features

  • Audio + video playback for MP3, FLAC, WAV, OGG, AAC, Opus, MP4, MKV, AVI, WebM, and more (anything libmpv handles).
  • Playlist files (.m3u / .pls import + save queue as .m3u); HLS .m3u8 streams via mpv.
  • Playback speed control (transport chip + [ / ] / \ shortcuts).
  • External audio / subtitle track load from the more menu.
  • 10-band equalizer with presets.
  • Optional multi-audio-track mixing via lavfi-complex (Experimental Features; unstable).
  • Optional seek thumbnails (Playback settings; uses extra memory).
  • Window transparency / background blur on Windows and macOS (Appearance settings). Linux compositor blur remains experimental.
  • Resume a file from its previous position when you reopen it; relaunch starts at the empty home screen.
  • Compact mode and always-on-top window.
  • System media-session integration: lock-screen / Now Playing / SMTC / MPRIS controls, artwork, rate, and scrubbing.
  • File associations + custom document icon on Windows, macOS, and Linux.
  • Built-in update checker: in-app self-update on Windows (MSI) and macOS (/Applications). On Linux, prefer the AppImage managed with AppManager for install + updates (no in-app Linux installer).
  • Notarized & signed DMG/ZIP for macOS; Windows/Linux packages carry GPG detached signatures. Windows MSI is not Authenticode-signed by default (SmartScreen may warn); optional Authenticode is a release-machine concern (see SECURITY.md).

Support contract (v1 readiness)

  • UI language: English only (lib/l10n).
  • macOS: 15 (Sequoia) or newer.
  • CPU arch: Windows/Linux ship x64 only (arm64 not a priority).
  • Linux (recommended): AppImage + AppManager for desktop install and updates. deb/rpm/Flatpak/tar remain available; Flatpak is GitHub-sideload only (not Flathub).
  • Experimental Features: Long-lived opt-in lane (off by default) for unfinished / in-progress ideas (multi-audio mix, Linux compositor blur, …). Features may graduate to stable settings (like Win/mac blur) or stay experimental indefinitely; not a blocker for 1.0.
  • Windows portable ZIP: No longer shipped; use the MSI.

Development

Note

This project uses Flutter/Dart but also NodeJS. Its a little bit messy and not the best of practices I know, im just the most familiar and confident with js scripting and node so thats how the project is controlled. Sorry :P

# Install Node.js dependencies (build scripts)
npm install

# Install Flutter dependencies through FVM
fvm flutter pub get

# Run in development mode
npm run dev

# Run tests
npm run test:all

# Build for current platform
npm run build:win   # Windows
npm run build:mac   # macOS
npm run build:linux # Linux

Signing model

macOS releases are fully code-signed and notarized. Windows releases are fully code-signed using Azure Artifact Signing. Linux DEB/RPM/TAR.GZ artifacts are signed with a GPG detached signature (the project's release key). Ed25519 remains the primary self-update trust, and Authenticode signing provides OS-level trust verification (see SECURITY.md).

This means:

  • scripts/flutter-build-macos.js requires APPLE_TEAM_ID in .env. Self-update pins against the team id. Set DACX_BUILD_DEV_NO_TEAM_ID=1 to skip for local dev:
    DACX_BUILD_DEV_NO_TEAM_ID=1 npm run build:mac
  • scripts/flutter-build-windows.js accepts WINDOWS_SIGNING_CERT_THUMBPRINT (or DACX_WINDOWS_SIGNER_THUMBPRINT). In official release builds, the MSI is fully signed using Azure Artifact Signing and the thumbprint is baked in as a runtime pin. On release VMs, set the thumbprint and DACX_REQUIRE_WINDOWS_SIGNER=1 so npm run build:win fails if it is missing (see SECURITY.md). The Windows build also ships dacx-update-helper.exe next to dacx.exe for post-exit MSI install (no on-disk PowerShell watchdog scripts).
  • scripts/flutter-build-linux is not affected by either.

macOS support

The macOS build targets macOS 15 (Sequoia) or newer. Older macOS versions are not supported.

License

GPLv3

Releases

Sponsor this project

Packages

Contributors

Languages