programs we use

System Util

ncdu - TUI command line disk usage analyzer

also lets you delete stuff.

# analyze current working dir, stay in the same filesystem
ncdu -x

Bscp - Secure and efficient copying of block devices

Bscp copies a single file or block device over an SSH connection, transferring only the parts that have changed.

In other words, it handles the edge case where rsync fails.

# The default BLOCKSIZE is 65536 (64 KiB).
# The default HASH algorithm is sha256 (SHA-256).


Midnight Commander - TUI file manager


Try using it over the network too, once you have it open:

cd sftp://user@host

or if that doesnt work

cd sh://user@host

selectdefaultapplication - Set MIME type handlers and finally have it work which is a fork of

This is the only tool we’ve found that actually lets us easily set all the things we need to to get programs to open the way we want.

grep & find - search stuff

these don’t really need introduction. here’s some recipes.

# recursive grep but better because it ignores dev nodes
find /path -print0 -type f | xargs -0 grep 'pattern'

# same thing but don't traverse mounts
find /path -print0 -xdev -type f | xargs -0 grep 'pattern'
# filter the contents of a single directory (better than `ls | grep`)
# -mindepth 1 prevents printing parent dir
# -maxdepth 1 prevents recursing deeper
find /path -mindepth 1 -maxdepth 1 [args...]
# Learn what changes to the filesystem a different process is making
# This detects files with modification dates newer than the checkpoint
touch /tmp/checkpoint
find / -newer /tmp/checkpoint

# Same thing but for access time. Only works if you're using atime as a mount
# option, and not relatime or noatime.
touch /tmp/checkpoint
find / -neweraa /tmp/checkpoint

ssh-keygen - ssh key management for OpenSSH

# change the passphrase on a private key (or remove it)
ssh-keygen -p -f path/to/key


cdw - TUI CD/DVD/Bluetooth reader/writer


mpv - CLI media player

mpv <file|url|whatever>

swiss army knife of playing media. if you install yt-dlp too it can even play youtube videos directly!

cmus - TUI music player

good tutorial in

man 7 cmus-tutorial

works well even with networked filesystems!

Data Processing

yq (tomlq, etc.) - jq wrapper for YAML/XML/TOML documents

Basically, use a jq query, but run yq or tomlq instead of jq. It’ll parse the input, convert it to json, then feed it to jq. By default it will output whatever jq returns as-is, but you can ask it to convret it back to the original format too.


# run this on the thingy that builds binary packages to
# rebuild the metadata index
emaint binhost --fix

eclean - clean up source/binary package cache

# delete source for anything without an ebuild in any repos

# delete source for anything that isn't installed
eclean-dist -d

# delete binary packages from /usr/portage/packages for anything
# without an ebuild

# delete binary packages from /usr/portage/packages for anything
# that isn't installed
eclean-pkg -d

### clear out old kernels


Sublime Merge - GUI git frontend

in general, it’s a good program for dealing with merges/rebases. we use it regularly. Free version only has light mode :/.

rewrite author while keeping commit dates

git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -f <commit/branch before wrong author and email, or --root to rebase all>

via stackoverflow

git-backdate - helps you to change the date of one or multiple commits to a new date or a range of dates.



tokei - lines-of-code counter

vi@localhost ~/p/ (mistress)> tokei
 Language            Files        Lines         Code     Comments       Blanks
 JavaScript              1           93           63           17           13
 JSON                    2           11           11            0            0
 Nix                     1           63           44            6           13
 Ruby                    1          119           90           11           18
 Sass                    4          162          118           14           30
 Shell                   3           86           73            4            9
 Plain Text              7          498            0          408           90
 YAML                    1           43           21           17            5
 HTML                   11         2323         2209           97           17
 |- CSS                  5          126          114           12            0
 |- JavaScript           2          661          576           40           45
 (Total)                           3110         2899          149           62
 Markdown               98        10262            0         7307         2955
 |- BASH                 2           22           21            0            1
 |- Python               1           19            6            9            4
 (Total)                          10303           27         7316         2960
 Total                 129        13660         2629         7881         3150

Irssi Scripts

hlscroll - scroll through highlighted messages

Not our script, but we modified it slightly to make it work with modern irssi. Put it in ~/.irssi/scripts/autorun/. Read the script for how to set up keybinds