Initial commit — ferrosonic terminal Subsonic client

Terminal-based Subsonic music client in Rust featuring bit-perfect audio
playback via PipeWire sample rate switching, gapless playback, MPRIS2
desktop integration, cava audio visualizer with theme-matched gradients,
13 built-in color themes with custom TOML theme support, mouse controls,
artist/album browser, playlist support, and play queue management.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-27 21:43:26 +00:00
commit 12cc70e6ec
36 changed files with 11600 additions and 0 deletions

62
Cargo.toml Normal file
View File

@@ -0,0 +1,62 @@
[package]
name = "ferrosonic"
version = "0.1.0"
edition = "2021"
description = "A terminal-based Subsonic music client with bit-perfect audio playback"
license = "MIT"
authors = ["ferrosonic contributors"]
[dependencies]
# Async runtime
tokio = { version = "1", features = ["full", "sync", "process", "signal"] }
# Terminal UI
ratatui = "0.29"
crossterm = "0.28"
tui-tree-widget = "0.22"
# HTTP client for Subsonic API
reqwest = { version = "0.12", features = ["json"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
# Error handling
thiserror = "2"
anyhow = "1"
# D-Bus / MPRIS
zbus = "5"
mpris-server = "0.8"
# Unix utilities
libc = "0.2"
# Utilities
dirs = "6"
url = "2"
urlencoding = "2"
md5 = "0.7"
rand = "0.8"
unicode-width = "0.2"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-appender = "0.2"
# CLI
clap = { version = "4", features = ["derive"] }
# Async channels
futures = "0.3"
# Terminal emulator for cava integration
vt100 = "0.15"
[profile.release]
lto = true
codegen-units = 1
strip = true