Tools


This describes a lot of the tools I use in my dotfiles

This is an ever evolving list of tools and scripts I use and recommend, or combinations of tools I use to optimize my workflow.

Most of these are command line based, I wrap a lot of them in scripts here and in my pura-utils scripts repo

For other stuff I might be using, see my github stars

  • Shells
    • zsh - for the fish-like highlighting and auto completion. Manually configuring everything makes this much faster than the monstrous oh-my-zsh
    • bash/dash - for shell scripting. My zsh setup is also much more dependent on external plugins, so I don’t use that on servers, I just stick to bash there. My bootstrap script sets up new bash servers for me nicely, see this post for more info
  • Terminal
    • wezterm, which I’ve customized some:
      • a special cat alias which lets me cat images and directories, while in the terminal

OS-stuff

  • Arch
    • Window Manager: sway
    • rofi for launching applications and switching windows
    • dunst for notifications, pretty normal configuration
    • autotiling for automatic tiling
    • gammastep to adjust color temperature
  • Mac
    • I use skhd as a hotkey daemon. My dotfiles are cross-platform, lots of scripts in cross-platform that handle switching on the OS to call out to platform-specific behavior (sending notifications, clipboard management, asking for user input)
  • Android (using termux)

Browsers

  • qutebrowser as my main browser
  • floorp (a firefox-fork) for when I want to watch youtube/activities, do webscraping (for the nicer devtools/inspector) on a different profile
    • vimium-ff. Learning vimium has virtually killed the mouse for me. Especially the f binding, which highlights all clickable items and lets me click something with a keybind.
    • RES, to make reddit manageable, though I don’t go to reddit much these days
    • Violentmonkey so I can add bits of JS to sites I want to fix
    • Sponsorblock to skip ads in youtube videos
    • uBlock Origin to block ads
  • tor for even more privacy/if I want to delete history after I close a session
  • I use lynx to do quick duckduckgo searches without leaving the terminal/display some HTML nicely in the terminal (e.g. in rread)

General Workflow/Tools

  • Editor: nvim using nvim-cmp for completion, configured here, mostly in lua
  • Email neomutt for email, using mutt-wizard as a configuration layer to set it up
  • RSS: newsraft for youtube/news/blogs. I have a script to grab a youtube users RSS feed, since youtube doesn’t list that publicly. linkhandler lets me open youtube videos from newsboat using mpvf instead of visiting youtube in the browser
  • Backups:
    • SyncThing to Sync important directories across all my computers, and to my NAS
    • restic to a local drive, to have separate, offline, snapshots, using a small script to help manage all of that
  • Todo list: todotxt for todos, with a rofi interface as GUI, and TUI for adding todos. The TUI I wrote forces lets me enter a deadline using plain english and converts it to a datetime, so is nice for quick reminders. todotxt-more has some great addons as well
  • Calendar: calcurse as a calendar, with my calcurse-load hooks to add Google Calendar and todo.txt to calcurse automatically
  • File Manager: a heavily customized ranger . See rifle.conf (file handler) and scope.sh (previewer)
  • Task Scheduler: bash script (bgproc) with an infinite loop which runs in the background instead of cron (uses my evry tool to schedule tasks)

Media

  • mpv to listen/watch media in general, integrated with my file manager (ranger)/playlist manager and just through a basic list-music/play-music script from the terminal
  • Music:
  • Images/Video:
    • For basic image cropping, I use pinta, for tiny bits of markup/highlighting I might use flameshot or gimp.
    • For general image manipulation tasks I create lots of small imagemagick scripts to do random resizes/converts. I have a larger script to convert videos to gifs, and use gifsicle for manipulating gifs
    • Lots of small ffmpeg scripts to convert between video formats.
    • For trimming video, I use an encode_webm keybinding in mpv

Android Apps

CLI tools I use all the time

Mine:

  • FileHosting: To host files publicly quickly, I just sync it up to my server and serve it with nginx, using my remsync script. croc is nice, but that assumes the other person has terminal literacy
  • password generator
  • url shortener with this script to create new public URLs

Others:

  • abook as an addressbook, because of its nice integration with neomutt
  • datamash to perform basic statistics on text files/STDIN
  • dragon, to be able to dragon and drop items from/to the terminal. Have my dragon-sink script, which accepts and cp/mv’s files from applications, and bindings in ranger to drag files into my browser. Also use draglastpic very often, which lets me drag the latest screenshot to some application
  • dust; a fancy du clone
  • entr for lots of small build scripts
  • eza aliased to ls
  • fd; a fancy find clone
  • fzf everywhere, to fuzzy match in shell pipelines
  • glow to render markdown in the terminal
  • hyperfine to do benchmarks
  • pandoc to convert formats (lots of markdown -> html)
  • pygmentize to convert text to HTML - text2html
  • jq to process json streams
  • oh-my-stars (my fork) to search github stars offline
  • vipe, to quickly edit my clipboard in a vim buffer
  • yt-dlp to download video/audio from tons of places. yt-dlp is a youtube-dl fork which downloads faster and has more features
  • yadm to manage my dotfiles
  • my cat is aliased to bat, a fancy cat clone which highlights text based on extension/mimetype

Other CLI Tools I use less often

  • boxes to print fancy boxes in the terminal
  • chafa to print gifs in terminal
  • codepsell to correct common misspellings in code files
  • delta, for nicer git diffs in the terminal
  • dex to open .desktop files
  • figlet to print large letters
  • gron when I can’t be bothered to use jq
  • ix to create pastebin links from the command line
  • jpegtran to compress JPEG files
  • lorem to create a bunch of lorem-ipsum
  • moby as a thesaurus
  • ncdu to preview disk space interactively
  • optipng to compress PNG files
  • pastel to generate/pick color schemes/hex codes from the terminal
  • pup to parse HTML on the command line
  • qr (qrencode), to create QR images from command line
  • qrc to create QR codes in the terminal
  • readability; cli tool for Mozilla’s readability library, for parsing contents out of HTML
  • shellcheck to check shell scripts for syntax errors
  • speedtest-cli to test internet bandwidth
  • sqleton to visualize sqlite databases
  • termdown to countdown in the terminal
  • toilet is another implementation of figlet, gives fancy colors in the terminal
  • udiskie, to mount drives/USBs
  • up - to interactively explore/pipe text data. Especially useful when doing data wrangling, like when using tools like jq/grep/cut to extract some information from a data source

Other GUI Applications I use less often

  • nsxiv as an image viewer for more complicated/macro-like tasks
  • simplescreenrecorder to do simple screen recordings; I use this to make demonstration gifs
  • sqlitebrowser to explore sqlite databases