web-dev-qa-db-ja.com

FreeBSDでterminfoエントリを使用するにはどうすればよいですか?

私のローカルLinuxマシンでは termite(VTE-based) を使用しています。独自の terminfo ファイル(xterm-termite)が付属しており、デフォルトではncursesで配布されません。

リモートのFreeBSDサーバーに接続しようとしています。残念ながら、FreeBSDはデフォルトで古いtermcap形式のみを使用します。 terminfoをtermcapに変換する方法を見つけることができませんでした。したがって、ポート(devel/ncurses)からのterminfoサポートを含むバージョンのncursesをコンパイルできますが、ncursesアプリケーションはデフォルトでシステム提供のlibにリンクします。これにより、アプリの起動に失敗します。

$ echo $TERM
xterm-termite
$ toe | grep termite
xterm-termite   VTE-based terminal
$ tmux
open terminal failed: can't find terminfo database
$ htop
Error opening terminal: xterm-termite.

toeはterminfoエントリを一覧表示します)

FreeBSDがデフォルトでterminfoを使用するようにしたり、アプリケーションにポート提供のncurses libを使用させたり、少なくともterminfoをtermcapデータに変換したりするにはどうすればよいですか?

(私はTERMxterm-256colorのような安全な値に設定するような回避策を知っていますが、それは敗北だと思いますterminfoの目的)

7

物事を適切に翻訳するために、手動で変更を加える必要がある場合があります。

説明の「重要な」部分を翻訳できるように、次の変更を加えました。

  • Termcap形式では表現できない削除された機能:
    • 動的な色の変更(ccc/initc)
    • 多属性設定シーケンス(sgr)
    • ビジュアルベル(フラッシュ、termcapでは機能しない中間遅延が必要)
  • 役に立たない機能を削除しました:
    • VT100ボックス描画文字(smacs/rmacs/acsc、sgr0も変更)
    • 8ビットのメタキー(km/smm/rmm)、またThomas Dickeyは、実際には機能しないと述べました。
    • 印刷(mc5i/mc0/mc4/mc5)
    • カーソルの点滅(cvvis、cnormも変更)
    • HPは拡張機能を呪う(meml/memu)
    • タブストップの動的変更(hts/tbc)
    • 使用頻度の低い属性(dim/invis)
  • めったに使用されず、長すぎる機能を削除しました
    • シフトされた関数/カーソルキー(kf13 +、kLFT/etc [大文字の名前]、種類、kri [シフトアップ/ダウンに使用])
    • 長い形式の初期化およびリセットシーケンス(is2/rs2)
    • 端末の識別と応答(u8/u9)
  • より良くフィットするようにいくつかのことを書き直しました/ termcapと互換性があります
    • Setab/setafをより効率の悪いtermcap互換バージョンに変更
    • Smkx/rmkx/clearを短くするように変更しました

これにより、「重要」なものを犠牲にすることなく、1001文字にまで削減されました(特に、256色をサポートし、タイトルバーのテキストを設定します)。

 xterm-termite | VTEベースの端末:\ 
:NP:am:hs:mi:ms:ut:xn:\ 
:Co#256:co#80: it#8:li#24:pa#32767:\ 
:@ 7 =\EOF:@ 8 =\EOM:AB =\E [48; 5;%dm:AF =\E [38; 5;%dm:AL =\E [%dL:\ 
:DC =\E [%dP:DL =\E [%dM:DO =\E [%dB:F1 =\E [23 〜:F2 =\E [24〜:\ 
:IC =\E [%d @:K2 =\EOE:Km =\E [M:LE =\E [%dD:RA =\E [?7l:RI =\E [%dC:\ 
:SA =\E [?7h:SF =\E [%dS:SR =\E [%dT:UP =\E [%dA :ZH =\E [3m:\ 
:ZR =\E [23m:al =\E [L:bl = ^ G:bt =\E [Z:cb =\E [1K:cd =\E [J:ce =\E [K:\ 
:ch =\E [%i%dG:cl =\E [H\E [J:cm =\E [%i%d; %dH:cr = ^ M:\ 
:cs =\E [%i%d;%dr:cv =\E [%i%dd:dc =\E [P:dl =\E [ M:do = ^ J:\ 
:ds =\E] 2;\007:ec =\E [%dX:ei =\E [4l:fs = ^ G:ho =\E [H :im =\E [4h:\ 
:k1 =\EOP:k2 =\EOQ:k3 =\EOR:k4 =\EOS:k5 =\E [15〜:k6 =\E [17〜 :\ 
:k7 =\E [18〜:k8 =\E [19〜:k9 =\E [20〜:k; =\E [21〜:kB =\E [Z:kD =\E [3〜:\ 
:kI =\E [2〜:kN =\E [6〜:kP =\E [5〜:kb =\177:kd =\EOB:ke =\E [?1l:\ 
:kh =\EOH:kl =\EOD:kr =\EOC:ks =\E [?1h:ku =\EOA:le = ^ H:md =\E [ 1m:\ 
:me =\E [m:mr =\E [7m:nd =\E [C:op =\E [39; 49m:r1 =\Ec:rc =\E8:\ 
:sc =\E7:se =\E [27m:sf = ^ J:so =\E [7m:sr =\EM:ta = ^ I:te =\E [?1049l:\ 
:ti =\E [?1049h:ts =\E] 2;:u6 =\E [%i%d;%dR:u7 =\E [6n:ue =\E [24m:\ 
:up =\E [A:us =\E [4m:ve =\E [?25h:vi =\E [?25l:

インデントされたすべての行は、インデントにタブを使用する必要があることに注意してください。

カラーサポートにとって重要なのは、ABおよびAF機能です。256色の端末であるため、setab/setafから自動的に変換できませんでした。 termcapの関連部分は:AB=\E[48;5;%dm:AF=\E[38;5;%dm:;非256色モードの場合は:AB=\E[4%dm:AF=\E[3%dm:(およびCo#8pa#64 合わせる)。

4
Random832