Festival

Music player for Windows/macOS/Linux.

Build

Tests

crates.io

docs.rs



Comparison

For context on these graphs (there are always trade-offs), see cmp/.

Input data:

Frontends

| Frontend | Released | Description | |-----------------------------|----------|-------------| | festival-gui | 🔴 | egui GUI | festival-web | 🔴 | WASM version of egui GUI | festivald | 🔴 | Daemon (mpd-like) | festival-cli | 🔴 | CLI client that connects to festivald

Documentation

For a broad overview of Festival's internals, see src/.

Documentation is also available on docs.rs.

The crate festival is being squatted, so instead, Festival's original name, shukusai, is the name used to represent Festival internals.

祝祭/shukusai translated means: Festival.

In documentation:

Build

General Info

You need cargo.

Building in this repo currently means building festival-gui. The produced binary is named festival.

There are 30 unit tests, you may want to run: cargo test before attempting a full build.


Linux

The pre-compiled Linux binaries are built on Debian 11, you'll need these packages to build: sudo apt install build-essential cmake libgtk-3-dev

After that, run: cargo build --release


macOS

On macOS, if you want the binary to have an icon, you must install cargo-bundle.

After that, run: cargo bundle --release This bundles Festival into Festival.app, the way it comes in the pre-built tars for macOS.


Windows

cargo build --release

There is a build.rs file in the repo solely for Windows-specific things:

  1. It sets the icon in File Explorer
  2. It statically links VCRUNTIME140.dll (the binary will not be portable without this)

License

All of Festival is licensed under the MIT License.

All of the fonts Festival uses:

| Font | License | |-------------------------------------------------------------------------|---------| | Adobe Source Code Pro | OFL-1.1 | Adobe Source Han Sans | OFL-1.1 | JuliaMono | OFL-1.1 | Emoji Icon Font | MIT | Noto-Emoji | OFL-1.1 | Hack | MIT | Ubuntu | Ubuntu Font License

All of the libraries Festival (directly) uses:

| Library | Purpose | License | |---------|---------|---------| | anyhow | Error handling | MIT & Apache-2.0 | chrono | Time formatting | MIT & Apache-2.0 | crossbeamchannel | Thread message passing | MIT & Apache-2.0 | disk | Saving to disk | MIT | egui | GUI | MIT & Apache-2.0 | eguiextras | GUI | MIT & Apache-2.0 | eframe | GUI | MIT & Apache-2.0 | egui-notify | GUI | MIT | envlogger | Logging | MIT & Apache-2.0 | fastimageresize | Image processing | MIT & Apache-2.0 | image | Image processing | MIT | infer | File MIME detection | MIT | lazystatic | Lazy static macro | MIT & Apache-2.0 | lofty | Audio metadata parsing | MIT & Apache-2.0 | log | Logging | MIT & Apache-2.0 | notify | Filesystem watching | Artistic License 2.0 & CC Zero 1.0 | mimeguess | File MIME detection | MIT | rand | RNG | MIT & Apache-2.0 | rfd | Native file dialog | MIT | serde | (De)serialization | MIT & Apache-2.0 | serdebytes | (De)serialization | MIT & Apache-2.0 | souvlaki | Native media controls | MIT | strsim | String similarity | MIT | Symphonia | Audio demuxing, decoding | MPL-2.0 | readable | Human readable data | MIT | rolock | Read only lock | MIT | walkdir | Recursive PATH walking | MIT & Unlicense