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.