I started my computing journey on a TRS-80 Model I, whose screen had sixty-four columns of characters in sixteen rows. It was amazing how much one could get done with such a small screen. Later, I used an Ann Arbor Ambassador terminal. It could not only display much more text, but it did so in a vertical orientation. Seeing a whole function at a time made programming easier.
As display resolution marched forward, I forgot all about vertical monitors. A few months ago, something reminded me of that Ambassador terminal, and I decided to try a modern equivalent. I splurged on a 27" UltraFine UHD IPS USB-C HDR Monitor with Ergo Stand, and rotated it to vertical. I've been in nerd heaven ever since. On that monitor, my Emacs displays 321 lines of text! That's enough to see the context of even terrible spaghetti code. And when even that is insufficient, Emacs split-window-below combined with Follow Mode shows 642 lines at once.
Unless I'm sitting down.
I know many people who have had repetitive stress injuries from long hours at the keyboard, so I try hard to follow the best advice on ergonomics. One rule is that the top of your screen should be at eye level. But my new vertical monitor is so tall that it runs into the desk. I can't lower it any further, and the top quarter of it is above eye level when I'm sitting down. I have a sit-stand desk, though, so when I'm standing up, that's not a problem. It never occurred to me that a standing desk would be good for my eyesight.
But what about when I sit down? Standing up all day is sometimes too much. Software to the rescue.
When I'm sitting, I sacrifice the top quarter of the screen to ergonomics, shrinking my windows to fit the bottom three quarters. To make this easy, I added a few commands to my Window Chord (Github) window management package:
|Move window to other monitor.
|Make window take full height of monitor.
|Make window take ¾ of monitor height.
|Move window to bottom of monitor.
|Move window to top of monitor.
Even with this adjustment, I can get 157 lines of text (or 314 with Follow mode), which is great.
I forgot to mention that this code relies on using
Join Displays in
Settings to turn both monitors into a single virtual monitor. That way, the
code doesn't have to choose monitors explicitly. It just chooses
coordinates that correspond to the various monitors.