HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
charmbracelet
gum
Go2022–2026
charmbracelet / gum

gum

A tool for glamorous shell scripts 🎀

22Distinct people
22Mentions
0Explicit recommenders
24.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A tool for glamorous shell scripts 🎀

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year22 dated mentions

Observed mentions: 2022-07-28 13:14:37 UTC to 2026-04-16 02:05:43 UTC.

02462022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 3 submissions, 2 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments20242025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC532
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC716
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC413
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC312

What Hacker News says

22 sources
My favourite library from these folks is gum (https://github.com/charmbracelet/gum). The basic premise is simple - instead of using hardcoded variables or in addition/instead of using CLI flags, call gum and capture the STDOUT to get the selected input value(s). Great for turning a bash script into a TUI, uses these libraries under the hood. I find the pattern of showing interactive TUI if required options/flags are omitted much nicer than showing an error/help output.
In The next generations of Bubble Tea, Lip Gloss, and Bubbles are available now
I don't have anything against ZSH or similar shells. I think they are great, but they are not my thing. Latency is a deal-breaker for me, and this is where autocompletion engines generally introduce surprising user-interactive pauses. I've generally settled with using mksh (or OpenBSD's KSH depending on the environment) with little configuration outside of aliases, variables, and few local functions. I'm not left with this inkling feeling like accidentally running find(1) over an AutoFS file system backed by NFS that needs to authenticate, mount, and then run the operation. When I need something more sophisticated, I lean on using Go or Elvish and potentially delegate some UI elements out to https://github.com/charmbracelet/gum. I'd rather keep my shell simpler and delegate out any other complexity to these other programs. Autocomplet
Read the rest
ion and these other features simply aren’t free.
In Speeding up my ZSH shell
I don't know why (other than being a Gen X nerd) but I have a bizarre affinity for nicely-written TUI apps of late! Things like btop++ that respond to mouse clicks and smoothly reflow when the terminal window is resized etc... Shout-out to Charmbracelet's stuff such as Glow (https://github.com/charmbracelet/glow) and Gum (https://github.com/charmbracelet/gum) for rendering markdown nicely in the terminal and for using TUI in your shell scripts
In Show HN: Bagels – TUI expense tracker
I'm also using a global justfile (`-g`) [1] to serve as a convenient location to aggregate any convenience functions, as well as call out to any standalone scripts as necessary. You can also 'convert' all recipes to aliases so you get the best of both worlds, the ability to call with `just -g foo` or `foo`, from anywhere. The docs example [2] uses a `user` justfile, but the principal is the same for global. for recipe in `just --justfile ~/.user.justfile --summary`; do alias $recipe="just --justfile ~/.user.justfile --working-directory . $recipe" done Most recently I've started using `fzf` and `bat` to allow interactive selection of recipes with syntax highlighted previews: _choose: @just -g --summary | \ tr ' ' '\n' | \ sort -r | \ fzf --multi --preview 'just -g --show {} | bat --color=always -l jus
Read the rest
t -pp' | \ xargs just -g Now with a global `alias ji="just -g _choose"` I can interactively choose a recipe if I need a reminder of what I've set up. This was inspired by the native `--choose` flag which does something similar, but by using `--summary` here, all recipes, including those that take arguments *, are listed, as well as any nested modules. And because you can use any shebang, you can also write little python scripts to run with `uv`, including those with dependencies [5] declared in the shebang: # list Cloudflare accounts accounts: #!/usr/bin/env -S uv run --script --with cloudflare --python 3.13 from cloudflare import Cloudflare client = Cloudflare() accounts = client.accounts.list() print(accounts) …here with inline metadata: # list Cloudflare accounts accounts: #!/usr/bin/env -S uv run --script # /// script # requires-python = ">=3.13" # dependencies = [ # "cloudflare", # ] # /// from cloudflare import Cloudflare client = Cloudflare() accounts = client.accounts.list() print(accounts) [1] https://just.systems/man/en/global-and-user-justfiles.html [2] https://just.systems/man/en/global-and-user-justfiles.html#r... [3] https://just.systems/man/en/selecting-recipes-to-run-with-an... [4] https://github.com/charmbracelet/gum?tab=readme-ov-file#inpu... [5] https://docs.astral.sh/uv/guides/scripts/#running-a-script-w... * interactively selected recipes that take arguments won't work by directly passing to `xargs` here, but in some cases where I do want that flexibility I just add a condition in the recipe to prompt for input, with `gum input` [4]. Flexibility. This is a belt and braces approach and only used where necessary as the `fzf` preview will have made it clear that a recipe takes arguments. [positional-arguments] foo $bar="": #!/usr/bin/env bash if [ -z "$bar" ]; then bar=$(gum input --placeholder "bar") fi echo "looking up $bar"
In Just: Just a Command Runner
> (There’s precisely one thing like this I’m aware of terminal emulators adding in recent memory: clickable links, ca. six years ago.) And they are often disabled by default, as a potential security risk. We don't get to have fun things, do we? (also worth read: CVE-2003-0063, abusing escape seq is unfortunately a valid concern against adding more stuff). On the other hand, more and more emulators are adding support for various graphic protocols (sixel, iTerm2 format, kitty format). > I’ve been waiting for one or more terminal emulators to get together and add some ridiculous new escape codes[...] Well, it's not much, but mintty apparently has some interesting stuff like audio support[0], and codes for font size and font family[1][2]. iTerm2 also has a bunch of custom escape sequences of varying level of usefulness starting from displayin
Read the rest
g fireworks animation on cursor position to sending system notifications[3] (although sadly I could not get the last one to work for me). For some semblance of forms, you can check bubbles[4] and gum[5] (binary to easily incorporate the components into shell scripts). [0]: https://github.com/mintty/mintty/wiki/CtrlSeqs#audio-support [1]: https://github.com/mintty/mintty/wiki/CtrlSeqs#font-size [2]: https://github.com/mintty/mintty/wiki/Tips#alternative-fonts [3]: https://iterm2.com/documentation-escape-codes.html [4]: https://github.com/charmbracelet/bubbles [5]: https://github.com/charmbracelet/gum
In TTE: Terminal Text Effects

Showing the 15 most recent of 22 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.