detectTerminal function

String? detectTerminal()

Detect the current terminal emulator from environment variables.

Implementation

String? detectTerminal() {
  final env = Platform.environment;

  // Check TERM_PROGRAM first (most reliable).
  final termProgram = env['TERM_PROGRAM'];
  if (termProgram != null) {
    if (termProgram == 'Apple_Terminal') return 'Apple_Terminal';
    if (termProgram == 'vscode') return 'vscode';
    if (termProgram.contains('cursor')) return 'cursor';
    if (termProgram.contains('windsurf')) return 'windsurf';
    if (termProgram.contains('Alacritty')) return 'alacritty';
    if (termProgram.contains('iTerm')) return 'iTerm.app';
    if (termProgram.contains('WezTerm')) return 'WezTerm';
    if (termProgram.contains('WarpTerminal')) return 'WarpTerminal';
    if (termProgram.contains('ghostty')) return 'ghostty';
    if (termProgram.contains('kitty')) return 'kitty';
  }

  // Check for Zed.
  if (env['ZED_TERM'] != null) return 'zed';

  // Check for VSCode via environment variables.
  if (env['VSCODE_GIT_ASKPASS_MAIN'] != null) return 'vscode';

  return termProgram;
}