Zumi's Tool Recommendation List

Random assortment of tools that Zumi uses and recommends trying out.

Command line stuff

Shells

  • fish: this one is a no-brainer. Colorful prompt, history search built-in, very extensive auto-complete support for arguments and flags, legible shell scripting language. I use it on all my computers. Bash is so 70s, welcome to 2000s. Some fish plugins that I use:
    • tide: beautiful status prompt (click to see)
    • fzf.fish: Fish has fzf integration built-in for paths, but this plugin extends it with various stuff (search by file content, search history, file previews...)
  • Nu: not as a daily use shell, but Nu is a very nice shell scripting language for data processing. Need to do some JSON processing? file read a.json | filter (.name == "Lux") | to json.
  • gum: simple CLI to create CLI scripts! Gives some simple way to create beautiful prompts, selects, table formatting...

Dev tools

  • fx: very cool interactive JSON viewer. Has tree folding, searching, copy subpart etc. You can just pipe any JSON output into it like curl https://a.com/b.json | fx
  • gron: Turns JSON into a line-based syntax that you can grep (and turn back into JSON)
  • Github CLI, Gitlab CLI, Gitea/Forgejo CLI: manage repos, issues, PRs from the command line. Most useful commands to me are gh pr list and gh pr checkout [pr-id].

Special: useful git options

Put these in your git config.

  • diff.verbose = true : this makes git commit displays the diff of all things you staged below the commit message box. Very useful to have a final look before hitting that commit button.

  • merge.conflictstyle = "zdiff3" : usually conflicts look stupid. This would make conflicts show up like this (when you try to merge commit A into commit B)

    >>>>> code at commit A
    ....
    ===== code before commit A & B
    ....
    ===== code at commit B
    ....
    <<<<<
    

    You can see easily what changed in A (look middle -> top) and what changed in B (look middle -> bottom).

  • Set up delta, gives you git diff with syntax highlighting and line numbers etc.

Life in the terminal

  • glow: simple CLI markdown viewer. Supports a lot of extensions, comes with syntax highlighting etc.
  • broot: interactive version of tree. View the file list in a (collapsible) tree form, perform fuzzy search, etc.

Terminal Emulator

I use kitty and ghostty.

  • ghostty: yummy fast emulator. Quite simple configuration, it's also super fast.
  • kitty: super feature-rich emulator. Has lots of configuration. Not as fast as ghostty but still should beat all default ones.

Basic tool replacements

  • ripgrep / rg: ultra-fast version of grep that also does "mostly the right thing" with no arguments. By default rg [pattern] would grep all lines matching the pattern from all files in the current directory -- excluding files ignored by git. Some useful flags to memorize: -i for case-insensitive, -F for "no-regex, match-string-literally mode"
  • sd: extremely simple replacement of sed. sd [pattern] [replacement] [files...] will replace all instances of pattern with replacement in given files. Regex is supported of course (-F is a thing too). Also works as a pipe: cat a.txt | sd x y. No more fiddling with sed.
  • ouch: universal command-line tool for all archives. ouch d [file] will decompress a file, no matter whether it's zip, rar, tar.gz etc.
  • bat: cat with syntax highlighting. Automatically disable all fancy stuff if you use it has a pipe, so usually I just alias cat to it: alias cat=bat.

GUI Stuff

Mostly Linux stuff here. Windows shoo

Audio

  • qpwgraph: GUI for the Pipewire system. Lets you mix and re-route audio from app to app, from app to specific speakers, from specific microphone to specific app, ...

Internet

  • Zen Browser: beautiful fork of Firefox with vertical tabs.
  • deluge: torrent client that can run as a system service with a web server that you can remote control.