Getting Work Done Using Only TTY: A Journey Back to the Basics
Picture this: It's a sunny Sunday morning in 1990. You rise, brew a
fresh cup of coffee, and settle in front of the family computer. With a
flick of the power switch, the CRT monitor hums to life, degaussing into
a shaky boot sequence. Lines of text scroll down the screen, and
finally, the familiar prompt C:\
awaits your command.
Do you launch into a game of Doom, or dive into a favorite bulletin board? The choice is yours, and that nostalgia is palpable.
This feeling of simplicity and raw interaction is what I aim to recapture—not in DOS, but with modern hardware.
My Linux Journey
I've been using Linux since the fateful day I burned a live CD of
Ubuntu 7.04 and accidentally wiped out our family PC's Windows
partition. My distro preferences have evolved over the years: starting
from Ubuntu
, moving to Debian
, and
subsequently experimenting with Arch
,
Slackware
, Gentoo
, and finally settling on
Alpine
.
In my journey, I've gravitated towards the teletype console, drawn to
its rawness and simplicity. As a child, long before I could read, I was
already navigating the family computer running DOS. By memorizing the
key sequences, I could launch DOOM.EXE
at the tender age of
four.
Fast forward to my teenage years, when I engaged in what I called "TTY weekends" on a modest mid-2000s HP laptop running Debian. It was a challenge, often requiring me to momentarily switch to a desktop environment for quick web lookups. Yet I thrived during those weekends, learning the ins and outs of Linux while my friends thought I'd gone off the deep end.
Now, nearing my 30s and with different priorities, I find myself free to work in ways that suit me best.
My Setup
Currently, I use a MacBook as my primary laptop, but I've also acquired a ThinkPad X230 for about £30, slightly modified with a USB-C charging port, upgraded RAM (from 4GB to 8GB), and a couple of SSDs.
Running Alpine Linux—renowned for its lightweight design—I've automated my setup with a dotfiles installation script that configures my fish shell, Neovim, and essential programs. It's a streamlined setup; if I need additional packages down the line, they can easily be installed as needed.
Why TTY?
When using my "normie" laptop, I often find myself ensnared by two beasts: the web browser and the terminal. A staggering 90% of my work falls into these categories. Given this gravitational pull towards the terminal, I've grown accustomed to working within it. With Neovim as my editor and tmux for session management, I often question why I would waste precious CPU resources on rendering a modern UI.
This setup allows my Alpine installation to occupy a mere 4GB, while my MacBook consumes over 300GB—enough space to fit my TTY configuration in 75 times! Working in this minimalistic environment brings a sense of zen; distractions evaporate, and simplicity reigns.
If I want to check the time, I simply type date
. To view
my battery status, I run batt
. My ThinkPad even includes an
antenna toggle, which I often leave switched off, using Wi-Fi only when
absolutely necessary.
I feel a profound sense of control over my machine—no auto-updates, no distractions. When I'm finished working, I'm unlikely to succumb to YouTube rabbit holes; instead, I might tackle household chores.
The TTY Experience
Typically, I have 3-4 TTY sessions active simultaneously. I initiate
cmus
in the first to start some music, adjust sound levels
via alsamixer
in the second, and devote the remaining
consoles to coding with Neovim and running commands as needed.
A Caveat: Limitations
It's true that not everything translates smoothly to TTY. The browser can be a significant limitation. Think of it this way: complaining about lack of browsing capabilities in TTY is like going to the beach and lamenting the absence of museums. They serve different purposes.
Fortunately, with today's capabilities for LLMs, many common programming queries can be answered without a traditional web browser.
Creating Custom Tools
Accessing my machine in this way is fulfilling, yet certain tasks have required me to create utilities to streamline my workflow. This harkens back to earlier computing days—if a tool didn't exist, you made it yourself.
Custom Tools Overview
-
blctl - Backlight Control
GitHub Link
A simple program to control screen brightness without a GUI.blctl in action - controlling screen brightness -
batt - Battery Information
GitHub Link
Displays current battery percentage, charging status, and wattage in/out.batt - displaying battery information -
sai - Stream AI
GitHub Link
Used for integrating LLMs in a manner akin tosed
orawk
, allowing for simple prompts handling.sai - AI integration in the terminal
Conclusion
I love this setup and challenge anyone reading to give it a go for just 24 hours. You might discover new facets of Linux, rethink your work habits, and cultivate patience. After setting everything up, take a moment to relish the peace and control.
If this minimalist approach isn't your cup of tea, and you prefer a more visual UI, that's perfectly fine too. There are no judgments here—just a personal invitation to explore.