I keep getting asked how my setup works, how I use tmux and nvim over ssh… all that good stuff.

I wrote this series of posts in an attempt to explain it.


I think I should start from the principle: how I actually work, in a more general sense, before we get into software — and this will be part 1.

On subsequent parts I’ll dig more into software and configurations.

Please, keep in mind that I’m not trying to convince you to change anything about your setup, I’m merely explaining mine.

All that said, without further ado, let’s go!

A single window in a single display

When you think of someone that works in software, you’d probably think of someone working with multiple displays… very hacker-ish, whatever that means.

You might also imagine they are using tilling window managers, and maybe an extremely customizable Linux setup, a custom, weird keyboard, all that.

Except the weird keyboard, that’s definitely not me.

I’m a bit of a minimalist on that particular regard:

  • I work on a single, 27", 4k display.
  • Most of the time I have a single, maximized window.
  • I simply ⌘-Tab when I need to switch to another window — although on macOS, Contexts.app helps making that experience better.
  • Finally, if/when I really, really, really, need to look at two windows side-by-side, I use Rectangle.app to do so.

In general, my experience is that window management sucks, and the more I complex I make it, the worse it gets.

So I rather keep it simple.

Tilling window managers

I tried tilling window managers many times over the years, both on Linux and more recently on macOS as well. They never seem to do what I expect them to do consistently, and I don’t like too many surprises.

Particularly on macOS, the options are very limited, with Yabai usually being the most recommended alternative. Feature-wise it indeed seems to be the best one, the dealbreaker for me is that it asks to disable SIP, which is not something I’m comfortable doing.

I tried a couple of others, and none of them worked well enough for me to be worth the hassle of setting them up.

Maybe I just need to run that extra mile setting things up, so that it works perfectly for me. Or, maybe, I’m just too used to my “old” ways and struggle to adapt to this “new way”. Regardless, I would rarely use most of its features, so it doesn’t feel worth the trouble.

While I don’t use tilling wind managers, I do use, very often, tmux and neovim splits. Sometimes for tailing logs or starting servers, other times to have the same buffer side-by-side in different places. It works well enough for what I need most of the time.

Multiple Displays

Multiple displays are something that, sometimes, I think about getting just to have one of them in the vertical position, you know… to read more code.

And I must say: it does look cooler than a single display on pictures and when you show to other people.

Another thing that plays a big part here is that I get distracted fairly easily, and having more displays make it easier to get distracted (for me, anyways): I can have one of my favorite band’s live performances playing in one display while I work in the other, and think to myself that “I won’t look at it” — except I absolutely will look at it, and get distracted while doing so.

My observation is that most developers that use multiple displays organize their windows in some sort of primary/secondary priority window groups, with one group in each display. I use virtual desktops for that: desktop 1 has the “important, most used stuff”; desktop 2 holds the comms, music and others.

An exception here could be streaming: having multiple displays can help preventing doxing yourself if you only share the screen of one of them. I only did stream like 3 times and that’s what I did, but I’m sure experienced streamers have better workflows (with or without multiple displays).

So, that’s kind of my way of thinking about the more general workflow. I know some people swear to be more productive with tilling window managers, multiple displays, and generally more complex workflows.

I like mine simpler.