From Wrist Pain to Productivity
For a long time, my hardware setup consisted of a standard keyboard and mouse, and I’ve also gotten used to working with Windows. This was either because it was required for my job or because of my work with DotNet development. In another hand, at home, I usually used a Linux desktop. I was happy with both worlds and never questioned. However, due to remote work over the past few years, I no longer have a PC at home and just use an Android tablet when needed.
At some point, I started experiencing soreness in my wrist, to the extend that I had sometimes trouble sleeping. My first step was a quick Google search, which led me to buy a vertical mouse. It helped ease the pain but it was still here. So this time I turned to message boards and YouTube feedback and after some hesitation, I finally decided to take the plunge and to buy a TypeMatrix keyboard.
Choosing an ortholinear keyboard was one of my best decisions. It features a unique design where the keys are arranged in a grid-like pattern, with the rows and columns aligned vertically and horizontally. This arrangement offers two main advantages:
It reduces the finger travel and improves hand positioning.
It provides a minimalist aesthetic and a more compact design.
As a result, the wrist experiences less stress and, with practice, doesn’t move at all; only the fingers make slight vertical movements.
The other thing I also told myself, was to switch to ortholinear and bépo (french version of Colemak) layout at the same time. That way, I’d only have to make the effort of learning once, especially since it further reduces finger movement. Why stick with an outdated, illogical layout anyway?
As you can see the middle line is the most used:
Above all, what surprised me the most was my ability to effortlessly switch between ortholinear bépo and staggered qwerty keyboards. My theory is that the two layouts are so distinct that the brain instinctively adapts to the switch.
Unfortunately, even with all these efforts, the wrist pain returned slightly after three years. I realized I needed to do more, but at least I understood the underlying issues:
My hand traveled too much between the keyboard and the mouse.
The Shift, Control, and Alt combinations for shortcuts felt unnatural and illogical.
The TypeMatrix keyboard forced me to keep my hands too close together which is not a natural position.
It was time to buy a split keyboard aaaand to switch to NeoVim by the way!
What a joy! It took me some time to find a layout that suited my habits, but I eventually settled on a custom Bépo layout with two layers. I still tweak it occasionally to optimize further. You can find the layout at ZSA website.
With split ortholinear keyboards and modern layouts, finger and wrist movements are minimized, and there's no longer a need to look at the keyboard.
Here is my heat-map after a few minutes of coding:
Now it was time to learn NeoVim. Interestingly enough, I think I spent far more time configuring Vim bindings than actually learning Vim itself. In reality, Vim is surprisingly easy to pick up, especially with the help of the Which-Key plugin already included in the LazyVim distribution. Everything about it feels natural and logical, particularly the Vim Motions. However, configuring bindings is an entirely different story, it's such a tedious process!
NeoVim allows us to stay fully focused on code
Since I use a completely different layout than QWERTY, I never found the classic h, j, k, l keys convenient. In the past, this was one of the main reasons I hesitated to switch to Vim (along with the lack of LSPs). This time, as a gamer, I decided to take the opportunity to configure classic gaming-style arrow keys for the left hand, and as the result, to reconfigure u, i, p, e. You can find my dotfiles on my GitHub.
After several months of using NeoVim on Windows, I began to feel increasingly limited. The main reason is that the user experience in Windows is vertical and dictated by Microsoft's vision and roadmap, whereas Linux provides a horizontal experience shaped by users themselves, thanks to tools and contributions from the community. The second reason is that Windows is heavily GUI-centric, while Linux is CLI/TUI-centric, which is far better suited for developers, especially with the rise of the new Rust CLI tools ecosystem.
Linux is distraction-free by default
I did some research and ultimately chose Gnome. I appreciate its minimalist approach, and the plugin system is rich and flexible.
Here is some awesome plugins I use:
Astra Monitor: Highly configurable and efficient
Next Up: Show when the next calendar event will start, or when the current one will end.
Switcher: Switch windows, or launch applications, quickly by typing.
Undecorate + Window title is back: To save some precious spaces.
Tactile: One of the best window tiling systems.
Tactile is the main reason I didn’t pick Hyprland. It gives me the freedom I need to either fully rely on the keyboard or briefly use the mouse when necessary. I find it so easy and convenient to switch screens, layouts, or window positions with a simple shortcut.
Vimium (with Vivaldi) also lets me browse without needing the mouse at all.
Finally the only application that still forces me to use the mouse is… Slack!
I usually launch Alacritty (waiting for Ghostty) in full screen and without borders, and start coding and doing my daily tasks by organizing workspaces with Zellij. I would love to never have to leave my terminal and start to click-click-click...
Conclusion
I no longer have wrist pain, and in the process, I’ve gained in productivity.
What more could anyone ask for!
Subscribe to my newsletter
Read articles from Amin Khansari directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Amin Khansari
Amin Khansari
🌳🦎 Passionate about socio-technical architecture, defensive design and simple boring sustainable λ code.