use serde::{de, Deserialize, Deserializer}; use toml::Value; use alacritty_config_derive::{ConfigDeserialize, SerdeReplace}; use alacritty_terminal::term::Osc52; use crate::config::ui_config::{Program, StringVisitor}; #[derive(ConfigDeserialize, Default, Clone, Debug, PartialEq)] pub struct Terminal { /// OSC52 support mode. pub osc52: SerdeOsc52, /// Path to a shell program to run on startup. pub shell: Option, } #[derive(SerdeReplace, Default, Copy, Clone, Debug, PartialEq)] pub struct SerdeOsc52(pub Osc52); impl<'de> Deserialize<'de> for SerdeOsc52 { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { let value = deserializer.deserialize_str(StringVisitor)?; Osc52::deserialize(Value::String(value)).map(SerdeOsc52).map_err(de::Error::custom) } }