Files
gemini-cli/packages/cli/src/ui/utils/terminalUtils.ts

48 lines
1.0 KiB
TypeScript

/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import process from 'node:process';
/**
* Returns the color depth of the current terminal.
* Returns 24 (TrueColor) if unknown or not a TTY.
*/
export function getColorDepth(): number {
return process.stdout.getColorDepth ? process.stdout.getColorDepth() : 24;
}
/**
* Returns true if the terminal has low color depth (less than 24-bit).
*/
export function isLowColorDepth(): boolean {
return getColorDepth() < 24;
}
let cachedIsITerm2: boolean | undefined;
/**
* Returns true if the current terminal is iTerm2.
*/
export function isITerm2(): boolean {
if (cachedIsITerm2 !== undefined) {
return cachedIsITerm2;
}
cachedIsITerm2 =
process.env['TERM_PROGRAM'] === 'iTerm.app' ||
!!process.env['ITERM_SESSION_ID'];
return cachedIsITerm2;
}
/**
* Resets the cached iTerm2 detection value.
* Primarily used for testing.
*/
export function resetITerm2Cache(): void {
cachedIsITerm2 = undefined;
}