From Mouse to Keyboard

How Neovim, Tmux, and tiling window managers transformed my workflow

Over spring break this past year, my family procrastinated planning a ski trip since my spring break didn’t align with my sister’s, and it transformed the way I use a computer. Instead of writing code or otherwise enjoying break, I decided to learn Neovim, and in turn, my new rabbit hole.

From the website’s home page, Neovim is a “hyperextensible Vim-based text editor”, and after diving into it, this statement sums it up perfectly. Rather than messing around with the mouse, Vim-esque editors allow complete navigation and editing with only the keyboard, and in Neovim Lua config scripts are used to install and configure plugins and script the editor itself. A vast change from VSCode, which I hope to never use again. Over break, I spent far more hours than I care to admit learning it, but based on the general sentiment online, it seems that once the editor is configured and you’ve learned how it works, further configuration and bug fixing is less of a chore. As a result, I completed step one of ditching my mouse when navigating my computer and writing code.

Since Neovim is a terminal-based editor, step two logically became terminal management and navigation. For this, I learned Tmux, a terminal multiplexer that allows control of many terminals from one screen and deteachment of terminal sessions that continue in the background. This, along with a script from ThePrimeagen that enables speedy session creation, allowed me to integrate Neovim and other terminal activity. Combined with a GPU rendered terminal emulator like Alacritty, I felt far more powerful working from the command-line rather than the mouse.

Step three of my mouseless journey consisted of Linux and tiling window managers. If you’re unfamiliar, a tiling window manager organizes windows into non-overlapping frames and enables simple keyboard navigation, rather than fumbling around with the mouse or trackpad, clicking and dragging windows around. Up to this point, all code I’ve written took place on a Macbook, but upon realizing tiling WM’s are the way, I immediately installed Linux on my desktop and old gaming laptop. This was a journey in itself, but in the end, using the built-in tiling WM on Pop!_OS, I became proficient at navigating windows, onece again, without a mouse. At this point, I was disappointed to falsely believe I couldn’t write code on my Mac without the blazing speed of a tiling window manager, but thankfully, I found Yabai, an open souce macOS solution. Unfortunately, Apple’s foolery forced me to go into Recovery mode and allow deeper access to change animations, but it was fully worth it in the name of productivity.

The final step in the journey was, of course, the keyboard. After learning Neovim, the poor ergonomics of typical keyboards became increasingly noticeable, prompting me to discover the vast world of ergonomic keyboards. After much research, I landed on the Glove80, a split ergonomic keyboard with “thumb clusters” that allow each thumb to reach six keys instead of two. Akin to the pain of learning Neovim, my typing speed tanking from 100 to 40 words per minute, but after another round of suffering, I came out a more ergonomic typist.

Summing up, this is my first blog post, and I’m writing this partly to look back on a decade from now and truly see whether this initial investment was worth it. Thus far, it is, both for my enjoyment of writing code and more ergonomic workflow, regardless of whether it’s actually more productive. Even if it isn’t, forcing myself to use the command-line helped me actually learn Linux, since one must use it to truly know it.

Tags: random
Share: Twitter Facebook LinkedIn