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 thefish-like highlighting and auto completion. Manually configuring everything makes this much faster than the monstrousoh-my-zsh- bash/
dash- for shell scripting. Myzshsetup is also much more dependent on external plugins, so I don’t use that on servers, I just stick to bash there. Mybootstrapscript sets up new bash servers for me nicely, see this post for more info
- Terminal
OS-stuff
- Arch
- Window Manager:
sway rofifor launching applications and switching windowsdunstfor notifications, pretty normal configurationautotilingfor automatic tilinggammastepto adjust color temperature
- Window Manager:
- Mac
- I use
skhdas a hotkey daemon. My dotfiles are cross-platform, lots of scripts incross-platformthat handle switching on the OS to call out to platform-specific behavior (sending notifications, clipboard management, asking for user input)
- I use
- Android (using termux)
Browsers
floorp(a firefox-fork) with extensions:vimium-ff. Learning vimium has virtually killed the mouse for me. Especially thefbinding, which highlights all clickable items and lets me click something with a keybind. I now sit feet away from my laptop with mechanical keyboard in hand, reaching over only for horrible sites which don’t comply to the HTML standard (looking at you, clicking thenext episodebutton onNetflix)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
- Refined Github for general Github improvements
- Stylus, so I can dark mode common websites
- Sponsorblock to skip ads in youtube videos
- Dark Reader, so I can dark mode every website I visit. Does have considerable overhead, so I prefer finding CSS through stylus for websites I visit often
- uBlock Origin to block ads
- I use
lynxto do quickduckduckgosearches 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
neomuttfor email, using mutt-wizard as a configuration layer to set it up - RSS:
newsraftfor youtube/news/blogs. I have a script to grab a youtube users RSS feed, since youtube doesn’t list that publicly.linkhandlerlets me open youtube videos fromnewsboatusingmpvfinstead 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:
todotxtfor 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:
calcurseas a calendar, with mycalcurse-loadhooks to add Google Calendar andtodo.txtto calcurse automatically - File Manager: a heavily customized
ranger. Seerifle.conf(file handler) andscope.sh(previewer) - Task Scheduler: bash script (
bgproc) with an infinite loop which runs in the background instead ofcron(uses myevrytool to schedule tasks)
Media
mpvto listen/watch media in general, integrated with my file manager (ranger)/playlist manager and just through a basiclist-music/play-musicscript from the terminal- Music:
beetsto organize/tag my music; config file- my
bashterminal playlist manager usingfzf/mpvto store playlists for local music in local text files
- 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
imagemagickscripts to do random resizes/converts. I have a larger script to convert videos to gifs, and usegifsiclefor manipulating gifs - Lots of small
ffmpegscripts to convert between video formats. - For trimming video, I use an encode_webm keybinding in mpv
- For basic image cropping, I use
Android Apps
- termux - terminal
- F-droid to download applications not on the play store
- Pano-Scobbler to scrobble to last.fm/listenbrainz
- gpslogger to save my location
- syncthing to sync music/data from my computer to my phone
- activity watch - app usage tracker
- keepass2android to use my password database on my phone (synced using syncthing)
- sms backup & restore to save my call logs/sms messages
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 myremsyncscript.crocis nice, but that assumes the other person has terminal literacy - password generator
- url shortener with this script to create new public URLs
Others:
abookas an addressbook, because of its nice integration with neomuttdatamashto perform basic statistics on text files/STDINdragon, to be able to dragon and drop items from/to the terminal. Have mydragon-sinkscript, which accepts andcp/mv’s files from applications, and bindings inrangerto drag files into my browser. Also usedraglastpicvery often, which lets me drag the latest screenshot to some applicationdust; a fancy du cloneentrfor lots of small build scriptsezaaliased tolsfd; a fancy find clonefzfeverywhere, to fuzzy match in shell pipelinesglowto render markdown in the terminalhyperfineto do benchmarkspandocto convert formats (lots of markdown -> html)pygmentizeto convert text to HTML -text2htmljqto process json streamsoh-my-stars(my fork) to search github stars offlinevipe, to quickly edit my clipboard in a vim bufferyt-dlpto download video/audio from tons of places.yt-dlpis ayoutube-dlfork which downloads faster and has more featuresyadmto manage my dotfiles- my
catis aliased tobat, a fancy cat clone which highlights text based on extension/mimetype
Other CLI Tools I use less often
boxesto print fancy boxes in the terminalchafato print gifs in terminalcodepsellto correct common misspellings in code filesdelta, for nicer git diffs in the terminaldexto open.desktopfilesfigletto print large lettersgronwhen I can’t be bothered to usejqixto create pastebin links from the command linejpegtranto compress JPEG filesloremto create a bunch of lorem-ipsummobyas a thesaurusncduto preview disk space interactivelyoptipngto compress PNG filespastelto generate/pick color schemes/hex codes from the terminalpupto parse HTML on the command lineqr(qrencode), to create QR images from command lineqrcto create QR codes in the terminalreadability; cli tool for Mozilla’s readability library, for parsing contents out of HTMLshellcheckto check shell scripts for syntax errorsspeedtest-clito test internet bandwidthsqletonto visualize sqlite databasestermdownto countdown in the terminaltoiletis another implementation of figlet, gives fancy colors in the terminaludiskie, to mount drives/USBsup- to interactively explore/pipe text data. Especially useful when doing data wrangling, like when using tools likejq/grep/cutto extract some information from a data source
Other GUI Applications I use less often
nsxivas an image viewer for more complicated/macro-like taskssimplescreenrecorderto do simple screen recordings; I use this to make demonstration gifssqlitebrowserto explore sqlite databases