Comment by awkwardleon

16 hours ago

Very likely due to ghostty setting TERM to xterm-ghostty and your destination not recognizing it. Quick temp fix is using the wrapper (ghostty +ssh), see <https://ghostty.org/docs/features/ssh>. More permanently, copy terminfo to the remote machine, see <https://ghostty.org/docs/features/ssh>.

It’s rude to install a terminfo on a remote machine (which you may not be the owner of). It’s a preposterous for a terminal emulator to install things on a remote machine just to make it work.

  • It's actually the remote machine that isn't working, but I get the frustration. What I did to fix this is to override the environment variables in your SSH config like this:

    Host * SetEnv TERM=xterm-256color

  • If you want to use in a terminal emulator features that do not exist in any xterm variant and the remote computer does know only xterm, there is no way to do that without installing data into the terminfo database.

    Otherwise, there is no need to install anything, you should just set the environment variable TERM in the remote computer to one of the xterm variants and then modern terminal emulators like kitty or ghostty will still work fine, but of course only as long as you use the xterm-compatible subset of their features.

  • It's not a VAX that you're physically plugging a terminal into. The remote machine is totally capable of communicating with a newer terminal, it just needs to know how. You're being nice by giving it that information. You can also just install it locally in your home directory (~/.terminfo). (You used to be able to stuff the entire entry into the TERMCAP environment variable and not install anything.)

  • If the remote machine doesn’t have the right support for your terminal, what do you suggest?

    • You can install stuff--with tic(1)--inside your user account (you do have one, right?) and be happy that way.

Yea unfortunately eg Ubuntu’s bashrc has a script which will make it drop colors regardless of the presence of ghostty’s terminfo. Its `screen` will also fail, so e.g. it will refuse to upgrade to a new distro release.

Lots of jank due to this custom terminfo.

  • Every terminfo is custom, to the terminal it applies to. It's just that most entries are 20+ years old and even glacial distros have converged on some version of the database that mostly worked, until the recent resurgence of interest in actually writing new terminal software.