============ Alternatives ============ Different software I ever considered Legend: * ✔ means I consider something to be a positive thing * ✖ means I consider something misfortunate * ★ means this is the thing I've currently settled with Zsh plugin manager ################## I've tried a buch of zsh plugin managers (something like `antigen → antibody → zinit → antibody → zinit → zpm`). For most of the time I've used to stick with `zinit`, using it as a sort of ports manager. It can fetch binaries along with completions, man pages etc. It is very complex though, being something of a "systemd of the zsh plugins world". I've switched to `zmp` later, as it is extrimely simple, and you can make most of the `zinit`'s functionality (that I've used) with just wget/curl requests + jq for parsing. * :gh:`zinit ` [44k loc C] - ✔ Versatile tool, has it's own ports system, thus letting you install non-plugins along with completions and keybindings. - ✔ Somewhat decent `README.md` documentation (although sometimes it lags behind the actual functionality) - ✖ Complex * :gh:`sheldon ` [2k loc Rust] - ✔ ?? - ✖ Not very popular. - ✖ Rust language. Have to grab a binary. * :gh:`antibody ` [0.9k loc Go] - ✔ Simple - ✖ No ability to tightly integrate zsh settings with code installing non-plugins. - ✖ Go language. Have to grab a binary. * ★ :gh:`zgenom ` [680 loc Zsh] * ★ :gh:`zpm ` [650 loc Zsh] - ✔ Simple - ✔ Pure ZSH * ★ :gh:`zshing ` [180 loc Zsh] Dotfiles manager/bootstrapper ############################# * :gh:`chezmoi ` [13.9k loc Go] * :gh:`stow ` [2k loc Perl] * :gh:`yadm ` [1.5 loc Bash] * :gh:`homeshick ` [1.5k loc Bash] * :gh:`rcm ` [1k loc Shell (?)] * ★ :gh:`dotbot ` [0.7k loc Python] IMage viewers ############################# * :gh:`feh ` [13.8k loc C] * :gh:`imv ` [6.8k loc C] - ✔ GIFs - ✔ Various formats * :gh:`sxiv ` [3.8k loc C] - ✔ GIFs - ✖ Repository archived Window Manager ############## * ★ :gh:`i3 ` [24k loc C] - ✔ Has a drop-in Wayland-compatible replacement (:gh:`sway `). X11 will get deprecated sooner or later. - ✔ Good docs. - ✖ Complex. Sway is even bigger. - ✖ i3status :gh:`depends ` pulseaudio lbary * :gh:`herbstluftwm ` [11k loc C++] * :gh:`bspwm ` [10.6k loc C] - ✖ Requires :gh:`sxhkd ` (additional 3.5k loc C) * :gh:`spectrwm ` [11.7 loc C] * `dwm `_ [1.8k loc C] - ✔ Very (overly) simple. - ✖ Patching is PITA. Picker ###### Seems like only `fzf` has decent environment & tools built around it. * ★ :gh:`skim ` [7.1k loc Rust] * ★ :gh:`fzf ` [10k loc Go] - ✔ Many tools integrating this (and only this). - ✖ Very complex for such simple task - ✖ Go language. Have to grab a binary. * :gh:`fzy ` [2k loc C] - ✔ Has some tools integrating this. - ✖ Still complex * :gh:`pick ` [1.1k loc C] - ✖ No tools integrated * :gh:`slmenu ` [0.6k loc C] - ✔ Somewhat simple - ✖ No tools integrated - ✖ Not fuzzy Terminal emulator ################# These two emulator seem to be most viable. `St` is better but source-code-as-a-config doesn't fit my workflow. * :gh:`alacritty ` [17.7k loc Rust] * ★ `urxvt `_ [40k loc C] - ✔ Extendable with Perl plugins - ✖ Complex. Relies on Perl * `st `_ [4k loc C] - ✔ simplest out there - ✔ correct. Passes `UTF-8 test `_ - ✖ Having terminal multiplexer is essential. - ✖ Settings in source code. Shell ##### * `bash `_ [107k loc C] * ★ `zsh `_ [102k loc C] * :gh:`mksh ` [19k loc C] * :gh:`rc ` [6.5k loc C] File Manager ############ The one thing I think file manager is useful for is picking files based on preview of their contents. For now only `ranger` has this functionality. * ★ :gh:`ranger ` [12.8k loc Python] * :gh:`joshuto ` [6.6k loc Rust] * :gh:`lf ` [7k loc Go] - ✖ No image preview * ★ :gh:`nnn ` [3.8k loc C] * :gh:`fff ` [674 loc Bash] - ✖ No image preview Package Manager ############### * ★ :gh:`guix ` [~60k loc Scheme] * ★ :gh:`nix ` [~37 loc C++] Grep through code ################# * :gh:`rg ` [21k loc Rust] * ★ :gh:`ag ` [3.9 loc C] Browser Extensions ################## * ★ :gh:`display-anchors ` [] * ★ :gh:`Memex ` [] * ★ :gh:`what-hn-says-webext ` [] * ★ :gh:`bypass-paywalls-chrome ` [] * :gh:`tosdr ` [] * :gh:`ext-saladict ` [] * :gh:`mozilla/multi-account-containers` [] * `decentraleyes `_ + Tab Management * :gh:`Simple Tab Groups drive4ik/simple-tab-groups` [] * :gh:`Vertical Tabs Reloaded Croydon/vertical-tabs-reloaded` [] * :gh:`Tab Manager v2 xcv58/Tab-Manager-v2` [] * :gh:`Tree Style Tab piroor/treestyletab` [] + URLs Cleanup * ★ :gh:`Neat-URL ` [] * ★ :gh:`ClearURLs ` [] + Redirect Skipping * ★ :gh:`Redirector ` [] * ★ :gh:`Skip Redirect ` [] + Tab Hibernation * ★ :gh:`auto-tab-discard ` [] * :gh:`better-onetab ` [] * :gh:`Dormancy ` [] + Hide Trash * ★ :gh:`uBlock ` [~48k loc JavaScript] * ★ :gh:`uBlacklist ` [] * :gh:`blocktube ` [] * :gh:`blocktube ` [] + Github * ★ :gh:`CodeFlower ` [] * :gh:`octotree ` [] * :gh:`git-history ` [] * :gh:`refined-github ` [] + Disabling JavaScript * ★ :gh:`uMatrix ` [] - ✖ Complicated UI * :gh:`noscript ` [] Screenshoters ############# * :gh:`imagemagick ` [334k loc C] * :gh:`flameshot ` [7.5k loc C++] * ★ :gh:`maim ` [2.4k loc C++] * :gh:`scrot ` [1.8k loc C] Wallpaper Setters ################# Internet Browsers ################# * ★ `firefox `_ [] * :gh:`brave ` [] * ★ `chromium `_ [] * :gh:`qutebrowser ` [] * `castor `_ [] - ✔ can browse gemini, gopher and finger * `lynx `_ [] Textual diff ############ * :gh:`delta ` [11.1k loc Rust] * :gh:`diffr ` [2.7k loc Rust] * :gh:`diff-so-fancy ` [1.9k loc Perl] * :gh:`icdiff ` [560 loc Python] Image diff ########## * :gh:`git-diff-image ` [264 loc Bash] * :gh:`spaceman-diff ` [130 loc Sh] Directories jumper ################## * :gh:`z.lua ` [2.4k loc Lua] * ★ :gh:`zsh-z ` [416 loc Zsh] * :gh:`fasd ` [513 loc Sh] * :gh:`rupa/z ` [191 loc Bash] Sandboxing ########## * :gh:`firejail ` [30k loc C] * :gh:`nsjail ` [4.4k loc C++] * :gh:`bubblewrap ` [3.2k loc C] Password Managers ################# * :gh:`bitwarden ` [] * :gh:`KeePassXC ` []