619 words
Using i3wm (a tiling window manager) has caused me to think a lot about how arbitrary our current computer interaction model is.
In some ways a tiling window manager isn't that big of a departure. I was already using a macOS app to do quickly snap a window to sides, or quarters of the screen. But it's a good experience in the power of defaults. The fact that a new window automatically splits the space in half changes my workflow in lots of ways. Probably the clearest is when I'm working on debugging or learning something programming wise. If I need to look up options I open a web browser right alongside, or open a terminal to refer back to another site I worked on. Within a workspace the default action is to "pull up alongside". Closing is quick and easy (partly this is due to a lack of animations). Space seems less physically constrained (less skeuomorphic) in a good way. I can pull up these magic windows and then dispose of them when I'm done. Again, of course none of this is impossible with a non-tiling window manager, but the feel is different. There's stability in the constraints. That stability is a feeling I feel like I'm going to be chasing and trying to pinpoint for a while in the computer interactions I build.
I also love the workspace set-up. You have workspaces 1-9 to start with, and you switch using meta+n. As the wonderfully transparent config file shows, that's actually totally arbitrary and configurable. You can name workspaces -- a lot of people seem to do that. In macOS I had a very specific spatial system of email in the top left workspace, browser in top center, etc. I'm developing some conventions using i3: I tend to try and keep 'work' in 1-5 and us 6-9 for stuff like email, slack, etc. But I've resisted naming and declaring a workspace. The utilitarian number system supports what I was talking about with the splits -- you don't have to carefully consider where your programs go, they're there to work for you. This is also very much supported with how you can transfer a window from one workspace to another (I always think of it as throwing). There's a really satisfying interaction where I'm searching through documentation for an answer, splitting with web browsers and terminals as needed, and I run into a longer read related to the problem. I throw the long read to a middle workspace to read over lunch break or something. I track down the solution to the specific problem, and I unwind the split search -- closing all the windows I no longer need. I'm back to a calm one or two split workspace. If definitely has the feel of pulling out a bunch of books and spreading them out on your desk, then cleaning up afterwards, except much faster. Even though overlapping windows are maybe closer in their functionality to that physical experience (you probably do overlap your books) the tiling feels closer to it in spirit.
I saw one screenshot of someone who had configured their workspaces to be in roman numerals, which is both very unnecessary and because of that sort of wonderful
So what do I do with this info, besides enjoying using my new set-up. Obviously I want to put this into the things I make somehow. Probably I will do some splitting experiments for some of the constraint systems stuff. But more than that I think it's the excitement that there is a lot of uncharted ground here. (This fits in also with just reading about Linux/Unix history, feeling how arbitrary the conventions are, how much they were developed for different situations.)