🔤

en_USで頑張るArch Linux日記 7日目:fastfetch, Kitty(その2)

に公開

en_USで頑張るArch Linux日記の7日目です。

個人的に気になった部分に手を入れていきます。

Fastfetch

fastfetchはシステム情報をコマンドラインで表示するツールですが、標準的な情報の他にも細かなスタマイズが可能です。

すでにML4Wの設定が入っているはずなので、そのファイルを修正します。

サイズ表示をGBに変更

まずはFAQにあるように、RAMやストレージのGiB単位をGBに変更してみます。

~/.config/fastfetch/config.jsonc
    :
  "display": {
      // ここから追加
      "size": {
          "binaryPrefix": "jedec"
      },
      // ここまで追加
      "separator": " ➜  "
  },
    :

Arch Linuxのインストール日付を追加

次に、より柔軟な例を挙げます。

筆者はディストロのインストール日付が結構気になるので、これをfastfetchで表示させています。
最上部のOSの下にインストール日付を出すようにしました。

~/.config/fastfetch/config.jsonc
  "modules": [
    :
       {
          "type": "os",
          "key": "OS   ",
          "keyColor": "31",  // = color1
      },
      // ここから追加
      {
          "type": "command",
          "text": "printf \"\b\b\b    (at %s)\n\" $(stat -c '%w' /var/log/pacman.log|cut -d' ' -f1)",
          "key": " │  ",
          "keyColor": "31",
      },
      // ここまで追加
    :

typecommandにすると、任意のコマンドの出力結果を表示することができます。
使うコマンドはtextに記入します。

ここでは、statコマンドを使ってpacmanのログファイルの生成日付を取得しています[1]

printfコマンドに与えている\bはバックスペースを表すエスケープ文字です。
これはfastfetchが自動的に埋め込んでいるを消すために使っています。

Kitty(その2)

Kittyにも少し慣れてきたので、いくつか設定を入れました。

Kittyの設定をリロード

KittyにはWezTermのようなホットリロード機能はありませんが、ctrl+shift+f5でリロードすることができます。

しかし筆者のキーボードにはファンクションキーがないので、以下のように設定しています。

~/.config/kitty/custom.conf
map kitty_mod+r load_config_file

Kittyのキーバインドを表示

Kittyにキーバインドを表示する機能はありません。

しかしKittyにはKittenというプラグイン機能があり、それを使って表示させているユーザが多いようです[2]

ここでは、その中でわりと新し目なものを紹介します。

https://github.com/joshsurber/.files/blob/9b979393497eba560d715f6ba57a47eaa3f672e4/kitty/.config/kitty/keymap.py

上記のファイルをダウンロードして、下記のようにファイルを置きます。

mv ~/Downloads/keymap.py ~/.config/kitty/
~/.config/kitty/custom.conf
# show keybindings
map kitty_mod+k kitten keymap.py

これでctrl+shift+kでキーバンド一覧を表示できます。

lessっぽいので検索も出来ますし便利ですね。

スクロールバックバッファをNeovimで開く

Kittyにはctrl+shift+pで画面をスクロールバックする機能の他にもctrl+shift+hを押すことで専用のバッファを開いて検索したり、出力結果をコピーしたり出来る機能があります。

これはとても便利ですが、できればvimで開きたいと思ってしまうのがやはりVimmerの性でしょう[3]

これもカスタムKittenがすでにあるのでそれを入れました。

https://github.com/mikesmithgh/kitty-scrollback.nvim

これを使うにはKittyだけではなく、Neovimにも設定が必要になります。

まずはNeovimから設定します。
筆者は Lazynvimなので以下のようにインストールしました。

~/.config/nvim/init.lua
         :
    -- Setup lazy.nvim
    require("lazy").setup({
      spec = {
         :
    -- ここから追加
        {
            'mikesmithgh/kitty-scrollback.nvim',
            enabled = true,
            lazy = true,
            cmd = { 'KittyScrollbackGenerateKittens',
                    'KittyScrollbackCheckHealth',
                    'KittyScrollbackGenerateCommandLineEditing' },
            event = { 'User KittyScrollbackLaunch' },
            -- version = '*', -- latest stable version, may have breaking changes if major version changed
            version = '^6.3.0', -- pin major version, include fixes and features that do not have breaking changes
            config = function() require('kitty-scrollback').setup() end,
            opts = {
                  search = {
                    callbacks = {
                      after_ready = function()
                        vim.api.nvim_feedkeys('?', 'n', false)
                      end,
                    },
                  },
            },
        },
    -- ここまで追加
      },
         :
      checker = { enabled = true },
    })

次にKittyの設定です。

~/.config/kitty/custom.conf
    # kitty_scrollback_nvim
    allow_remote_control socket-only
    listen_on unix:/tmp/kitty
    shell_integration enabled

    # nvim --headless +'KittyScrollbackGenerateKittens'
    # ----->8-------->8-------->8--------->8-------
    # kitty-scrollback.nvim Kitten alias
    action_alias kitty_scrollback_nvim kitten ~/.local/share/nvim/lazy/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py
    
    # Browse scrollback buffer in nvim (ctrl + shift + h)
    map kitty_mod+h kitty_scrollback_nvim
    
    # Browse output of the last shell command in nvim
    #map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output
    
    # Show clicked command output in nvim
    #mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output
    # -----8<--------8<--------8<---------8<-------

上記の---8<--------8<---で囲んだ部分は下記のコマンドの出力を貼り付けます。

nvim --headless +'KittyScrollbackGenerateKittens'

このコマンドの出力にはバッファをnvimで開く以外にも、直近のコマンドを編集したり、マウスで操作する機能もありますが、筆者はnvimで開ければそれでいいので、他の機能はコメントアウトしています[4]

これでCtrl+Shift+hでNeovimで開けるようになりました。

画面の右上にインジケータがあり、Neovimで開いていることが分かります。
終了するには:q + Enterを押します。


Integrations with other toolsを見ると他にも色々なKittenが紹介されているので、そのうちまた何か試したいです。

ただ、こういったカスタムなKittenはユーザが書いたものなので、KittyのバージョンアップでAPIが変更されると動かなくなる可能性があるので注意が必要です[5]

→8日目

脚注
  1. 他のディストロを考慮するならシステムパーティションの作成日付のほうが良さそうですが、ここでは簡単な方法にしました。 ↩︎

  2. https://github.com/kovidgoyal/kitty/issues/2164 ↩︎

  3. https://github.com/kovidgoyal/kitty/issues/2327 ↩︎

  4. このあたりについては、ドキュメントのSetupを参照ください。 ↩︎

  5. ちなみに執筆時点での筆者の環境:
    kitty 0.40.1
    NVIM v0.10.4 ↩︎

Discussion