👌
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'
仕組みとしては
- `gum style` で メニューを描画
-
read --nchars 1
で Enter 不要 の 1 キー入力取得 -
switch
で処理を分岐
まとめ
chatgptのおかげで簡単にshellscriptかけるようになったので、みんなもかっこいいshellscriptに挑戦してみてね
Discussion