TL/DR

Give me internet access, a shell, tmux, vim, and I’m good to go!

OS
If I do have a choice, I use FreeBSD and Debian GNU/Linux on servers (because rock-stable), and Gentoo (my favorite flavor of Linux) or Fedora on workstations/notebooks (because flexible & up-to-date).

I also use Ubuntu if I am forced to, which unfortunately happens quite often in a professional setting.

Actually, I do not really care anymore, as long as I have ways to get all the tools I need to get my work done. I will compile them myself if I have to :-]

Desktop Environment
Since starting my Unix journey somewhen in 1998, for many years, I had a habit of switching desktop environments and window managers a LOT (including early KDE, twm, fvwm, fluxbox, i3, …).

Meanwhile, I just got used to gnome-shell with several extensions.

Most of my tools run in a terminal emulator anyway (except browser/pdf viewer), so having tmux is way more important for me than a specific desktop/window manager.

While I maintain plenty of carefully crafted configuration files for all tools I use, I am also happy to work with a vanilla setup.
In doubt, just give me a shell with internet access and I’ll be fine.

I very often got asked “Which tool is this?” by people/co-workers, who also liked to move more things to the terminal, so here’s the big picture:

Main Toolchain

  • window management: bash + tmux (with some custom keybindings and additional configs for systematically and conveniently nesting sessions)
  • editor/IDE: (neo)vim with a bunch of plugins - YES, vim can be your IDE! (I still need to do an article on this). Until then, have a look at my dotfiles to get an idea!
  • notes: vimwiki - a (neo)vim plugin. I use it for notes, tickets (I even have an import-jira-ticket script), and everything else. Just a bunch of markdown files, so it is managable with git and gpg.
  • mail: (neo)mutt + mbsync + notmuch + khard (+ khal)
  • chatting: irssi or weechat (connecting to znc and bitlbee with all kind of backends)
  • time-tracking/todos: taskwarrior + timewarrior ; or the hamster project (which has a gui if that matters for co-workers)
  • music: cmus to listen to music/radiostreams
  • browser: firefox if X is available, w3m if not

That’s all I need (plus basic things like compilers/interpreters/texlive and git of course), and it also works well on remote shells or without X.
If I decide or am forced to go without X for a longer time on a workstation or notebook, I find kmscon very useful.

Some of my configs are available on GitHub.