ぶていのログでぶログ

思い出したが吉日

LinuxデスクトップのターミナルアプリとしてAlacrittyを使い始めた

f:id:buty4649:20180728214241p:plain

最近、会社用のPCをLinuxデスクトップに変えた。なんで変えたのかとかは別の機会でブログを書く…っと思う。

で、職業柄ターミナルアプリを酷使するので自分の手にあったものを使いたい。 今までMacを使っていたときはiTerm2を使っていた。 LinuxにはもちろんiTerm2はないので代わりのアプリを探さないといけない。 当初は、GNOME Terminalを使っていたのだがなんと OSC52が使えない のであった*1。 tmuxのクリップボード機能でOSC52を多様している*2私にとってこれは死活問題…。 仕方ないのでOSC52が使えるターミナルを探した。

そこで、xtermを使い始めた。 OSC52だけではなくSixelにも対応している! HiDPIな環境で色々設定は大変だったが、なんとか実用できるようにはなった。 …が、描画が致命的に遅いことがわかった。 tail -fやrsync -avなどでログが流れると、CPU使用率がかなり高くなりマウスがカクカクになって使い物にならなかった…。

で、最終的にAlacrittyに行き着いた。

クロスプラットフォームGPUアクセラレートターミナル

github.com

AlacrittyはクロスプラットフォームGPUアクセラレートを謳っている。 たしかに、macOSを使っているときに、試したことがあるが問題なく動作していた(結局はiTerm2に戻ったけど)。 GPUアクセラレートを謳っているだけあって確かに描画時のCPU負荷はかなり低い。 それでも、CPU使用率が15%程度になるが、xtermより圧倒的に速い。 また、OSC52にも対応している!!!神か??? しかしながら、Linux環境ではカラー絵文字が表示されない問題があるようだ。 ただ、個人的にはカラー絵文字が使えないことはあまり問題ではないので気にしないことにした。

OSC52のバッファが1000byteしかない

OSC52が使えるのだが、デフォルトでは1000byteしかない。 この1000byteは、Base64化したあとの文字列1000byte分なのでコピーできる文字はこれより少なくなる。 実際この制約はかなり厳しく、コマンドの結果がコピーできないことがしばしば起こっていた。

この問題は以下のissueで報告されているが、Fixされていない。

github.com

FixされていないがPRはでているので、私はこれを取り込んだものをビルドして使っている。

github.com

パッケージビルド

github.com

例のごとくパッケージビルダーを作った。 ・・・のだが、いつのまにかcargo-debに対応したためにdockerを用意しなくてもお手軽にビルドできるようになってしまった(cargoすげー)。 とはいえ、先に書いたOSC52のパッチを当てたいし、パッケージのバージョンが常に0.1.0で固定されているのが個人的に管理しづらかったのでそこら辺をよしなにしている。

まとめ

AlacrittyはLinuxのターミナルアプリとしてかなり便利に使っている。 カラー絵文字だったり、複数タブが開けないとかはあるが、開発は活発だしそのうち解決されるだろうたぶん。

OSC52対応が必須でなければGNOMEターミナルで十分だと思うし、ここらへんは好みかなぁっと思った次第。

*1:GNOME vte widgetのBugzillaに要望がでているのでこれがFixされれば使えるようになるかも? https://bugzilla.gnome.org/show_bug.cgi?id=795774

*2:https://buty4649.hatenablog.com/entry/2017/02/09/202007