My workstation: Linux, Sway, Neovim, tmux — and why the terminal is home
2 min read#linux #neovim #workflow
Everything I ship — a field-service SaaS, an offline-first Android app, this website — gets built in the same place: a terminal on Linux. Not out of nostalgia, but because a text-first workflow compounds: every tool composes with every other tool, and every repetitive task is one script away from disappearing. Everything below is verified against my actual dotfiles — not an aspirational list.
The stack
- OS — Ubuntu LTS. A boring base is a deliberate choice: the surprises should be in my code, not my OS.
- Window manager — Sway, a Wayland tiling WM. Windows go where I tell them.
- Terminal — kitty, with a dark/light theme toggle script — the same trick this site's statusline pulls.
- Editor — Neovim, configured in Lua with lazy.nvim.
- Multiplexer — tmux: one session per project, windows as workspaces.
- AI pair — Claude Code, in the same terminal. It types fast; I review, decide, and answer for what ships.
- Shell — the glue for everything else.
Why Neovim
The honest answer: because the editor gets out of the way. Modal editing means my hands never leave the keyboard, and the configuration is a program — versioned, portable, mine.
-- The keymap I use most: fuzzy-find anything, Telescope-style.
vim.keymap.set("n", "<leader>ff", function()
require("telescope.builtin").find_files({ hidden = true })
end, { desc = "Find files" })That muscle memory shaped this site: press ⌘K anywhere and you get a Telescope-style palette; the footer is a statusline; the header is a tmux tab bar. It isn't a costume — it's how my screen actually looks.
And it goes further than editing text: with nvim-dap and neotest-gradle, real Android debugging and Gradle test runs happen inside Neovim — the same buffer discipline, pointed at Exequ-Jobs.
What the terminal teaches
Working close to the OS builds instincts that GUIs hide: what a process is, where memory goes, why a socket hangs. When our capstone team squeezed a computer-vision pipeline onto a Raspberry Pi, the environment they were fighting was one I already lived in — the same Linux, just smaller.
How this workflow ships real software: How I use Claude Code without becoming its passenger.