11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

qnoteAdvent Calendar 2022

Day 12

ねこが居る会社でkittyを使う

Last updated at Posted at 2022-12-11

プログラミングスクール時代からなんとなく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を使うと矢印や比較演算子の表示が変わったのに驚いた!
スクリーンショット 2022-12-06 10.48.36.png

背景画像

background_imageでファイルパスを指定することで簡単にターミナルの背景画像を設定できる
画像はPNG形式でないとダメらしい

背景画像に設定する画像のコントラストが明るい場合は文字が見えにくくなることがある
その場合はbackground_tintの値を調整すると背景が暗くなり文字が読みやすくなる

background_tint 0.0

スクリーンショット 2022-12-07 11.20.49.png

background_tint 0.6

スクリーンショット 2022-12-07 11.20.28.png

# 画像ファイルのパスを指定
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(デフォルト)で閉じることができる
ウィンドウ操作.gif

ウィンドウレイアウト変更

分割したウィンドウのレイアウトを変更したい時はkitty_mod + spaceを入力すると切り替えられる

#: ウィンドウのレイアウト変更
map kitty_mod+space next_layout

ウィンドウレイアウト変更.gif

ウィンドウの移動

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

ウィンドウ移動.gif

タブ切り替え

開いているタブを移動する際のコマンドも自分が使いやすいキーに変えている

# 次のタブへ移動
map kitty_mod+n next_tab

# 前のタブへ移動
map kitty_mod+p previous_tab

タブ移動.gif

画像表示

kittyはターミナル上で画像を表示できる
コマンドを毎回入力するのは大変なのでエイリアスを設定することを推奨されている
スクリーンショット 2022-12-11 16.45.41.png

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

ウィンドウ同時操作.gif

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

スクリーンショット 2022-12-10 15.29.34.png

問題点

kittyに切り替えて僕が感じた問題点はいくつかあった

日本語入力

ターミナルでの日本語表示、日本語入力自体は今の所問題ないが
vimでコメントアウト時に日本語入力するとバグって入力されることがある、、
こまめにEnterで入力を確定したり、一度ノーマルモードに抜けて入力し直せば再入力できるようになるが
若干のストレスは感じる、、今後改善されると嬉しい

tmuxのようにデーモン実行できない

個人的な問題ですが複数の案件で作業している時に、案件ごとにターミナルのタブなどの状態をセッションを保持しておける
tmuxを使っていたので、kittyの機能としては見当たらなかった、、
同じ悩みを抱えている人もいるようなので探せば解決策が見つかるかもしれない、、

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?