use crate::*;
fn query(query: &str, timeout_ms: u16) -> Result<String, TlError> {
use crossterm::terminal::*;
let switch_to_raw = !is_raw_mode_enabled()?;
if switch_to_raw {
enable_raw_mode()?;
}
let res = xterm_query::query_osc(query, timeout_ms)
.map_err(|e| e.into());
if switch_to_raw {
disable_raw_mode()?;
}
res
}
pub fn query_bg_color() -> Result<Rgb, TlError> {
let s = query("\x1b]11;?\x07", 100)?;
match s.strip_prefix("]11;rgb:") {
Some(raw_color) if raw_color.len() >= 14 => Ok(Rgb::new(
u8::from_str_radix(&raw_color[0..2], 16)?,
u8::from_str_radix(&raw_color[5..7], 16)?,
u8::from_str_radix(&raw_color[10..12], 16)?,
)),
_ => Err(TlError::WrongFormat(s.to_string())),
}
}