detect-terminal
Version:
Detect the terminal program currently being used, with support for iTerm, Terminal.app, Hyper, iTerm2, ConEmu, Cmde,r Alacritty, Xterm, Terminator, Termux, Kitty, and others. Detection is based on environment variables and process-level indicators to iden
1 lines • 35.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/color.ts","../src/normalize.ts","../src/env.ts","../src/parent.ts","../src/process-title.ts","../src/shell.ts","../src/details.ts"],"sourcesContent":["import type { ColorLevel } from './types';\n\nconst TRUE_COLOR_PATTERN = /^(truecolor|24bits?)$/;\n\nexport const has256Color = (value: string | undefined): boolean => {\n return Boolean(value?.match(/256/));\n};\n\nexport const supportsTrueColor = (value: string | undefined): boolean => {\n return Boolean(value?.match(TRUE_COLOR_PATTERN));\n};\n\nexport const getColorSupport = (env: NodeJS.ProcessEnv) => {\n return {\n supports256Color: has256Color(env.TERM) || has256Color(env.COLORTERM),\n supportsTrueColor: supportsTrueColor(env.COLORTERM)\n };\n};\n\nconst NO_BASIC_COLOR_TERMINALS = new Set([\n 'dumb',\n 'linux_console',\n 'none',\n 'unknown',\n 'vt100'\n]);\n\nexport const getColorLevel = (\n env: NodeJS.ProcessEnv,\n terminal?: string | null,\n colorSupport = getColorSupport(env)\n): ColorLevel => {\n const { supports256Color, supportsTrueColor } = colorSupport;\n\n if (supportsTrueColor) {\n return 3;\n }\n\n if (supports256Color) {\n return 2;\n }\n\n if (terminal && !NO_BASIC_COLOR_TERMINALS.has(terminal)) {\n return 1;\n }\n\n if (env.TERM_PROGRAM || env.COLORTERM || env.TERMUX_VERSION) {\n return 1;\n }\n\n return 0;\n};\n","import type { DetectOptions } from './types';\nimport path from 'node:path';\n\nexport const AMBIGUOUS_ENV_TERMINALS = new Set([\n 'linux_console',\n 'truecolor_terminal',\n 'vt100',\n 'xterm',\n 'xterm_256color',\n 'xterm_truecolor'\n]);\n\nexport const SHELL_PROCESS_NAMES = new Set([\n 'bash',\n 'csh',\n 'dash',\n 'fish',\n 'ksh',\n 'login',\n 'node',\n 'nodejs',\n 'nu',\n 'sh',\n 'sudo',\n 'tcsh',\n 'zsh'\n]);\n\nexport const normalizeIdentifier = (value: string): string => {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_');\n};\n\nexport const normalizeAppName = (value: string, platform: NodeJS.Platform): string => {\n const appName = platform === 'darwin' ? path.parse(value).name : value;\n return normalizeIdentifier(appName);\n};\n\nexport const isAmbiguousEnvResult = (\n terminal: string | null,\n options: DetectOptions = {}\n): boolean => {\n if (!terminal) {\n return true;\n }\n\n if (options.preferOuter && (terminal === 'tmux' || terminal === 'screen')) {\n return true;\n }\n\n return AMBIGUOUS_ENV_TERMINALS.has(terminal);\n};\n\nexport const hasKonsoleEnvironment = (env: NodeJS.ProcessEnv): boolean => {\n return Object.keys(env).some(envVar => /konsole/i.test(envVar));\n};\n\nexport const normalizeParentProcessName = (processName: string): string | null => {\n const normalized = normalizeIdentifier(path.parse(processName).name);\n\n switch (normalized) {\n case 'alacritty':\n case 'aterm':\n case 'atomic_terminal':\n case 'eterm':\n case 'foot':\n case 'ghostty':\n case 'hyper':\n case 'kitty':\n case 'konsole':\n case 'kuake':\n case 'mate_terminal':\n case 'mrxvt':\n case 'powershell':\n case 'putty':\n case 'qterminal':\n case 'rio':\n case 'rxvt':\n case 'terminator':\n case 'terminology':\n case 'tilda':\n case 'tmux':\n case 'warp':\n case 'wezterm':\n case 'wterm':\n return normalized;\n case 'apple_terminal':\n case 'terminal':\n return 'terminal';\n case 'cmd':\n return 'cmd';\n case 'code':\n case 'code_insiders':\n return 'vscode';\n case 'conhost':\n return 'conhost';\n case 'gnome':\n case 'gnome_terminal':\n case 'gnome_terminal_server':\n case 'guake':\n return 'gnome_terminal';\n case 'iterm':\n case 'iterm2':\n return 'iterm';\n case 'login':\n case 'linux':\n return 'linux_console';\n case 'pwsh':\n return 'powershell';\n case 'screen':\n return 'screen';\n case 'terminal_app':\n return 'terminal_app';\n case 'urxvt':\n case 'urxvt256c':\n case 'urxvt256c_ml':\n case 'urxvt_ml':\n return 'rxvt';\n case 'wt':\n case 'windows_terminal':\n return 'windows_terminal';\n case 'xfce':\n case 'xfce_terminal':\n case 'xfce4_terminal':\n return 'xfce4_terminal';\n default: {\n if (normalized.startsWith('gnome_terminal')) {\n return 'gnome_terminal';\n }\n\n if (normalized.startsWith('warp')) {\n return 'warp';\n }\n\n return null;\n }\n }\n};\n","import type { DetectOptions, DetectionResult } from './types';\nimport { getColorSupport } from './color';\nimport {\n hasKonsoleEnvironment,\n normalizeAppName,\n normalizeIdentifier\n} from './normalize';\n\nconst colorVariant = (\n terminal: string,\n supports256Color: boolean,\n supportsTrueColor: boolean\n): string => {\n return supports256Color || supportsTrueColor ? `${terminal}_256color` : terminal;\n};\n\nconst normalizeTermProgram = (termProgram: string): string | null => {\n switch (termProgram) {\n case 'apple_terminal':\n return 'terminal';\n case 'eterm':\n return 'eterm';\n case 'gnome_terminal':\n case 'gnome_terminal_server':\n return 'gnome_terminal';\n case 'hyper':\n return 'hyper';\n case 'iterm_app':\n case 'iterm':\n case 'iterm2':\n return 'iterm';\n case 'kitty':\n return 'kitty';\n case 'konsole':\n return 'konsole';\n case 'mate_terminal':\n return 'mate_terminal';\n case 'powershell':\n return 'powershell';\n case 'putty':\n return 'putty';\n case 'qterminal':\n return 'qterminal';\n case 'rio':\n return 'rio';\n case 'rxvt':\n return 'rxvt';\n case 'terminal_app':\n return 'terminal_app';\n case 'terminal':\n return 'terminal';\n case 'terminator':\n return 'terminator';\n case 'termux':\n return 'termux';\n case 'vscode':\n return 'vscode';\n case 'warp':\n return 'warp';\n case 'wezterm':\n return 'wezterm';\n case 'xfce4_terminal':\n return 'xfce4_terminal';\n case 'alacritty':\n return 'alacritty';\n default:\n return null;\n }\n};\n\nconst detectFromTerm = (\n term: string,\n env: NodeJS.ProcessEnv,\n platform: NodeJS.Platform\n): string => {\n const { supports256Color, supportsTrueColor } = getColorSupport(env);\n\n if (term === 'xterm' || term === 'xterm_256color') {\n if (supportsTrueColor) {\n return 'xterm_truecolor';\n }\n\n if (env.VTE_VERSION) {\n const vteVersion = Number.parseInt(env.VTE_VERSION, 10);\n if (vteVersion >= 3803) {\n return colorVariant('gnome_terminal', supports256Color, supportsTrueColor);\n }\n }\n\n if (hasKonsoleEnvironment(env)) {\n return colorVariant('konsole', supports256Color, supportsTrueColor);\n }\n\n if (platform === 'darwin') {\n return 'terminal';\n }\n\n return term;\n }\n\n switch (term) {\n case 'linux':\n return 'linux_console';\n case 'gnome':\n case 'gnome_256color':\n case 'gnome_terminal':\n case 'gnome_terminal_256color':\n case 'guake':\n case 'terminator':\n return colorVariant('gnome_terminal', supports256Color, supportsTrueColor);\n case 'konsole':\n return colorVariant('konsole', supports256Color, supportsTrueColor);\n case 'rxvt':\n case 'rxvt_xpm':\n case 'rxvt_unicode':\n case 'rxvt_unicode_256color':\n case 'urxvt':\n case 'urxvt_ml':\n case 'urxvt256c':\n case 'urxvt256c_ml':\n return colorVariant('rxvt', term === 'rxvt' || supports256Color, supportsTrueColor);\n case 'xfce':\n case 'xfce_terminal':\n case 'xfce4_terminal':\n return 'xfce4_terminal';\n case 'eterm':\n return colorVariant('eterm', supports256Color, supportsTrueColor);\n case 'xterm_kitty':\n case 'kitty':\n return 'kitty';\n case 'screen':\n case 'screen_256color':\n return 'screen';\n case 'tmux':\n case 'tmux_256color':\n return 'tmux';\n case 'vt100':\n return 'vt100';\n case 'aterm':\n case 'atomic_terminal':\n case 'dopamine':\n case 'foot':\n case 'ghostty':\n case 'kuake':\n case 'rio':\n case 'terminology':\n case 'termux':\n case 'tilda':\n case 'wterm':\n case 'mrxvt':\n return term;\n default:\n if (/screen/.test(term)) return 'screen';\n if (/tmux/.test(term)) return 'tmux';\n if (/rxvt/.test(term)) return 'rxvt';\n if (/vt100/.test(term)) return 'vt100';\n if (/linux/.test(term)) return 'linux_console';\n if (/alacritty/.test(term)) return 'alacritty';\n if (/dopamine/.test(term)) return 'dopamine';\n if (/kitty/.test(term)) return 'kitty';\n if (/ghostty/.test(term)) return 'ghostty';\n if (/^foot/.test(term)) return 'foot';\n if (/^rio/.test(term)) return 'rio';\n return term;\n }\n};\n\nexport const detectFromEnvResult = (\n options: DetectOptions = {}\n): DetectionResult | null => {\n const env = options.env ?? process.env;\n const platform = options.platform ?? process.platform;\n const term = env.TERM ? normalizeIdentifier(env.TERM) : undefined;\n\n if (platform === 'android' && env.TERMUX_VERSION) {\n return { terminal: 'termux', source: 'env', generic: term };\n }\n\n if (!options.preferOuter && term) {\n if (term.startsWith('tmux')) {\n return { terminal: 'tmux', source: 'env', generic: term };\n }\n if (term.startsWith('screen')) {\n return { terminal: 'screen', source: 'env', generic: term };\n }\n }\n\n if (env.KITTY_PID) {\n return { terminal: 'kitty', source: 'env', generic: term };\n }\n\n if (env.GHOSTTY_RESOURCES_DIR) {\n return { terminal: 'ghostty', source: 'env', generic: term };\n }\n\n if (env.ALACRITTY_SOCKET || env.ALACRITTY_LOG) {\n return { terminal: 'alacritty', source: 'env', generic: term };\n }\n\n const termProgram = env.TERM_PROGRAM\n ? normalizeAppName(env.TERM_PROGRAM, platform)\n : undefined;\n\n if (termProgram) {\n return {\n terminal: normalizeTermProgram(termProgram) ?? termProgram,\n source: 'env',\n generic: term\n };\n }\n\n if (\n typeof env.VSCODE_PID !== 'undefined' ||\n (typeof env.TERM_PROGRAM_VERSION !== 'undefined' &&\n /vscode/i.test(env.TERM_PROGRAM_VERSION))\n ) {\n return { terminal: 'vscode', source: 'env', generic: term };\n }\n\n if (term && term !== 'unknown') {\n return {\n terminal: detectFromTerm(term, env, platform),\n source: 'env',\n generic: term\n };\n }\n\n const colorTerm = env.COLORTERM ? normalizeIdentifier(env.COLORTERM) : undefined;\n\n if (colorTerm === 'truecolor' || colorTerm === '24bit' || colorTerm === '24bits') {\n return { terminal: 'truecolor_terminal', source: 'env', generic: term };\n }\n\n if (colorTerm) {\n return { terminal: colorTerm, source: 'env', generic: term };\n }\n\n return null;\n};\n\nexport const detectFromEnv = (options: DetectOptions = {}): string | null => {\n return detectFromEnvResult(options)?.terminal ?? null;\n};\n","import type { DetectOptions, DetectionResult, ExecFileSync, ParentProcessInfo } from './types';\nimport { execFileSync as nodeExecFileSync } from 'node:child_process';\nimport { getColorSupport } from './color';\nimport { normalizeIdentifier, normalizeParentProcessName, SHELL_PROCESS_NAMES } from './normalize';\n\nconst runPs = (run: ExecFileSync, args: string[]): string => {\n return run('ps', args, {\n encoding: 'utf8',\n timeout: 1000,\n stdio: ['ignore', 'pipe', 'ignore']\n }) as string;\n};\n\nexport const getParentProcess = (\n pid: number,\n options: Pick<DetectOptions, 'execFileSync'> = {}\n): ParentProcessInfo | null => {\n const run = options.execFileSync ?? nodeExecFileSync;\n const parentPid = Number.parseInt(\n runPs(run, ['-o', 'ppid=', '-p', String(pid)]).trim(),\n 10\n );\n\n if (!Number.isFinite(parentPid) || parentPid <= 1) {\n return null;\n }\n\n const appName = runPs(run, ['-o', 'comm=', '-p', String(parentPid)]).trim();\n\n if (!appName) {\n return null;\n }\n\n return {\n pid: parentPid,\n appName\n };\n};\n\nconst colorVariant = (\n terminal: string,\n supports256Color: boolean,\n supportsTrueColor: boolean\n): string => {\n return supports256Color || supportsTrueColor ? `${terminal}_256color` : terminal;\n};\n\nconst applyParentColorVariant = (terminal: string, env: NodeJS.ProcessEnv): string => {\n const { supports256Color, supportsTrueColor } = getColorSupport(env);\n\n switch (terminal) {\n case 'eterm':\n case 'konsole':\n case 'rxvt':\n return colorVariant(terminal, supports256Color, supportsTrueColor);\n case 'gnome_terminal':\n case 'terminator':\n return colorVariant('gnome_terminal', supports256Color, supportsTrueColor);\n default:\n return terminal;\n }\n};\n\nexport const detectFromParentProcessResult = (\n options: DetectOptions = {}\n): DetectionResult | null => {\n const env = options.env ?? process.env;\n const platform = options.platform ?? process.platform;\n\n if (platform === 'win32' || env.SSH_CONNECTION) {\n return null;\n }\n\n const seenPids = new Set<number>();\n let pid = options.pid ?? process.pid;\n\n for (let depth = 0; depth < 12; depth += 1) {\n if (seenPids.has(pid)) {\n break;\n }\n\n seenPids.add(pid);\n\n try {\n const parent = getParentProcess(pid, options);\n\n if (!parent) {\n break;\n }\n\n const normalized = normalizeParentProcessName(parent.appName);\n\n if (normalized === 'screen' || normalized === 'tmux') {\n if (!options.preferOuter) {\n return {\n terminal: normalized,\n source: 'parent',\n appName: parent.appName,\n pid: parent.pid\n };\n }\n\n pid = parent.pid;\n continue;\n }\n\n if (normalized) {\n return {\n terminal: applyParentColorVariant(normalized, env),\n source: 'parent',\n appName: parent.appName,\n pid: parent.pid\n };\n }\n\n if (!SHELL_PROCESS_NAMES.has(normalizeIdentifier(parent.appName))) {\n break;\n }\n\n pid = parent.pid;\n } catch {\n break;\n }\n }\n\n return null;\n};\n\nexport const detectFromParentProcess = (options: DetectOptions = {}): string | null => {\n return detectFromParentProcessResult(options)?.terminal ?? null;\n};\n","import type { DetectOptions, DetectionResult } from './types';\n\nexport const detectFromProcessTitleResult = (\n options: Pick<DetectOptions, 'processTitle'> = {}\n): DetectionResult | null => {\n const processTitle = (options.processTitle ?? process.title)?.toLowerCase() ?? '';\n\n if (/^alacritty/.test(processTitle)) {\n return {\n terminal: 'alacritty',\n source: 'process_title'\n };\n }\n\n if (/^kitty/.test(processTitle)) {\n return {\n terminal: 'kitty',\n source: 'process_title'\n };\n }\n\n if (/^wezterm/.test(processTitle)) {\n return {\n terminal: 'wezterm',\n source: 'process_title'\n };\n }\n\n if (/^hyper/.test(processTitle)) {\n return {\n terminal: 'hyper',\n source: 'process_title'\n };\n }\n\n if (/^foot/.test(processTitle)) {\n return {\n terminal: 'foot',\n source: 'process_title'\n };\n }\n\n if (/^rio/.test(processTitle)) {\n return {\n terminal: 'rio',\n source: 'process_title'\n };\n }\n\n if (/^ghostty/.test(processTitle)) {\n return {\n terminal: 'ghostty',\n source: 'process_title'\n };\n }\n\n if (/bash/.test(processTitle)) {\n return {\n terminal: 'bash',\n source: 'process_title'\n };\n }\n\n if (/zsh/.test(processTitle)) {\n return {\n terminal: 'zsh',\n source: 'process_title'\n };\n }\n\n if (/ksh/.test(processTitle)) {\n return {\n terminal: 'ksh',\n source: 'process_title'\n };\n }\n\n if (/fish/.test(processTitle)) {\n return {\n terminal: 'fish',\n source: 'process_title'\n };\n }\n\n if (/csh/.test(processTitle)) {\n return {\n terminal: 'csh',\n source: 'process_title'\n };\n }\n\n if (/tcsh/.test(processTitle)) {\n return {\n terminal: 'tcsh',\n source: 'process_title'\n };\n }\n\n if (/pwsh/.test(processTitle)) {\n return {\n terminal: 'powershell',\n source: 'process_title'\n };\n }\n\n if (/powershell/.test(processTitle)) {\n return {\n terminal: 'powershell',\n source: 'process_title'\n };\n }\n\n if (/cmd/.test(processTitle)) {\n return {\n terminal: 'cmd',\n source: 'process_title'\n };\n }\n\n if (/sh$/.test(processTitle)) {\n return {\n terminal: 'sh',\n source: 'process_title'\n };\n }\n\n if (/^node/.test(processTitle)) {\n return {\n terminal: 'node',\n source: 'process_title'\n };\n }\n\n return null;\n};\n\nexport const detectFromProcessTitle = (): string | null => {\n return detectFromProcessTitleResult()?.terminal ?? null;\n};\n","import type { DetectOptions, DetectionResult, ExecFileSync } from './types';\nimport { execFileSync as nodeExecFileSync } from 'node:child_process';\nimport { normalizeIdentifier } from './normalize';\n\nconst runShellTerm = (run: ExecFileSync): string => {\n return run('sh', ['-c', 'printf %s \"$TERM\"'], {\n encoding: 'utf8',\n timeout: 1000,\n stdio: ['ignore', 'pipe', 'ignore']\n }) as string;\n};\n\nexport const detectFromShellResult = (\n options: DetectOptions = {}\n): DetectionResult | null => {\n const env = options.env ?? process.env;\n const platform = options.platform ?? process.platform;\n\n try {\n if (platform === 'win32') {\n if (env.WT_SESSION) {\n return {\n terminal: 'windows_terminal',\n source: 'shell'\n };\n }\n\n const shell = env.COMSPEC?.toLowerCase() || '';\n if (/powershell/i.test(shell)) {\n return {\n terminal: 'powershell',\n source: 'shell'\n };\n }\n\n if (/pwsh/i.test(shell)) {\n return {\n terminal: 'powershell',\n source: 'shell'\n };\n }\n\n if (/cmd\\.exe/i.test(shell)) {\n return {\n terminal: 'cmd',\n source: 'shell'\n };\n }\n\n if (/wt\\.exe/i.test(shell)) {\n return {\n terminal: 'windows_terminal',\n source: 'shell'\n };\n }\n\n if (/conhost\\.exe/i.test(shell)) {\n return {\n terminal: 'conhost',\n source: 'shell'\n };\n }\n\n return {\n terminal: 'windows_cmd',\n source: 'shell'\n };\n }\n\n const run = options.execFileSync ?? nodeExecFileSync;\n const terminal = normalizeIdentifier(runShellTerm(run));\n\n if (!terminal) {\n return null;\n }\n\n if (!options.preferOuter) {\n if (terminal.startsWith('tmux')) {\n return {\n terminal: 'tmux',\n source: 'shell'\n };\n }\n\n if (terminal.startsWith('screen')) {\n return {\n terminal: 'screen',\n source: 'shell'\n };\n }\n }\n\n return {\n terminal,\n source: 'shell'\n };\n } catch {\n return null;\n }\n};\n\nexport const detectFromShell = (options: DetectOptions = {}): string | null => {\n return detectFromShellResult(options)?.terminal ?? null;\n};\n","import type { DetectOptions, DetectionResult, TerminalDetails } from './types';\nimport { detectFromEnvResult } from './env';\nimport { getColorLevel, getColorSupport } from './color';\nimport { isAmbiguousEnvResult } from './normalize';\nimport { detectFromParentProcessResult } from './parent';\nimport { detectFromProcessTitleResult } from './process-title';\nimport { detectFromShellResult } from './shell';\n\nconst getTerminalResult = (options: DetectOptions): DetectionResult => {\n const envTerminal = detectFromEnvResult(options);\n let result = envTerminal;\n\n if (\n options.resolveAmbiguousFromParent &&\n isAmbiguousEnvResult(envTerminal?.terminal ?? null, options)\n ) {\n result = detectFromParentProcessResult(options) ?? result;\n }\n\n result ??= detectFromShellResult(options);\n result ??= detectFromProcessTitleResult(options);\n\n return (\n result ?? {\n terminal: envTerminal?.terminal ?? 'unknown',\n source: envTerminal ? envTerminal.source : 'unknown',\n generic: envTerminal?.generic\n }\n );\n};\n\nexport const detectTerminalDetails = (options: DetectOptions = {}): TerminalDetails => {\n const env = options.env ?? process.env;\n const stdout = options.stdout ?? process.stdout;\n const isTTY = Boolean(stdout.isTTY);\n const isSSH = Boolean(env.SSH_CONNECTION);\n const term = env.TERM?.trim();\n const termProgram = env.TERM_PROGRAM?.trim();\n const colorTerm = env.COLORTERM?.trim();\n const colorSupport = getColorSupport(env);\n\n if (!isTTY && !options.unpipe) {\n return {\n terminal: 'none',\n source: 'none',\n isTTY,\n isSSH,\n isAmbiguous: false,\n supportsColor: false,\n colorLevel: 0,\n supports256Color: colorSupport.supports256Color,\n supportsTrueColor: colorSupport.supportsTrueColor,\n term,\n termProgram,\n colorTerm,\n generic: 'none'\n };\n }\n\n const result = getTerminalResult(options);\n const colorLevel = getColorLevel(env, result.terminal, colorSupport);\n\n return {\n terminal: result.terminal,\n source: result.source,\n isTTY,\n isSSH,\n isAmbiguous: result.source === 'env' && isAmbiguousEnvResult(result.terminal, options),\n colorLevel,\n supportsColor: colorLevel > 0,\n supports256Color: colorSupport.supports256Color,\n supportsTrueColor: colorSupport.supportsTrueColor,\n term,\n termProgram,\n colorTerm,\n generic: result.generic ?? term?.toLowerCase() ?? 'unknown',\n pid: result.pid,\n appName: result.appName\n };\n};\n\nexport const detectTerminal = (options: DetectOptions = {}): string => {\n return detectTerminalDetails(options).terminal;\n};\n"],"mappings":"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","names":["supportsTrueColor","supportsTrueColor","colorVariant","supportsTrueColor","nodeExecFileSync","nodeExecFileSync"]}