Add config values to override shuffle/repeat state

This commit is contained in:
Henrik Friedrichsen
2021-02-25 21:07:12 +01:00
parent 9357437759
commit db894d7ce8
3 changed files with 16 additions and 1 deletions

View File

@@ -189,6 +189,8 @@ Possible configuration values are:
* `bitrate`: The audio bitrate to use for streaming, can be 96, 160, or 320 (default is 320)
* `album_column`: Show album column for tracks, on by default <true/false>
* `gapless`: Allows gapless playback <true/false> (default is false)
* `shuffle`: Set default shuffle state <true/false>
* `repeat`: Set default repeat mode <off/track/playlist>
Keybindings can be configured in `[keybindings]` section in `config.toml`, e.g. as such:

View File

@@ -26,6 +26,8 @@ pub struct ConfigValues {
pub bitrate: Option<u32>,
pub album_column: Option<bool>,
pub gapless: Option<bool>,
pub shuffle: Option<bool>,
pub repeat: Option<queue::RepeatSetting>,
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
@@ -85,12 +87,20 @@ impl Config {
process::exit(1);
});
let userstate = {
let mut userstate = {
let path = config_path("userstate.toml");
load_or_generate_default(path, |_| Ok(UserState::default()), true)
.expect("could not load user state")
};
if let Some(shuffle) = values.shuffle {
userstate.shuffle = shuffle;
}
if let Some(repeat) = values.repeat {
userstate.repeat = repeat;
}
Self {
values: RwLock::new(values),
state: RwLock::new(userstate),

View File

@@ -13,8 +13,11 @@ use crate::{config::Config, spotify::PlayerEvent};
#[derive(Display, Clone, Copy, PartialEq, Debug, Serialize, Deserialize)]
pub enum RepeatSetting {
#[serde(rename = "off")]
None,
#[serde(rename = "playlist")]
RepeatPlaylist,
#[serde(rename = "track")]
RepeatTrack,
}