私のローカル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データに変換したりするにはどうすればよいですか?
(私はTERM
をxterm-256color
のような安全な値に設定するような回避策を知っていますが、それは敗北だと思いますterminfoの目的)
物事を適切に翻訳するために、手動で変更を加える必要がある場合があります。
説明の「重要な」部分を翻訳できるように、次の変更を加えました。
これにより、「重要」なものを犠牲にすることなく、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#8
、pa#64
合わせる)。