Building TUIs with Dart has never been easier
Ever since Norbert announced Nocterm, I wanted to use it for myself. I played a bit at first, but only recently with the help of LLMs and amazing documentation I was able to build something usable.
disk_analyzer_cli
I first started with simple disk_analyzer utility. It scans the disk and shows big folders and files.
| Main window | Treemap |
|---|---|
![]() |
![]() |
I guess I need to drop _cli now as it’s a TUI.
dart pub global activate disk_analyzer_cli
# or
brew tap orestesgaolin/tap
brew install disk_analyzer_cli
git_chain
I often chain my PRs and have a few scripts to synchronize them all. However, when I worked with my colleagues in the same chain, I didn’t want them to have to go through that same process. So I spinned up nocterm again and built a git chain synchronization tool. GitHub is working on a proper UI for that called GitHub Stacked PRs.
| Before sync | During sync |
|---|---|
![]() |
![]() |
dart pub global activate git_chain
# or
brew tap orestesgaolin/tap
brew install git_chain
git_branches
Another little tool called git_branches resulted from me having to delete over 100 stale branches. We merge branches to main with squashing so they just linger in my local git workspace. I didn’t want to remove them blindly, so simple pick and choose TUI was the best solution.
| Main screen | Delete screen |
|---|---|
![]() |
![]() |
Next up… merge conflict resolution tool maybe?
dart pub global activate git_branches
# or
brew tap orestesgaolin/tap
brew install git_branches
Nocterm
If you haven’t tried yet, give nocterm a try.





