mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
Merge pull request #654 from phinze/doc-terminfo-ssh
Document terminfo & SSH details
This commit is contained in:
51
README.md
51
README.md
@ -204,6 +204,57 @@ fi
|
||||
**This must be at the top of your bashrc, not the bottom.** The same
|
||||
goes for any other shell.
|
||||
|
||||
### Terminfo and SSH
|
||||
|
||||
Ghostty ships with its own [terminfo](https://en.wikipedia.org/wiki/Terminfo)
|
||||
entry to tell software about its capabilities. When that entry is detected,
|
||||
Ghostty sets the `TERM` environment variable to `xterm-ghostty`.
|
||||
|
||||
If you use SSH to connect to other machines that do not have Ghostty's terminfo
|
||||
entry, you will see error messages like `missing or unsuitable terminal:
|
||||
xterm-ghostty`.
|
||||
|
||||
Hopefully someday Ghostty will have terminfo entries pre-distributed
|
||||
everywhere, but in the meantime there are two ways to resolve the situation:
|
||||
|
||||
1. Copy Ghostty's terminfo entry to the remote machine.
|
||||
2. Configure SSH to fall back to a known terminfo entry.
|
||||
|
||||
#### Copy Ghostty's terminfo to a remote machine
|
||||
|
||||
The following one-liner will export the terminfo entry from your host and
|
||||
import it on the remote machine:
|
||||
|
||||
```shell-session
|
||||
$ infocmp -x | ssh YOUR-SERVER -- tic -x -
|
||||
```
|
||||
|
||||
**Note: macOS versions before Sonoma cannot use the system-bundled `infocmp`.**
|
||||
The bundled version of `ncurses` is too old to emit a terminfo entry that can be
|
||||
read by more recent versions of `tic`, and the command will fail with a bunch
|
||||
of `Illegal character` messages. You can fix this by using Homebrew to install
|
||||
a recent version of `ncurses` and replacing `infocmp` above with the full path
|
||||
`/opt/homebrew/opt/ncurses/bin/infocmp`.
|
||||
|
||||
#### Configure SSH to fall back to a known terminfo entry
|
||||
|
||||
If copying around terminfo entries is untenable, you can override `TERM` to a
|
||||
fallback value using SSH config.
|
||||
|
||||
```ssh-config
|
||||
# .ssh/config
|
||||
Host example.com
|
||||
SetEnv TERM=xterm-256color
|
||||
```
|
||||
|
||||
**Note: Fallback does not support advanced terminal features.** Because
|
||||
`xterm-256color` does not include all of Ghostty's capabilities, terminal
|
||||
features beyond xterm's like colored and styled underlines will not work.
|
||||
|
||||
**Note: Requires OpenSSH 8.7 or newer.** [The 8.7 release added
|
||||
support](https://www.openssh.com/txt/release-8.7) for setting `TERM` via
|
||||
`SetEnv`.
|
||||
|
||||
## Roadmap and Status
|
||||
|
||||
The high-level ambitious plan for the project, in order:
|
||||
|
Reference in New Issue
Block a user