A technical Linux-native desktop music player
Find a file
2026-04-01 21:21:36 +08:00
cmake bump version 2026-03-26 14:27:05 +08:00
packaging switch to Flatpak 2026-04-01 16:36:57 +08:00
src switch to Flatpak 2026-04-01 16:36:57 +08:00
tests switch to Flatpak 2026-04-01 16:36:57 +08:00
third_party feat: implement SAP decode 2026-03-24 18:04:45 +08:00
web update website 2026-03-29 23:44:34 +08:00
.editorconfig First public release 2026-03-15 18:41:52 +08:00
.gitattributes First public release 2026-03-15 18:41:52 +08:00
.gitignore switch to Flatpak 2026-04-01 16:36:57 +08:00
CMakeLists.txt switch to Flatpak 2026-04-01 16:36:57 +08:00
impulse.png switch to Flatpak 2026-04-01 16:36:57 +08:00
LICENSE First public release 2026-03-15 18:41:52 +08:00
README.md update readme 2026-04-01 21:21:36 +08:00
screenshot.png update website 2026-03-29 23:44:34 +08:00
THIRD_PARTY_NOTICES.md switch to Flatpak 2026-04-01 16:36:57 +08:00

Impulse

A technical Linux-native desktop music player.

Reason

I just want a player that plays music and gives me what I need.

mpd with ncmpcpp is... well, not really comfortable since I use KDE Plasma and not a minimal WM.

I tried Strawberry but it's kinda... well, I mean it works fine and does its job well but when playing files in the playlist that are in different sample rates, once the sample rate changes, it kinda glitches out and stuff.

Ideally, I'd love to use Foobar2000 on Linux but I don't want to install Wine just to run Foobar2000 (yes, it's a me-problem).

So yeah. The fastest way to do this is create a new player.

Screenshots

main

Dependencies

The lists below describe native builds from source.

If you are using the Flatpak build, these libraries are provided by the Flatpak runtime and bundled modules from the Flatpak build, so you do not need to install them as host distro packages just to run the app.

Bundled third-party code:

System libraries required for native builds:

  • libopenmpt (for tracker / module playback)
  • ffmpeg (libavformat, libavcodec, libavutil, libswresample, libswscale) for fallback decoding and metadata
  • pipewire (libpipewire-0.3) for audio output. Sorry, no other option.
  • sdl3 for the GUI and desktop integration
  • libsystemd (for MPRIS)
  • zlib (required by the vendored libsc68 backend)

Build tools:

  • a C and C++ toolchain with C++23 support
  • cmake
  • git (used by CMake FetchContent for bundled dependencies)
  • pkg-config

Test-only dependency:

  • doctest (fetched automatically when BUILD_TESTS=ON)

Flatpak packaging tools:

  • flatpak
  • flatpak-builder

Building

Local debug:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON
cmake --build build -j"$(nproc)"

Release:

cmake -S . -B build-release -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
cmake --build build-release -j"$(nproc)"
ctest --test-dir build-release --output-on-failure

License

Licensed under the GNU General Public License v3.0 only.