Linuxのターミナルエミュレータを比較してみた

ターミナルエミュレータにみんな不満を持っているようなのに、きちんと選んでない気がするので、比較。

メジャー編

挙動 Gnome Terminal Xfce4 Terminal MATE Terminal Konsole QTerminal Xterm
タブ Yes Yes Yes Yes Yes No
単一タブ時の表示 Hide Hide Hide Configuratable Configuratable -
カラーテーマ Scheme & Edit Scheme & Edit Scheme & Edit per Profile (Scheme) Scheme Configuratable
背景画像 廃止 Yes Yes Yes (+Blur) Yes No?
背景透過 廃止 (外部から可能) Yes Single Color only Yes Yes Yes?
アプリケーション透過 No No No No Yes No
タブの色分け プロファイルごと Yes Yes Yes Yes -
セル間隔調整 Yes Yes No No No No
ambiguous char Configuratable Configuratable FontConfig FontConfig FontConfig FontConfig
プロファイル Yes No Yes Yes No File
スクロール Yes Yes Yes Yes Yes Yes
バッファリミット Configuratable Configuratable Configuratable Configuratable Configuratable CLI Option
スクロールアップ時の新規出力 Configuratable Configuratable Keep Keep Scroll Scroll?
スクロールアップ時の入力 Configuratable Configuratable Scroll Scroll Scroll Scroll?
終了確認 No No No No Yes No
マルチタブでの終了確認 No Yes No Yes No -
稼働中プロセスでの終了警告 List No List List No No
フォント 自由 自由 自由 QT monospace QT monospace 自由
Backspace Configuratable Configuratable & Auto Configuratable Keyboard Type Emulation ASCII DEL
Del Configuratable Configuratable & Auto Configuratable Keyboard Type Emulation \e[3~
単語選択文字設定 No Yes Yes Yes No Yes
画面分割 No No No No Yes No
開くディレクトリ Terminal Process Default Tab Current / Configuratable Terminal Process Default Terminal Process Default Terminal Process Default / Tab Current -

Gnome TerminalとMATE Terminalはログイン端末にするかどうかの選択ができる。

XFce4 Terminalはダブルクリック時に選択する文字列や、ベルも設定可能でかなり細かい。 ただし、稼働プロセス警告やプロファイルはない。

KonsoleはURLヒントの表示、点滅テキストの制御などが可能。 マルチタブ終了もプロセス終了も警告される。

QTerminalは使いにくいポイントや配慮不足が色々ある割に、 ドロップダウン端末や、ショートカット設定、画面分割など独特な機能は持っている。 また、プロセス終了警告がなく、タブでプロセスが稼働している場合にタブを閉じると確認せずにタブを閉じる。

マイナー編

挙動 LXTerminal VTE3 Sakura Pantheon Terminal rxvt Unicode ST
タブ Yes No Yes Yes No No
単一タブ時の表示 Hide - Configuratable Show - -
カラーテーマ Scheme & Edit ? Sceheme (ウィンドウ色は編集可能) Edit Edit CLI Option / Build Config
背景画像 No ? No No No? No
背景透過 No ? No Yes Yes? No
アプリケーション透過 No No? No No No No
タブの色分け No - Yes No - -
セル間隔調整 No ? No No Yes No
ambiguous char FontConfig FontConfig FontConfig FontConfig FontConfig FontConfig
プロファイル No No? No No File / CLI Option No
スクロール Yes Yes Yes Yes Yes No
バッファリミット Configuratable ? Fixed Fixed Configuratable -
スクロールアップ時の新規出力 Keep Keep? Keep Keep Keep -
スクロールアップ時の入力 Scroll Scroll? Scroll Scroll Scroll -
終了確認 No No No No No No
マルチタブでの終了確認 Yes - No No - -
稼働中プロセスでの終了警告 No No No/Caution Only Caution Only No No
フォント 自由 ? 自由 自由 自由 CLI Option / Build Config
Backspace ASCII DEL ASCII DEL? ASCII DEL ASCII DEL ASCII DEL ASCII DEL
Del \e[3~ \e[3~? \e[3~ \e[3~ \e[3~ \e[3~
単語選択文字設定 Yes ? No No Yes No
画面分割 No ? No No No No
開くディレクトリ Tab Current - Tab Current Home Directory - -

LXTerminalとPantheon Terminalは機能自体がすごく限定的だ。

VTE3については情報がなくて設定方法がわからなかった。 色んな端末が内部的に使っているので入ってはいるけれど、直接使う人はいなさそう。

Sakuraは設定できる項目がだいぶ少ない。Pantheonも同様でここらへんはユーザーが触れる項目を減らす思想か。

Pantheon Terminalは終了時に開いていた数だけタブを開く。 多分全くうれしくないが、設定可能である。

urxvtは何気にフォーカスオフ時に暗くすることもできたりする。

STはスクロールできないと言っているが、Shift+Pg{Up,Down}でできる…が、かなり端末以外の設定に依存してしまうためできないと思ったほうがよい。 STは非常にシンプルで、日本文化にはなじまないかなぁ。

おまけ: grml-zsh-config のグラデーションプロンプトテーマ

端末 表示
Gnome Terminal グラデーション、ただし幅がおかしい
XFce4 Terminal グラデーション
MATE Terminal グラデーション
Konsole 文字として表示
QTerminal 文字として表示
XTerm 文字として表示
LXTerminal グラデーション
VTE3 グラデーション
Sakura グラデーション
Pantheon Terminal グラデーション
LXTerminal グラデーション
rxvt Unicode 文字として表示
ST 文字として表示

比較してみて

XFce4 Terminalが非常に優秀。

おことわり

とりあえず試してみたというところなので、各端末の設定に関して知悉しているわけではない。

誤りや不足がある可能性がある。

  • 誤りの指摘
  • 比較して欲しい点の追加
  • 設定方法のレクチャー

などどしどしお寄せいただきたい。

ブログをSSLを強制するように変更

先のSSLの記事がちょっとバズったのだけど、そこでツイートしたりするとHTTPになってしまうことに気づいた。

そこを修正しようかと思ったのだけど、どうせだからHTTPS強制するようにした。

そもそも私のサイトがHTTPに対応している理由はアクセシビリティである。 レガシー環境や、自作ツールを使っている人にとってHTTPSは障害となりうる(特にLet’s Encryptを使っているので、レガシー環境では警告される)。 そのためHTTPの接続を便宜上受け入れるようにしている。

しかし、ブログはWordPressなので、レガシー環境どころか、ちょっと前の現役環境ですら支障があるので、 HTTPを受け入れる必要がないことに気づいた。

まぁ、ブログに関しては別のサーバーでやっていたので、HTTPSに対応する方法がなかったのだが、 つい最近ブログを取り込んでからも特にHTTPSを案内することもしていなかった (ブラウザや検索結果ではデフォルトでHTTPSを選択するだろう、という考えもあった)。

だが、せっかくHTTPSに対応したし、特に私はHTTP推進派というわけでもないので、HTTPを強制するようにした。

方法は、rewiteするのではなく、301を返している。

server {
        listen 80;
        listen [::]:80;
        server_name chienomi.reasonset.net;
        access_log /var/log/nginx/chienomi.log;
        return 301 https://$host$request_uri;
}


server {
  server_name chienomi.reasonset.net;
  root /web/blog/chienomi;

  access_log /var/log/nginx/chienomi.log;
  index           index.php;

  include global/sslsettings.conf;
  include global/wpsettings.conf;
}

設定をまとめていることで非常にシンプルである。