Ghostty
https://github.com/ghostty-org/ghostty
This is the best terminal I've used; it's replaced iTerm and Warp for me.
Zed
https://github.com/zed-industries/zed
They also made a really nice contribution to the Rust ecosystem with gpui!
Fish
https://github.com/fish-shell/fish-shell
I really like the tab completion and syntax highlighting
LazyGit
https://github.com/jesseduffield/lazygit
Before LazyGit, working on stacked PRs was a pain...
git checkout main
git pull --rebase
git checkout wcygan/branch-one
git merge main
git checkout wcygan/branch-two
git merge wcygan/branch-one
git checkout wcygan/branch-three
git merge wcygan/branch-two
...
After LazyGit, the amount of keystrokes that I needed to achieve this went down by ~80%!
RipGrep
https://github.com/BurntSushi/ripgrep
→ rg 'rpc'
pnpm-lock.yaml
1468: '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
5525: vscode-jsonrpc@8.2.0:
6382: '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
8399: '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0
8940: vscode-jsonrpc@8.2.0: {}
8944: vscode-jsonrpc: 8.2.0
Search for patterns in files. Really nice for searching through logs.
fzf
https://github.com/junegunn/fzf
I use this to fuzzy-search my history. It's similar to doing this:
history | nl | fzf
This makes it really easy to find commands you did in the past.
fd
Find files on your computer
→ fd json
deno.json
package.json
tsconfig.json
jq
Make your json pretty and run commands on it.
→ cat deno.json | jq 'keys'
[
"imports",
"tasks"
]
→ cat deno.json | jq '.tasks'
{
"fix-mermaid": "deno run --allow-read --allow-write scripts/fix-mermaid-formatting.ts"
}
Starship
https://github.com/starship/starship
My prompt:
wcygan@foobar wcygan.net on main
→
You can customize it in very dynamic ways too, if that's what you want.
uv
uv has become my defacto scripting platform. With PEP 723 inline script metadata, a single .py file can declare its own dependencies and uv run will resolve them into an ephemeral environment before executing.
# /// script
# requires-python = ">=3.12"
# dependencies = ["httpx"]
# ///
import httpx
print(httpx.get("https://example.com").status_code)
→ uv run script.py
200
just
I use just for task orchestration across my projects (similar to make). For example, I would have commands like just up, just down, just test, etc...
jj (experimental)
Seems like a nice successor to git. But I don't think there is a TUI as nice as LazyGit yet, so I stay on git.