Alex Spinov Gum by Charm is a tool for building beautiful shell scripts. It provides interactive prompts,...
Gum by Charm is a tool for building beautiful shell scripts. It provides interactive prompts, spinners, file pickers, and styled text — all from bash.
# Text input
NAME=$(gum input --placeholder "Your name")
# Multi-line text
BIO=$(gum write --placeholder "Tell us about yourself")
# Confirm
gum confirm "Delete all files?" && rm -rf ./temp
# Choose from list
COLOR=$(gum choose "Red" "Green" "Blue" "Yellow")
# Multi-select
FRAMEWORKS=$(gum choose --no-limit "React" "Vue" "Svelte" "Angular")
# File picker
FILE=$(gum file .)
# Filter (fuzzy search)
RESULT=$(cat list.txt | gum filter)
gum style --foreground 212 --border-foreground 57 --border double --padding "1 2" "Hello, World!"
# Join styles
A=$(gum style --foreground 212 "Column A")
B=$(gum style --foreground 48 "Column B")
gum join --horizontal "$A" "$B"
gum spin --spinner dot --title "Deploying..." -- npm run deploy
gum spin --spinner moon --title "Building" -- make build
#!/bin/bash
NAME=$(gum input --placeholder "Project name")
TYPE=$(gum choose "Next.js" "Remix" "SvelteKit")
gum confirm "Create $TYPE project ?" || exit 0
gum spin --title "Creating..." -- npx create-next-app "$NAME"
gum style --foreground 48 "Project $NAME created!"
Need to scrape or monitor web data at scale? Check out my web scraping actors on Apify or email spinov001@gmail.com for custom solutions.