Music player for Windows/macOS/Linux.
For context on these graphs (there are always trade-offs), see cmp/
.
Input data:
170GB
total disk space
| 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
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:
shukusai
specifically means Festival
's internalsFestival
means a frontend OR the project as a wholeYou 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.
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
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.
cargo build --release
There is a build.rs
file in the repo solely for Windows-specific things:
File Explorer
VCRUNTIME140.dll
(the binary will not be portable without this)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