👌

gum でかっこいいUIのシェルスクリプトを作る

に公開

TL;DR

個人用のwhich-keyを作りたくて、何で作ればいいか検討してみたが

shellscript + gumがよかった。

shellscriptにした理由は、ファイル一つで完結したかったのと、cdが楽だし、セットアップも簡単だったのが理由。

ただ、それだけだと味気ないのでshellscript用のUIライブラリを探して見つけたのがgumだった。

gumとは?

シェルスクリプト用のUIライブラリ

https://github.com/charmbracelet/gum

めっちゃかっこいい!!!

インストール

公式サイトにしたがう。

https://github.com/charmbracelet/gum?tab=readme-ov-file#installation

Macだとhomebrew

brew install gum

fish shell で which-key作ってみた

こんな感じのをさくっとchatgptに作ってもらった。

結構いい感じ。

コードは以下の通り

function __which-key
    gum style \
      --border rounded --margin "1 1" --padding "1 2" --align left \
      --bold "g → ghq project" "c → git checkout"

    read --nchars 1 choice

    switch $choice
        case g
            cd (ghq list | fzf | xargs -I {} echo $HOME/workspaces/{})
        case c
            gc # fzfでgit checkoutする自作のコマンド
        case '*'
            gum style --foreground 196 --bold "⚠️  Unknown choice: $choice"
    end
end

bind --mode insert \cg '__which-key; echo; commandline -f repaint'

仕組みとしては

  1. `gum style` で メニューを描画
  2. read --nchars 1Enter 不要 の 1 キー入力取得
  3. switch で処理を分岐

まとめ

chatgptのおかげで簡単にshellscriptかけるようになったので、みんなもかっこいいshellscriptに挑戦してみてね

Discussion