#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Terminal {
Ghostty,
ITerm2,
}
pub fn detect() -> Option<Terminal> {
match std::env::var("TERM_PROGRAM").ok().as_deref() {
Some("ghostty") => return Some(Terminal::Ghostty),
Some("iTerm.app") => return Some(Terminal::ITerm2),
_ => {}
}
if matches!(std::env::var("LC_TERMINAL").ok().as_deref(), Some("iTerm2")) {
return Some(Terminal::ITerm2);
}
if std::env::var("TERM")
.ok()
.is_some_and(|t| t.split('-').any(|s| s == "ghostty"))
{
return Some(Terminal::Ghostty);
}
None
}