Fixed several riptune TUI bugs and did a full player UI redesign with cover art, theming, and a unified now-playing deck
This commit is contained in:
@@ -6,3 +6,4 @@ license.workspace = true
|
||||
description = "Shared command/event types crossing thread and crate boundaries (audio, MPRIS, niri, TUI)"
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -27,6 +27,27 @@ pub enum AudioEvent {
|
||||
Error(String),
|
||||
}
|
||||
|
||||
/// User-overridable TUI colors, loaded from config.toml's `[theme]` table as
|
||||
/// `#rrggbb` hex strings. Lives here (not in riptune-tui) so the main crate's
|
||||
/// config loader can deserialize it directly and hand it to the TUI without
|
||||
/// a dependency cycle. Any field left unset, or that fails to parse, falls
|
||||
/// back to riptune-tui's built-in default for that color.
|
||||
#[derive(Debug, Clone, Default, serde::Deserialize)]
|
||||
pub struct ThemeColors {
|
||||
#[serde(default)]
|
||||
pub accent: Option<String>,
|
||||
#[serde(default)]
|
||||
pub now_playing: Option<String>,
|
||||
#[serde(default)]
|
||||
pub error: Option<String>,
|
||||
#[serde(default)]
|
||||
pub border_focused: Option<String>,
|
||||
#[serde(default)]
|
||||
pub border_unfocused: Option<String>,
|
||||
#[serde(default)]
|
||||
pub selection_bg: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum AppEvent {
|
||||
/// User favorited/unfavorited a track (mirrors Subsonic star/unstar + can be
|
||||
|
||||
Reference in New Issue
Block a user