Load schemes from $XDG_STATE/yazi/schemes.toml

Signed-off-by: Xuanwo <github@xuanwo.io>
This commit is contained in:
Xuanwo 2024-06-14 16:33:15 +08:00 committed by sxyazi
parent cfe35cc691
commit 64cede1fed
No known key found for this signature in database

View file

@ -3,8 +3,6 @@ use std::collections::HashMap;
use anyhow::Result; use anyhow::Result;
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
use crate::MERGED_YAZI;
/// Schemes in configuration file. /// Schemes in configuration file.
#[derive(Debug)] #[derive(Debug)]
pub struct Schemes { pub struct Schemes {
@ -12,7 +10,12 @@ pub struct Schemes {
} }
impl Default for Schemes { impl Default for Schemes {
fn default() -> Self { toml::from_str(&MERGED_YAZI).unwrap() } fn default() -> Self {
let schemes_path = yazi_shared::Xdg::state_dir().join("schemes.toml");
// Ignore any errors, as it's fine to have an empty file.
let schemes_content = std::fs::read_to_string(&schemes_path).unwrap_or_default();
toml::from_str(&schemes_content).unwrap()
}
} }
impl Schemes { impl Schemes {
@ -46,8 +49,8 @@ impl<'de> Deserialize<'de> for Schemes {
/// Scheme in configuration file. /// Scheme in configuration file.
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub struct Scheme { pub struct Scheme {
pub name: String, pub name: String,
#[serde(rename = "type")] #[serde(rename = "type")]
pub typ: String, pub typ: String,
pub config: HashMap<String, String>, pub config: HashMap<String, String>,
} }