ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

shellだけでリッチなTUIアプリが作れる「gum」がすごい

 

Shell ScriptだけでリッチなTUIアプリが作れるようになる「gum」がかなり良い感じ。

github.com

入力、書き込み、選択、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"

borderがズレてしまう

終わりに

いままでfzfreadmktempなどを使ってフィルタリングや書き込みを行っていたところを、gum一本で完結できるのが良い。
gumの他にもいろいろなTUIツールを作っているCharmという団体を初めて知った。