Shell ScriptだけでリッチなTUIアプリが作れるようになる「gum」がかなり良い感じ。
入力、書き込み、選択、Fuzzy、ローディングなど、TUIアプリに必要なものがサクッと書けるようになる。
インストール
go install github.com/charmbracelet/gum@latest
機能
- Input
- Write
- Filter
- Choose
- Confirm
- Spin
Input
gum input --placeholder "input here"
Write
gum write --placeholder "Details of this change"
Ctrl+d
で入力終了
Filter
ls -1 | gum filter
fzf
でおなじみのFuzzy Filter。fzf
のようにpreview表示などはできないっぽい。
Choose
ls -1 | gum choose --limit 3
x
またはSPACE
で選択。
Confirm
gum confirm && echo "Hi" || echo "Bye"
Spin
gum spin --spinner dot --title "Wait..." -- sleep 2
いわゆるローディング。
--spinner
にはdot
の他に
line
minidot
jump
pulse
points
globe
moon
monkey
meter
hamburger
が指定できる。
Format, Style, Layout
文字をBoldにしたり枠線を作ったりなどのスタイル周りを調整する機能もある。 ただStyleやLayoutは自分の環境だとズレて表示されてしまったりした。
gum style --padding "1 5" --border double --border-foreground 212 "I"
終わりに
いままでfzf
やread
、mktemp
などを使ってフィルタリングや書き込みを行っていたところを、gum
一本で完結できるのが良い。
gumの他にもいろいろなTUIツールを作っているCharmという団体を初めて知った。