# Zumi's Tool Recommendation List

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

## Command line stuff 

### Shells

- [fish](https://fishshell.com/): 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](https://github.com/IlanCosman/tide): beautiful status prompt (click to see)
  - [fzf.fish](https://github.com/PatrickF1/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](https://www.nushell.sh/): 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](https://github.com/charmbracelet/gum): simple CLI to create CLI scripts! Gives some simple way to create beautiful prompts, selects, table formatting...

### Dev tools

- [fx](https://fx.wtf/): 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](https://github.com/tomnomnom/gron): Turns JSON into a line-based syntax that you can `grep` (and turn back into JSON)
- [Github CLI](https://cli.github.com/), [Gitlab CLI](https://docs.gitlab.com/cli/), [Gitea/Forgejo CLI](https://codeberg.org/forgejo-contrib/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]`.
- [Serie](https://github.com/lusingander/serie) is an interactive `git log --graph` viewer.

#### 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 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](https://github.com/dandavison/delta), gives you `git diff` with syntax highlighting and line numbers etc.

### Life in the terminal

- [glow](https://github.com/charmbracelet/glow): simple CLI markdown viewer. Supports a lot of extensions, comes with syntax highlighting etc.
- [broot](https://github.com/Canop/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](https://ghostty.org/): yummy fast emulator. Quite simple configuration, it's also super fast.
- [kitty](https://sw.kovidgoyal.net/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](https://github.com/BurntSushi/ripgrep): 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](https://github.com/chmln/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](https://github.com/ouch-org/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](https://github.com/sharkdp/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](https://github.com/rncbc/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](https://zen-browser.app/): beautiful fork of Firefox with vertical tabs.
- [deluge](https://deluge-torrent.org/): torrent client that can run as a system service with a web server that you can remote control.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9