setup

Big desktop, small laptop

My Linux desktop: it scrolls sideways forever, plays records on the lock screen and runs on a laptop that would rather it didn’t.

Most people set up a new computer by installing what they need and getting on with their work. I installed CachyOS, then a window manager that scrolls sideways, then a shell to draw the bar and the panels, then wrote a plugin for the shell, then spent a long weekend teaching the lock screen to play records. I’m told the work comes next.

As on the about page, the true bits are stamped. This time nearly all of it is, which I find more embarrassing, not less.true

A dark green desktop at 1366 by 768. A thin bar along the top shows the time, 6:56 PM, CPU at 52%, three workspace dots and a tiny record spinning. Below it are three terminal windows with square corners and narrow gaps. On the left, Neovim's start screen: SCREENAGER in outlined letters, the greeting “good evening, screenager”, a menu, three recent files and the song now playing, Strawberries & Cigarettes by Troye Sivan. Top right, fastfetch lists CachyOS, kernel 7.2.9, 1383 packages, niri 26.04, an AMD Ryzen 3 3250U and 5.72 GiB of memory. Bottom right, cava's green bars bounce to the music.
Workspace 2 on a Wednesday evening: Neovim, fastfetch, and cava listening to Troye Sivan.

In which the hardware is asked to do a lot

All of this runs on a laptop with a two-core Ryzen 3, graphics built into the processor, 5.7 GiB of memory and a screen 1366 pixels wide.true If my desktop came in a box, the back of the box would say this:

System requirements

minimum recommended this laptop
screen 1920 × 1080 2560 × 1440 1366 × 768
memory 8 GB 16 GB 5.7 GiB
processor 4 cores 8 cores 2 cores
graphics its own card a good one borrowed from the processor
rubber duck optional recommended equipped

Below the minimum on four lines of five. Runs it anyway.

1366 × 768 is 1,049,088 pixels. A 4K monitor has 8,294,400, nearly eight times as many. Every decision on this desktop starts from that number, and most of them end with something getting smaller.

The bar along the top, for instance, is 18 pixels tall.true Its config file opens with a title drawn in box-drawing characters and explains, with total confidence, that 28 pixels is the sweet spot on a 768-pixel screen. Somebody changed it to 18 in a settings window, and the comment never found out.

The desktop’s top bar, cropped to its height of 18 pixels: the time, CPU use, the focused window’s title, three workspace dots, a tiny spinning record and the status icons.
The bar to scale, inside the 28 pixels its config file still believes in.

CachyOS is Arch Linux underneath, rebuilt for speed, and like Arch it never stops updating. Since I installed it on 30 January I’ve run 172 full system upgrades, which between them upgraded 4,803 packages, about 19 a day.true Nothing has broken. I’m saying that quietly, in case it hears.

In which the desk goes on forever

The window manager is niri. Most tiling window managers fit every window onto the screen, so each new one makes the others smaller, and on a screen this size the fourth window is a postage stamp. niri doesn’t squeeze. It lays windows out in a strip that runs sideways forever, and the screen is a small window onto the strip that slides along it.true

Night in a small room with a crescent moon in the window. I sit at the left end of a long desk, typing on a laptop whose screen shows a code editor. Beside the laptop the same row of windows carries on across the wall as faint outlines, a terminal, a music visualiser, another editor, fading out past the right edge of the picture. Every so often the row slides along and a different window lands on the laptop's screen.
The screen is fifteen inches. The desk goes on forever.

On a small screen this is the right idea. The screen stays small; the desk just gets longer. I have never once run out of room. I regularly run out of remembering where I put things, which is a different problem, and also mine.

New windows open half the screen wide and grow or shrink a tenth at a time. There are four pixels between them, and their corners are square, set by a rule whose comment reads, in full, “Set every window radius to 0”.true It’s the clearest documentation I’ve ever written.

Every slide and resize is a spring with a damping ratio of exactly 1.0. That’s critical damping, the quickest a spring can settle without overshooting, so windows arrive and stop, without a wobble.true One spring is set to 0.6 instead, and it belongs to the notification that tells me my config file has an error. The only thing on my desktop allowed to bounce is the news that I’ve broken it.

There are 91 keyboard shortcuts.true One of them is Ctrl+Alt+Delete, which for forty-odd years has meant “please help”. Here it quits the entire desktop, and the comment beside it says “Also quits Niri”, in the tone of someone who found out.

A screen recording. It opens on fastfetch and cava beside btop, a wall of system graphs. A column widens and narrows again, the screen drops to an empty workspace with a pixel-art meadow for a wallpaper, rises back, slides left to Neovim’s start screen, then right again to btop.
Along the strip, down to an empty workspace and back. Every move is a spring with nothing to prove.

