shipfastlabs / terminal-detector
Detects which terminal emulator is running the current PHP process
v1.0.0
2026-03-05 04:29 UTC
Requires
- php: ^8.2
Requires (Dev)
- laravel/pint: ^1.27.1
- pestphp/pest: ^5.0.0
- pestphp/pest-plugin-type-coverage: ^5.0.0
- phpstan/phpstan: ^2.1.39
- rector/rector: ^2.3.8
- symfony/var-dumper: ^8.0.4
This package is auto-updated.
Last update: 2026-03-05 04:38:52 UTC
README
Terminal Detector
Detects which terminal emulator is running the current PHP process.
Requires PHP 8.2+
Installation
composer require shipfastlabs/terminal-detector
Usage
use TerminalDetector\TerminalDetector; $result = TerminalDetector::detect(); if ($result->detected) { echo "Running inside: {$result->name}"; } // Check for a specific known terminal if ($result->knownTerminal() === \TerminalDetector\KnownTerminal::Ghostty) { echo "Hello from Ghostty!"; }
Or use the standalone function:
use function TerminalDetector\detectTerminal; $result = detectTerminal();
Result Properties
$result->detected; // true / false $result->name; // e.g. 'iterm2', 'ghostty', 'vscode' $result->version; // e.g. '3.5.0' (from TERM_PROGRAM_VERSION) $result->knownTerminal(); // KnownTerminal enum or null
Known Terminals
The KnownTerminal enum provides type-safe identifiers for all supported terminals:
| Enum Case | Value |
|---|---|
KnownTerminal::ITerm2 |
iterm2 |
KnownTerminal::AppleTerminal |
apple-terminal |
KnownTerminal::VSCode |
vscode |
KnownTerminal::Hyper |
hyper |
KnownTerminal::WarpTerminal |
warp |
KnownTerminal::WezTerm |
wezterm |
KnownTerminal::Kitty |
kitty |
KnownTerminal::Alacritty |
alacritty |
KnownTerminal::Ghostty |
ghostty |
KnownTerminal::WindowsTerminal |
windows-terminal |
KnownTerminal::JetBrains |
jetbrains |
KnownTerminal::Konsole |
konsole |
KnownTerminal::GnomeTerminal |
gnome-terminal |
KnownTerminal::Tilix |
tilix |
KnownTerminal::Tabby |
tabby |
KnownTerminal::Rio |
rio |
KnownTerminal::Tmux |
tmux |
KnownTerminal::Zellij |
zellij |
KnownTerminal::Screen |
screen |
KnownTerminal::SSHSession |
ssh |
KnownTerminal::Xterm |
xterm |
Supported Terminals
| Terminal | Detection Method |
|---|---|
| iTerm2 | TERM_PROGRAM |
| Apple Terminal | TERM_PROGRAM |
| VS Code | TERM_PROGRAM |
| Hyper | TERM_PROGRAM |
| Warp | TERM_PROGRAM |
| WezTerm | TERM_PROGRAM |
| Rio | TERM_PROGRAM |
| Kitty | KITTY_WINDOW_ID / TERM |
| Ghostty | GHOSTTY_RESOURCES_DIR / TERM |
| Windows Terminal | WT_SESSION |
| JetBrains | TERMINAL_EMULATOR |
| Konsole | KONSOLE_DBUS_SESSION / KONSOLE_VERSION |
| Tilix | TILIX_ID |
| GNOME Terminal | GNOME_TERMINAL_SCREEN / VTE_VERSION |
| Tabby | TABBY_CONFIG_DIRECTORY |
| Alacritty | TERM |
| Xterm | TERM |
| tmux | TMUX |
| Zellij | ZELLIJ |
| Screen | STY |
| SSH | SSH_CONNECTION / SSH_CLIENT |
Custom Override
Set the TERMINAL_DETECTOR environment variable to force a specific terminal name:
TERMINAL_DETECTOR=my-terminal php script.php
License
Terminal Detector is open-sourced software licensed under the MIT license.
