One of the best parts about an open-source operating system is the open-source community. Countless wonderful software projects have been made by awesome people who wanted to contribute to Unix or who wanted something impressive on their resume, and we all get to benefit from it. Here I'll post every package I've found useful and recommend installing on a Unix system. Since I'm a FreeBSD user, I'll be calling them by their FreeBSD package names, which might be different on other systems. Trident or a lot of Linux distros probably have a lot of these preinstalled.
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
xorg-server- X (the graphical window system) doesn't come with FreeBSD, and this is the package for it.
dwm- My window manager of choice.
dwmis a tiling window manager with no desktop and is a wonderful way to use a computer productively. The only possible criticism of it I could see is the configuration. It needs a custom config file to be good (albeit it only takes a small amount of modifying the default, unlike xmonad), and its config file has to be compiled in, which means you have to build it from source. (And you have to rebuild it every time you change the config.) On the bright side, it builds in like 1 second.
conky- a configurable tool to easily get system status information. Most useful as a statusbar for
roxterm- my currently preferred terminal emulator.
firefox- Firefox web browser.
chromium- Chromium web browser (different from but related to Chrome).
qutebrowser- A web browser in Python and Qt with a design philosophy of keyboard-centrism and efficiency of use for advanced users. You have to give it a fair chance and give yourself time to learn the hotkeys. I like Qutebrowser, despite not being a Vim user; honestly the biggest thing holding me back from using it right now is that the ctrl-shift-U trick for unicode typing doesn't work in it for whatever reason. And I need unicode typing for Spem.
wget- swiss army knives of HTTP - and a little more!
wgetis GNU software;
curlis MIT licensed. Both are excellent and at least one is a must-have. Personally I prefer
curl, but I keep both installed. Most Linux distros probably have
youtube_dl- Download videos from Youtube and a few other sites. Yeah, apparently this isn't illegal...? A bit surprising.
tor- The Onion Router, a network anonymity tool. I strongly recommend you read about this if you haven't heard of it.
vnstat- analyze network traffic statistics over long times.
py36-scapy- Python library and interactively usable program for sending and analyzing packets. Horrible documentation, but I think it is really powerful if you learn to use it.
siege- load testing tool (but HTTP/1.1 only).
h2load, an HTTP/2 load testing tool. I remember thinking it wasn't as nice though. (But that's not all this package is; just all I know about it.)
tshark- terminal packet analysis tool. Can't send custom packets like Scapy can as far as I know, but for receiving and analyzing them it's much easier to use without trawling through huge amounts of vague documentation and experimenting for hours.
wireshark- graphical version of
tshark. For some horrible reason, you can't have both installed at once on FreeBSD, and I remember thinking Wireshark's interface was horrid.
nmap- "network mapper". Tool for network exploration and security auditing. Widely known as a port scanner.
Resources and monitoring
lsof- list open files. This might be preinstalled on GNU/Linux, but not on FreeBSD. 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.
Misc CLI utilities
rsync- the 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).
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
cdrtools- burn CDs (and do other things with them I guess).
zfsnap- makes automatic ZFS snapshots slightly easier.
speech-dispatcher- speech synthesis CLI tool.
Media and file formats
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. I've been amazed by what this tool can do.
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 .rar files. (They're separate packages on FreeBSD.)
xpdf- dedicated PDF reader and manipulator.
geeqie- image viewer. It's not like you need
geeqieto view images, and I don't even like the program, but I find it useful for viewing all the image files in a directory in a single window.
Art production tools
lmms- Linux MultiMedia Studio, for writing music. Not the greatest, but it's the only free one I know of.
gimp- of course, the GNU Image Manipulation Program. Again, I have plenty of gripes with it, most notably its nightmarish interface, but it's free and quite functional other than that.
xinit- ships the
startxcommands, which make dealing with X much simpler.
xbindkeys- set keybinds in the X environment. Incredibly useful. Don't live your life without it.
xmodmap- manipulate the keymap in X. Basically this should be called
xbindkeysshould be called
xset- X window system settings
xsetroot- set the title of the "root window" in X.
dwmuses this to set statusbar text, making it even easier to plug
conkyinto it! much simpler.
xsel-conrad- manipulate the X selection buffer (clipboard). (The command is just called
scrot- CLI tool for SCReenshOTs.
xmessage- display a message in an X window. It's primitive and ugly, but sometimes this is the tool you need, for a script to get your attention or something.
dmenu- an easy launcher solution from the same people that make
dmenucommand by itself takes a list of options from stdin and displays a menu on the top where you can select one via typing, arrow keys and tab completion, and returns the selected option on stdout. The
dmenu_runscript it comes with is used as a plugin for
dwmto make it easier to launch stuff you don't have a hotkey for without opening a terminal to type the command.
xev- report X events. Enormously useful for debugging.
xdotool- simulate key strokes, mouse clicks, and other X events.
xlsclients- list X client applications (applications running in X windows).
xwininfo- get info about an X window by clicking on it.
xinput- get information about X input devices.