In which everything is grass

Daytime in a dark room with the curtains drawn. Through a gap between them there's a sunny lawn, a tree and a rabbit hopping to and fro. I sit with my back to the window at a desk, facing a laptop whose screen shows a pixel-art meadow, a lake, and a small man asleep in the grass. A stripe of daylight lies across the floor behind me.
Touch grass. Progress: 0/1.

My wallpaper is a pixel-art painting of a man asleep in a meadow by a lake. The about page has an achievement called Touch grass, locked, progress 0 of 1, and this is the nearest I’ve got: I look at grass all day, from indoors, at 1366 by 768. I didn’t paint it. It came from a collection of wallpapers on GitHub that doesn’t know who did either, so if it’s yours: it’s lovely, and please tell me.

The shell that draws my bar, panels, notifications and lock screen is Noctalia, and it takes every colour on the desktop from the wallpaper.true It works out a palette from the picture and writes it into the window borders, the terminal, btop, cava, GTK and Qt apps, VS Code, Zed, Zen, Obsidian, Neovim and Claude Code, then sends Neovim a signal so it repaints without restarting. Change the wallpaper and the whole desktop changes its clothes to match. So technically, everything I look at all day is grass.

This website’s green, #72dd71, is one Noctalia picked out of a wallpaper.true Which means you’ve been looking at grass too. Sorry.

A screen recording of the empty desktop: the wallpaper, a pixel-art meadow with a man asleep in the grass by a turquoise lake under a forest, with a thin bar along the top and a row of fine green bars along the bottom edge rising and falling with the music.
The empty workspace, with music on. The bars along the bottom are a visualiser, the only thing on the desktop that moves when I don’t.

In which the music is on, in five places

When something’s playing, it turns up all over the desktop: a tiny record spinning its cover in the middle of the bar, a line on Neovim’s start screen, cava when I open it, the bars along the bottom of the empty workspace, and the lock screen, on a turntable.true When the music stops they all go quiet together, and the desktop looks like a shop where somebody has turned the radio off.

The lock screen got the most work, because it’s the screen that’s on when I’m not. It took a long weekend and a plugin called Turntable, 1,572 lines of Luau.true

A screen recording of the lock screen arriving. A circle opens from the middle of the desktop onto a pixel-art night: stars, dark ridges and city rooftops along the bottom. On the left a large clock reads 06 58, the seconds rolling beside it, next to Wednesday, October 7, and under it the greeting “good evening, screenager” above a password box drawn as a key, with my cartoon portrait on its bow. On the right a black vinyl record spins under a tonearm, its label the album art of the song playing, r.i.p. by Virginia to Vegas.
Locking up: a circle opens onto the night, the record drops in on a spring, the tonearm swings over and the greeting types itself.

The record turns the cover of whatever’s playing at 33⅓ rpm, the speed of a real LP.true Spinning a picture smoothly is expensive, so when the track changes a script draws the label at 48 angles, once, and the lock screen flips between them. It updates thirty times a second while anything moves and once a second when nothing does, which is most of the time, because I’m not there.true

The sky behind it is this website’s header.true A script builds the site’s own night generator, renders it in a headless browser at exactly 1366 by 768, and leaves Saturn out, because, in the script’s words, “the record is the round thing on this screen”.

The password box is drawn as a key with my face on the bow. Click the face and the key flips over to show how long the screen has been locked.true I’ve thought about it a lot, and I still can’t tell whether putting my face on the key makes the computer more secure or less. The duck has seen it. It said nothing, which from the duck is high praise.

In which I open ~/.config

All of this lives in ~/.config, along with every program I’ve ever changed my mind about. It has 76 folders in it.true This is my inventory:

Inventory

  • ×8 Browsers Brave, Chrome, Chromium, Edge, Firefox, Opera, Vivaldi and Zen. Three are still installed. The other five left their coats. true
  • ×5 Editors Neovim, VS Code, VS Code Insiders, Zed and micro, all installed. Which one I use depends on the week. true
  • ×3 Terminals Alacritty, Kitty and Ghostty. One is installed. The other two are config files, waiting by the phone. true
  • ×388 Wallpapers One in use. The other 387 are a contingency. true
  • ×1,383 Packages 233 of them installed on purpose. true
  • ×91 Keyboard shortcuts Twelve of them involve the scroll wheel. true
  • ×1 Rubber duck Not in ~/.config. Can’t be configured. Has configured me.

All of it, the configs, Turntable and the script that paints this site’s night onto the lock screen, is in my dotfiles.true Take whatever you like. The duck stays with me.

That’s the desk. Out in the wallpaper the man is still asleep in the meadow, in the sun, not configuring anything. One of us has unlocked the achievement.