プログラミングスクール時代からなんとなくiTerm2を使っていたが
ねこが居る会社に入社して3年、アイコンにねこが居るkittyというターミナルを使ってみた
kittyの設定はkitty.confを編集することでカスタマイズができる
僕が設定した項目と便利だと思った項目をまとめてみた
kitty設定ファイル
kittyのターミナル上でcmd + ,
を押すとkitty.confを開くことができる
編集した場合はcmd + ctrl + ,
でkitty.confをリロードする
# フォントの指定
font_family FiraCode Nerd Font Mono
# タブのデザイン
tab_bar_style powerline
active_tab_foreground #000
active_tab_background #ffc2e0
active_tab_font_style bold-italic
inactive_tab_foreground #444
inactive_tab_background #fee0e0
inactive_tab_font_style normal
tab_bar_background #fef4f4
# ターミナル背景画像
background_image ~/Downloads/IMG_2127.png
background_image_layout tiled
background_tint 0.6
# ウィンドウの移動 拡張機能必須 ※この記事に詳細あり
map kitty_mod+j kitten pass_keys.py neighboring_window bottom ctrl+j
map kitty_mod+k kitten pass_keys.py neighboring_window top ctrl+k
map kitty_mod+h kitten pass_keys.py neighboring_window left ctrl+h
map kitty_mod+l kitten pass_keys.py neighboring_window right ctrl+l
# 次のタブへ移動
map kitty_mod+n next_tab
# 前のタブへ移動
map kitty_mod+p previous_tab
# ウィンドウのレイアウト変更
map kitty_mod+space next_layout
# ウィンドウ同時入力 拡張機能必須 ※この記事に詳細あり
map kitty_mod+a launch --allow-remote-control kitty +kitten broadcast --match-tab state:focused
# 1行ごとのスクロール
map kitty_mod+cmd+y scroll_line_up
map kitty_mod+cmd+e scroll_line_down
# ページごとのスクロール
map kitty_mod+cmd+k scroll_page_up
map kitty_mod+cmd+j scroll_page_down
フォント
kittyは使えるフォントが限られているらしい
設定できるフォントはコマンドを叩くと確認ができる
kitty + list-fonts --psnames
僕は以前から使っていたフォント(FiraCode Nerd Font Mono)は問題なく使えた
kitty.confにfont_familyを編集すると好きなフォントが使える
font_family FiraCode Nerd Font Mono
kittyでFiraCode Nerd Fontを使うと矢印や比較演算子の表示が変わったのに驚いた!
背景画像
background_image
でファイルパスを指定することで簡単にターミナルの背景画像を設定できる
画像はPNG形式でないとダメらしい
背景画像に設定する画像のコントラストが明るい場合は文字が見えにくくなることがある
その場合はbackground_tint
の値を調整すると背景が暗くなり文字が読みやすくなる
background_tint 0.0
background_tint 0.6
# 画像ファイルのパスを指定
background_image ~/Downloads/IMG_2127.png
background_image_layout tiled
# 背景画像の色合いを調整
background_tint 0.6
ショートカットキー
ターミナル操作をキーボードから快適に操作するためにショートカットキーをカスタムした
vimを使っているのでvimと似た操作感かつターミナル操作に干渉しないように設定してみた
プレフィックス
kittyではプレフィックのようなものを設定できる
iTerm2の時はプレフィックスをCommandキー
にしていたので最初は同じ設定にしよとしていたが
Macのグローバルショートカットと被ってしまい、予期しない動作をしてします、、
その為、プレフィックスはデフォルトのまま使うことにした
# デフォルト設定
kitty_mod ctrl+shift
ウィンドウ操作
ウィンドウ分割
kitty_mod + Enter(デフォルト)
またはcmd + Enter(デフォルト)
ショートカットキーを入力するごとにウィンドウが分割される
ウィンドウを閉じたい時はkitty_mod + w(デフォルト)
で閉じることができる
ウィンドウレイアウト変更
分割したウィンドウのレイアウトを変更したい時はkitty_mod + space
を入力すると切り替えられる
#: ウィンドウのレイアウト変更
map kitty_mod+space next_layout
ウィンドウの移動
vim分割ウィンドウ移動と同じく h, j, k, l
で移動したいので拡張機能を導入した
neovimoプラグインマネージャーはpackerを使っているので記述を追加したが、なぜかインストールできていなかった、、
その為、GitHubのpass_keys.py
を~/.config/kitty/
に手動でコピーしてくることで解決した
README.mdのサンプルのctrl + *
だとターミナル操作中のbackspaceとdeleteに干渉してしまうのでkitty_mod + *
に変更した
# ウィンドウの移動
map kitty_mod+j kitten pass_keys.py neighboring_window bottom ctrl+j
map kitty_mod+k kitten pass_keys.py neighboring_window top ctrl+k
map kitty_mod+h kitten pass_keys.py neighboring_window left ctrl+h
map kitty_mod+l kitten pass_keys.py neighboring_window right ctrl+l
タブ切り替え
開いているタブを移動する際のコマンドも自分が使いやすいキーに変えている
# 次のタブへ移動
map kitty_mod+n next_tab
# 前のタブへ移動
map kitty_mod+p previous_tab
画像表示
kittyはターミナル上で画像を表示できる
コマンドを毎回入力するのは大変なのでエイリアスを設定することを推奨されている
kitty +kitten icat image.jpeg
# sellにエイリアスを設定すると便利
alias icat="kitty +kitten icat"
ウィンドウ同時操作
iTerm2では普段はtmuxを使っているがkittyはtmuxを推奨していないらしい
tmuxでよく使う機能にターミナル分割時のウィンドウ同時操作がある
tittyでは拡張機能として準備されていたので使ってみた
kittyのリモコン機能を拡張しているのでウィンドウの1つが入力専用画面になってしまうので画面が狭いこと以外は問題なかった
注意点
拡張機能を使うにはkitty.confに記述を追加する必要があるが記述方法に注意しないと
開いているすべてのウィンドウが同期してしまう
その為、操作したくないターミナル画面でも入力したコマンドが実行されてしまうので注意が必要だ
# 現在居るタブのウィンドウのみを同時入力する場合のマッピング
map kitty_mod+a launch --allow-remote-control kitty +kitten broadcast --match-tab state:focused
ssh
ssh接続してsudoコマンド、suコマンドを使うと
バックスペースが効かなくなったり、表示がおかしくなったり誤動作することがあった、、
原因は公式のQ&Aに理由が書いてある
kitty +kitten ssh
コマンドを使うことで解消されるらしいが、例外もあるようで僕の環境では例外に当てはまった
解決策に少し抵抗を感じたのでぶていさん
という方の記事を参考にエイリアスを張ることにした
kitty以外のターミナルを使った際にコマンドが被るのが嫌だったのでkssh
とした
alias kssh="TERM=xterm /usr/bin/ssh"
参考
https://tech.buty4649.net/entry/2022/01/21/191732
アイコン画像を変更
MacのDockに表示されるアイコンを変更できるらしい
公式のQ&Aにkittyのアイコンが好きではない
という項目があり、アイコンの変更方法といくつかサンプルも用意されていた
直接アイコンファイルを置き換える方法などいくつかあるみたいなので今回は
表示したいアイコンのパスを渡してアイコン画像を変更してみた
kitty +runpy 'from kitty.fast_data_types import cocoa_set_app_icon; import sys; cocoa_set_app_icon(*sys.argv[1:]); print("OK")' {表示させたい画像のパス} /Applications/kitty.app
設定に成功してもMacのキャッシュが残ってしまって正しく表示されないのでキャッシュを削除する必要がある
rm /var/folders/*/*/*/com.apple.dock.iconcache; killall Dock
問題点
kittyに切り替えて僕が感じた問題点はいくつかあった
日本語入力
ターミナルでの日本語表示、日本語入力自体は今の所問題ないが
vimでコメントアウト時に日本語入力するとバグって入力されることがある、、
こまめにEnterで入力を確定したり、一度ノーマルモードに抜けて入力し直せば再入力できるようになるが
若干のストレスは感じる、、今後改善されると嬉しい
tmuxのようにデーモン実行できない
個人的な問題ですが複数の案件で作業している時に、案件ごとにターミナルのタブなどの状態をセッションを保持しておける
tmuxを使っていたので、kittyの機能としては見当たらなかった、、
同じ悩みを抱えている人もいるようなので探せば解決策が見つかるかもしれない、、