This page kind of serves three purposes: part of my Unix tutorial track, a place to recommend stuff to more experienced Unixers, and a personal checklist for when I set up a new system. Not everything's aimed at all three.
For packages that I recommend installing through langugae package managers instead of distribution ones, I'll indicate it with a prefix.
Basic terminal utilities¶
nano- text editor. Easy to learn (it shows help on the bottom by default) and yet quite configurable and powerful.
Nano's often derided as primitive among experienced Unixers (editors more popular with them are Vim and Emacs), but I think this reputation's undeserved. I've written more about the unsung power and efficiency of Nano.
fish- "friendly interactive shell". My current shell of choice. The main sellings points are syntax highlighting, history-based autosuggestions, and better tab autocompletion without needing to install extra stuff and configure a whole bunch of crap (like you do to get those things with
zsh). I've written more about Fish and what's so great about it.
Window manager and main graphical applications¶
sway- A tiling window manager with no desktop and an incredibly productive way to use a computer. Great configuration and can reload the config without restarting. It's actually a remake of i3 for Wayland instead of X.
Unfortunately Sway outright prevents running as root, so I had to modify the source to get a satisfactory version. Building was easy enough though.
alacritty- my currently preferred terminal emulator. Written in Rust. Actually leaves out tabbing, which is a pain depending on your window manager but I think Sway actually makes it unnecessary.
conky- a configurable tool to easily get system status information. Most useful as a statusbar for Sway or DWM.
dmenu- an easy launcher solution for simple, tiling window managers like DWM and Sway.
wget- swiss army knives of HTTP (and some other protocols).
wgetare both classics written in C;
wgetis GNU software and
curlis MIT licensed.
httpieis a much younger implemention in Python (also BSD-licensed) and is nicer in just about every way, but doesn't support everything the others do. I keep all three installed.
youtube-dl- Download videos from Youtube and a few other sites. Yeah, apparently this isn't illegal...
nmap- "network mapper".
nmapis a tool for network exploration and security auditing, widely known as a port scanner. The package also contains
ncat, which is a more sophisticated version of
ncthat supports TLS!
tor- The Onion Router, a network anonymity tool. I recommend you read about this if you haven't heard of it.
wireshark- a renowned packet analysis tool.
Resources and monitoring¶
lsof- list open files. It's a little different from
fstat; I'm not sure if either can do anything the other can't, but I find
lsofconvenient to have.
top, but looks nicer (has color).
top, but for network traffic.
vnstat- analyze network traffic statistics over long times.
Misc CLI utilities¶
gnupg- GNU Privacy Guard, a renowned encryption tool.
rsync- swiss army knife of copying and backups. The
--deleteflag is one of the biggest things that makes it worth having over
cpin my opinion.
pv- "pipe view". Monitor progress of data through a pipeline.
cmd1 | pv | cmd2and it pipes
cmd2, but shows you the progress.
tmux- "terminal multiplexer". It has a lot of features I don't know about, but among them are the ability to use a terminal window in the fashion of a tiling window manager and to reconnect to sessions that get interrupted (for example, if the network cuts out while you're using
ssh). I haven't taken the time to really learn
tmuxbut I want to.
entr- "Event Notify Test Runner". Monitors files and runs a given command when they change. As of this writing I'm using it on this server.
sudo- more sophisticated account permission control than
su. Due to the way Unix treats the root account, even if your system is single-user, this is probably worth installing if it isn't preinstalled.
beep- beep. All the laptops I've had have had significant difficulty getting this to work, but on this one I managed it. One of the useful traits of this tool is that, at least on my system, it ignores volume (although not muting).
jq- I'm not sure what it stands for, but it pretty-prints and manipulates JSON data. "
tokei- Count lines of code in a directory. Distinguishes blank lines and comments from code lines and categorizes by language. Lots of other handy functionality.
rlwrap- ever used a CLI application that really needed some goddamn line editing? Use the ReadLine Wrapper.
Hardware and filesystems¶
dmidecode- massive amount of info on all hardware. I can't think of any commonly useful information I don't know how to get without this command, but
zfsnap- makes automatic ZFS snapshots slightly easier.
Media and file formats¶
mpv- terminal-based music and video player.
sox- "SOund eXchange" is what this is apparently supposed to stand for. It's not as nice as
mpvfor playing music, but it's the most convenient way I know of to record audio from my laptop microphone.
ffmpeg- swiss army knife of multimedia manipulation.
libreoffice- open source tool that can read "document" formats like
.xlsx, if you ever have the displeasure of needing to work with those.
.docfiles to plaintext.
zip- tool to work with the Windows-standard
unrar- tools for
.rarfiles. (They're separate packages on FreeBSD.)
eog- "eye of GNOME" (image viewer). It's not like you need a program like this to view images, but I find it useful for viewing all the image files in a directory in a single window.
speech-dispatcher- speech synthesis CLI tool.
Art production tools¶
lmms- Linux MultiMedia Studio, for writing music. Not great, but it's the only free one I know of.
gimp- the GNU Image Manipulation Program. Again, I have plenty of gripes with it, mostly interface-related, but it's free and has been indispensible to me.
ImageMagick- libraries and CLI tools for image manipulation.
- To get Linux compatibilty on FreeBSD, install
linux_base-c7and load kernel modules