I tried to build macOS on Linux — I just called it Sway
2 min read#macos #linux #workflow
Everything I wrote about my workstation was true when I wrote it. That laptop went everywhere with me — which is how, one day, I sat on it and it broke. Not metaphorically: in half. The machine that replaced it is a MacBook, and this is the field report I didn't expect to write.
What the rice was actually for
I never configured Linux for screenshots. Sway, waybar, kitty's theme-toggle script, the dotfiles — all of it was chasing one thing: a system that feels like one piece. Keybindings that behave the same everywhere. Windows that go where they're told. An OS that gets out of the way and stays out.
I'd only been building it for a few months, but every line of it was mine — I knew why each piece was there.
The uncomfortable observation
macOS feels like the thing I was trying to build.
That's a strange sentence to type. Weeks in, this system is smooth in the way my Sway desktop was smooth on its best day — and I haven't configured anything yet. The cohesion I was assembling from a window manager, a status bar, a theme toggle and a pile of dotfiles is just… the default here. I was trying to build macOS on Linux. I just called it Sway.
What survived the move
The terminal moved house; it didn't change. The terminal emulator is Ghostty now, and inside it, nothing is different: Neovim came across exactly as it was, because the configuration is a program — versioned, portable, mine — and git clone doesn't care what OS it lands on. Claude Code runs in the same terminal it always did. The first workflow I rebuilt end-to-end was the one I need most right now: my Honours dissertation builds and previews the same as it did on Linux — LaTeX doesn't care what OS it lands on either.
What's still unsettled
I'm not going to pretend this is a finished setup — the old post claimed everything in it was verified against my dotfiles, and I'm keeping that standard. My hands still expect Sway bindings that aren't there. Windows float unless I deal with them, and I haven't decided yet how much of the tiling life to rebuild versus how much to let go. The package landscape is new ground. Ask me again when the dotfiles have opinions.
Where Linux still lives
Every server my code ships to runs Linux. The Raspberry Pi in the cockpit ran Linux. The instincts the terminal taught me — what a process is, where memory goes, why a socket hangs — came from living there, and they transfer completely. Linux didn't leave my life; it just isn't the one on my lap anymore.
The previous chapter, preserved as it was: My workstation: Linux, Sway, Neovim, tmux.