Benutzer-Werkzeuge

Webseiten-Werkzeuge


kitty
  • Terminalemulator

Troubleshooting

Unknown terminal type

  • Meldung „Unknown Terminal Type“
  • oder Probleme bei Eingaben oder Farben
    • wie fehlende Farben oder Backspace oder Pfeiltasten funktionieren nicht
  • Programme im Terminal müssen die Sequenzen kennen um das Terminal zu steuern und wissen was das Terminal kann
    • für gewöhnlich macht das (n)curses-Library für die Programme
    • die Informationen können über die termcap/terminfo-Bibliothek (terminfo ist eine neuere Implementierung) (ncurses greift auf diese Bibliotheken zu) abgerufen werden
    • die Informationen stehen in der termcap-Datenbank
      • in der Regel sind das einzelne Dateien für die einzelnen Terminals
  • welcher Terminal(-Emulator) gerade aktiv ist steht in der Regel in der $TERM-Variable
  • Kitty hat eine eigene Termcap-Datei und eigene eigene Terminal-Bezeichnung
    • viele „einfachere“ Terminal-Emulatoren melden sich als „xterm-256color“, da sie dazu kompatibel sind
    • kitty stellt mehr Funktionalitäten zur Verfügung
  • Kitty meldet sich als „xterm-kitty“

ssh

  • TERM wird durch ssh übermittelt → die Remot-Maschine weiß also welches Terminal benutzt wird
  • kitty ist aber keines der verbeiteten Terminals, in der Regel ist die entsprechende Termcap-Datei daher auf der Remote-Maschine nicht installiert
    • das führt zum Fehler „Unknown Terminal Type“
  • TERM auf ein anderes (kompatibles) Terminal setzen
    • „export TERM=xterm-256color“ auf der Remote-Maschine eingeben
    • einige Funktionen von kitty werden nicht funktionieren/es kann in seltenen Fällen zu seltsamen Phänomenen kommen
      • aber meist sollte das funktionieren
  • ssh kitten

kitty +kitten ssh user@whatever

  • macht ssh zum gewünschten Host (alle Parameter werden transparent an ssh übergeben)
  • kopiert das Terminfo-File von Kitty nach ~.terminfo/kitty.terminfo auf dem Zielsystem
    • es kann auf Wunsch weitere Dateien kopieren und Umgebungsvariablen setzen
      • .zshrc, vimrc usw.
  • um einen Alias zu erzeugen (ssh wird dann auf kitty +kitten ssh gemappt) kann man folgendes in seine .zshrc oder .bashrc hinzufügen:

if [ "$TERM" = 'xterm-kitty' ]; then
        alias ssh='kitty +kitten ssh'
fi

  • kopieren des terminfo-Files
    • im lokalen Kitty „echo $TERMINFO“
      • das liefert den Pfad zur Terminfo-File
    • oder infocmp
      • ganz oben wird die Datei genannt aus der gelesen wurde
    • die Datei in das Verzeichnis „~/.terminfo“ auf der Remote-Maschine kopieren
      • das Verzeichnis wird in der Regel nicht existieren → muss angelegt werden
  • die bessere Idee ist wahrscheinlich aber dieser Weg:

infocmp -a xterm-kitty | ssh myserver tic -x -o \~/.terminfo /dev/stdin

  • das dumped den Inhalt des Terminfo-Files und compiliert es und dumped den Inhalt in ~/.terminfo/

sudo

  • Problem ist wahrscheinlich das kitty als User-Installation (also nicht systemweit) installiert wurde
  • für „normales“ sudo (wenn man root wird) lässt es sich so lösen:
    • sudo visudo

Defaults env_keep += "TERM TERMINFO"

am Ende hinzufügen

  • übernimmt in die neue Shell-Session die Terminfo-Variable (und die Term-Variable)
  • wenn man sudo -u <irgendeinBenutzer> nutzt hat man aber keinen Zugriff auf die Terminfo-Datei im Benutzerverzeichnis
    • die vorstehende Änderung am sudoers file muss rückgängig gemacht werden
      • sonst wird versucht auf die TERMINFO im Benutzerverzeichnis zuzugreifen, die nicht gelesen werden kann
    • es hilft nur global installieren der Datei

infocmp > /tmp/kitty
sudo tic /tmp/kitty 

  • infocmp ließt die (binäre) geladene Terminfo-Datei aus und schreibt sie als Text nach /tmp/kitty
  • tic ließt die Textdatei ein und compiliert sie und da per sudo aufgerufen installiert es sie systemweit
  • man kann natürlich auch die bereits kompilierte Terminfo-Datei (für gewöhnlich in ~/.local/kitty.app/share/terminfo/x) manuell dorthin kopieren wo die Terminfo-Dateien erwartet werden (das hängt aber von der Distribution/Betriebssystem ab)
kitty.txt · Zuletzt geändert: 2023/07/17 21:55 von root