[package] name = "fastpotify" version = "0.1.1" edition = "2024" rust-version = "1.95" license = "MIT" description = "A fast, lightweight, native Spotify client built with Rust and egui" repository = "https://github.com/crmne/fastpotify" keywords = ["spotify", "music", "egui", "librespot", "player"] categories = ["multimedia::audio"] [dependencies] anyhow = "1" thiserror = "2" clap = { version = "4.5", features = ["derive"] } serde = { version = "1", features = ["derive"] } serde_json = "1" log = "0.4" env_logger = { version = "0.11", default-features = false, features = ["auto-color", "humantime"] } directories = "6" # The whole UI. glow keeps the binary and the dependency tree small; wgpu is # not needed for a 2D music client. eframe = { version = "0.36", default-features = false, features = ["glow", "default_fonts", "links", "wayland", "x11", "persistence"] } egui = "0.36" egui_extras = { version = "0.36", features = ["image", "svg"] } image = { version = "0.25", default-features = false, features = ["jpeg", "png"] } # Spotify playback and Connect. rustls everywhere so the client links one TLS # stack and builds without OpenSSL on every platform. librespot-core = { version = "0.8", default-features = false, features = ["rustls-tls-native-roots"] } librespot-playback = { version = "0.8", default-features = false, features = ["rodio-backend", "rustls-tls-native-roots"] } librespot-connect = { version = "0.8", default-features = false } librespot-metadata = { version = "0.8", default-features = false } librespot-protocol = { version = "0.8", default-features = false } reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots", "json", "gzip", "http2"] } tokio = { version = "1", features = ["rt-multi-thread", "sync", "time", "macros"] } sha1 = "0.10" sha2 = "0.10" base64 = "0.22" rand = "0.9" open = "5" percent-encoding = "2" urlencoding = "2" jiff = "0.2" [target.'cfg(target_os = "linux")'.dependencies] ksni = { version = "0.3", features = ["blocking"] } librespot-playback = { version = "0.8", default-features = false, features = ["rodio-backend", "pulseaudio-backend", "rustls-tls-native-roots"] } mpris-server = { version = "0.10", features = ["tokio"] } [features] # Sample data and screenshot flags; never part of a release build. demo = [] [profile.release] lto = "thin" codegen-units = 1 strip = true panic = "abort" # Audio decoding and immediate-mode layout are too slow at opt-level 0 to # audition the app in development. Keep every dependency optimized while the # application crate itself stays incremental. [profile.dev.package."*"] opt-level = 2