有馬総一郎のブログ

(彼氏の事情)

2021年05月07日 20:03:40 JST - 5 minute read - Linux

高速で機能的なGPUベースのターミナルエミュレーターkittyを使ってみる

alacrittyを使ってみたのだが、背景画像を設定できないこと、タブで開けないのが、残念。また、そこまで端末で生きる人間でないから、そのパフォーマンス、操作性、拡張性とか素晴しさを理解できない。

なんてことを思いながら、 Tabs support in the terminal · Issue #3129 · alacritty/alacritty · GitHubを眺めていたら、 https://sw.kovidgoyal.net/kitty/が紹介されていた。

インストール

インストールは以下のとおり、宜しくやってくれる。

$ curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
$ ln -s ~/.local/kitty.app/bin/kitty ~/.local/bin/
$ sed -i "s|Icon=kitty|Icon=/home/$USER/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png|g" ~/.local/share/applications/kitty.desktop
$ sudo update-desktop-database

使ってみて、分かったが、フォントと文字入力の点で癖がある。

設定

以下、変更部分のみ抜粋

kitty.conf

  font_family      Ubuntu Mono
  font_size 14.0
  scrollback_pager_history_size 1024
  background_image /home/arimasou16/Picture/お気に入り/芸能人/川津明日香/川津明日香 - 春風な彼女02.png
  background_image_layout tiled
  background_tint 0.7

設定するとこんな感じ1

kitty

フォント

このkittyは選べるフォントがシビアだ。 Not using the fonts asked for (not monospace?) · Issue #179 · kovidgoyal/kitty · GitHub

kitty only uses monospace fonts, that is the fonts listed under kitty list-fonts. Because kitty speeds up rendering by storing individual cell glyphs on the GPU, and monospaced font is really needed.
kittyは、モノスペースフォント、つまりkittylist-fontsの下にリストされているフォントのみを使用します。 キティは個々のセルグリフをGPUに保存することでレンダリングを高速化するため、等幅フォントが本当に必要です。

Configuring kitty — kitty 0.20.3 documentation

正しく使えるfontはkitty + list-fonts --psnamesで表示されるものだけと思った方が良さそうだ。正直、フォントにトピックが色々立っているが、読んでも意味が分からない。 Cica, NotoSansMonoCJKjp, HackGen とか使ってみたけど、半角文字が全角文字の幅で表示されてしまう…そんな中で Ubuntu Mono が普通に表示されたので、それを使っている。

全角文字が含まれるフォントは細かい設定しないと全部、全角文字幅で表示されるちゃうの?

kitty

フォントについてはかなり細かいカスタマイズが行えるようなので、そういうのが強い方ならば、きっと満足行く形で表示できるだろう。多分。

背景画像

background_opacity 1.0 を初め弄ったのだが、そうすると背景画像まで透過されてしまうので、私は透過させない。 背景画像をどれだけ背景色の色合いにするかは background_tint で設定できる。これは背景透過もしくは背景画像設定時に有効となる。

background_image のパス設定は空白スペースがあってもそのままで良い。下手にコーテーションで括ると動かない。

background_image_layout で背景画像をタイル状にするか、拡大縮小するかをtiledscaledで選択できる。ただ、アスペクト比を保ったままで拡大ってのが無いんだよなぁ。まあ、それがいやなら背景画像を自分で拡大縮小して別作成しておくべきということか。

入力メソッド

入力メソッド、Input Method2

kitten for IME input · Issue #469 · kovidgoyal/kitty · GitHub

IME does not work with kitty thanks to limitations of GLFW (glfw/glfw#41). 3
GLFW制限により、IMEはキティでは機能しません。

skkとかmozcが有効にならない。これは人によったら致命的かな。私の場合、日本語を打つときはvimを開いて eskkで入力するので問題ないが、そうでない端末上では、日本語が打てないということに。

ただ、これは改善されていてGLFW_IM_MODULE=ibus kittyで起動させれば有効になる。それが煩わしければ環境変数としてGLFW_IM_MODULE=ibusを設定してしまえば、kittyを起動するたびに有効になる。

kitty

しかし、一度有効化してしまうとずっとibus-skkのままとなるので変換エンジン(IME)の切り替えができない(英語キーボード入力に変更できないというべきか)。なので入力モードを切り替えていくしかない。

まあ、Windowsとかでは、同じIME内で有効化/無効化(Google日本語入力内で変換の有効化/無効化)で文字を打つのは当たり前なのだけど、iBus 1.5あたりから、変換エンジンの切り替えで半角入力、全角入力を切り替えるようになったので、変換エンジンを固定されると使いづらい。

そして、vim上では eskkを入力メソッドにするのでIMEを有効にしたくない。だから、通常時はIME無効のまま使っている。ただ、たまに有効にした時もあるようなぁってことで

~/.local/share/applications/kitty.desktop

[Desktop Entry]
・・・省略・・・
Actions=ibus_active;

[Desktop Action ibus_active]
Name=ibus_active
Exec = bash -c "env GLFW_IM_MODULE=ibus kitty"

追記して、別アクションでIME有効で起動できるようにした。注意点として [Desktop Entry]Actions=として別アクションを追記しおかないと[Desktop Action 別アクション]が表示されない。

kitty

またfcitxFcitx5でないとIME有効にならない。迷ったけど 第542回 生まれ変わったLubuntu 18.10を使用する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社で、いくやさまが

インプットメソッドはFcitxをIBusの両方が使用できますが,どちらかといえばIBusのほうがおすすめです。

とおっしゃるのでibusに変更した。fcitx5が通常リリースされたら戻すかも。

$ im-config -n ibus
$ gsettings set org.freedesktop.ibus.panel xkb-icon-rgba '#ffffff'

既存のアプリケーション

ということで QTerminal を気に入ってるという記事をエントリーしてから、数日も経たない内に乗り換えてる。LubuntuではLXQtセッションの設定 -> 既存のアプリケーション -> ターミナルエミュレーションショートカットキーLaunch Terminalkittyに変更すればバッチリ切り替えることができる。

kitty
既存のアプリケーション
kitty
ショートカットキー グローバル・アクションの管理


  1. 背景画像は 川津明日香 春風な彼女 - DMMブックス(旧電子書籍) p.24 ↩︎

  2. ここらへんの仕様を理解してないので、言葉の使い分けが難しい。fcitx-skkの場合、fcitxIMskkIME(Input Method Engine) と思ってるが合ってるのかな。 ↩︎

  3. IME input · Issue #41 · glfw/glfw · GitHub ↩︎