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
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 do not need a window manager to do much. I need the concept of multiple workspaces on at least one monitor, and occasionally, I need it to be able to actually manage windows on one workspace (e.g., arrange them next to each other or behind each other). Apart from that, I want it to not get in my way and to not distract me.

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, openbox, i3, …).

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

While that statement was true for almost 10 years, my choice of essential extensions ended up being too unreliable for me (pixel-saver in particular, but others too), because they randomly stopped working on new Gnome releases.
Therefore, I am back to i3 (very basic setup, just modified the bindings to be more vim-compatible + optionally changed some fonts/colors and tweaked i3status). After the transition to i3, it took about a week to let my i3 setup really boost my productivity. Now I can do SO much more with the keyboard (again) and I can use sophisticated window setups (nested layouts), which is super useful if you have only one or two monitors.
The next step is obviously to migrate to sway (and get rid of Xorg), but this means to replace all the helper utilities.
I will do so when I find the time and then report back on it, probably in a dedicated article.

Terminal Emulator
My main requirements are

  • 256 color support
  • able to use a decent font with full unicode support + exra glyphs, such as Fira Code in the Nerd Font modification.
  • easy to switch between two or three colorthemes (light/dark/strong contrast)

I used a bunch of different terminal emulators over the years: urxvt for quite a while, but changing the colorscheme a couple times a day from dark to light and back became a requirement for me, and I found no good way to do this with urxvt. gnome-terminal during most of the time when I was using Gnome. Recently, I switched to kitty, which provides plenty features and real good performance on my hardware.

Main Toolchain

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

  • “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 a blog post 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 can be encrypted with 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 also 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.
Feel free to contact me if you have questions or suggestions!