List of software I recommend

First of all, if you're still stuck running an operating system that don't respect your freedom on one of your computers, I strongly advise you to at least try seriously to replace it by a GNU/Linux system.

I personally recommend Debian GNU/Linux, but these day any GNU/Linux distribution is fine. You could for instance also try, Fedora, Ubuntu, Gentoo, ArchLinux, Slackware,… There's no lack of options.

Command line tools

My preferred shell is Zsh. It has awesome completion out of the box and a large set of features. On the other hand if you want something easy and you're not afraid to use a non POSIX-compliant shell then have a look at Fish.

Here's a non-exhaustive list of command-line tools you should check out:

  • atool (Archive manager)
  • dhex (Hexadecimal editor with a diff mode)
  • irssi (IRC client)
  • htop (System monitor)
  • mtr (Nice traceroute)
  • minicom (Easy to use VT102 emulator, useful to connect to a serial console)
  • mutt (Mail client)
  • pandoc (Document converter)
  • pass (Store, retrieves, synchronize password securely. Password are stored encrypted with your PGP key in a Git repository.)
  • pwgen (Generates passwords)
  • rsync (File-copying tool)
  • task (TaskWarrior is a command line todo manager)

I'll try to complete this list in the future.

Text editors

Text editors which are powerful yet possibly a pleasure to use are:

  • Vim
  • Emacs

I personally use Vim mainly because I love modal editing. To get started, install Vim and then run vimtutor from your shell.

Sure, you're free to use another text editor, but remember: «Resistance is futile: you'll end up using Vim or Emacs anyway!» ;-)

Git

My preferred version control system is Git. You'll get started by reading the "Description" section of man git.

There are several software using Git in creative and useful ways:

  • etckeeper
  • git-annex
  • ikiwiki
  • mr
  • pass
  • vcsh

Makefiles

You should learn to use GNU Make, seriously. It's easy to use and can help you automate any repetitive task like compiling your code, compiling your LaTeX documents or generating thumbnails of your photos; you name it. You get parallelization for free, it detects automatically if something needs to be done again based on file access time and you'll never have to remember the commands you want to run: it's all in the Makefile.

Window managers

I'm currently using xmonad which is my preferred tiling window manager. It's written and configured in Haskel. Have no fear, it's easy to use even if you don't know Haskell yet (common configuration options are one liners).

My favorite floating window manager is fvwm. I've been using it for years before switching to xmonad.

Other options you could try: