Twenty-four hours in. Two crashes, one kernel panic, and a 100GB game download interrupted by a monitor power button.
The Mac has been up for six days and twenty-three hours. It restarted once, for an OS update. The Xbox controller paired to it immediately.
Why bother
There are three reasons I’m doing this. First, macOS fullscreen app transitions waste time. That half-second animation every time you switch between spaces adds up, and there is no way to turn it off. Second, games live on a Windows machine across the room. Third, Hyprland.
Hyprland is a Wayland compositor and tiling window manager for Linux. It is also the best window manager I have used. Workspaces, animations, and layout all configured in a single Lua file. Everything does exactly what you tell it to.
The problem is that when Hyprland crashes, it falls back to a default configuration, which looks like nothing you set up, and is briefly alarming.
The crash
I switched the monitor off. That was it. A udev event fired,
the DRM backend signalled a disconnect, Hyprland tried to
deliver a frame to a workspace on the dying output, hit a null
pointer in Desktop::View::getViewsForWorkspace, and
received SIGSEGV. The crash report was clear. The cause was not
exotic.
This is a known bug in Hyprland 0.55.3. The fix is: do not switch the monitor off. Or switch to hyprland-git and hope the patch is in there.
The Xbox controller
The controller uses HID over GATT, which is a Bluetooth low energy protocol. The Intel AX211 chipset in the motherboard has poor Linux support. The xpadneo driver, which exists specifically to handle Xbox controllers on Linux, connects and then drops the controller after 30 to 90 seconds. Without xpadneo, it creates a new input device every two seconds in a loop. Steam never sees it.
The workaround is a USB cable.
The nostalgia
None of this is unfamiliar. In the 1990s, getting a game to
run meant editing config.sys and
autoexec.bat to load the right drivers in the right
order with enough conventional memory left over. The problem
space was completely legible. You understood exactly what you
were configuring and why.
The Xbox controller problem has the kernel, a firmware blob, a DKMS module, a Bluetooth stack, HCI-level connection parameters, and a controller firmware that Microsoft updates without notice. The stack is ten layers deep. Half of it belongs to someone else.
And yet the appeal is the same. A config file. A decision. An outcome you can trace. Hyprland has that quality when it is working. You write a rule, the window obeys it, and for a moment the computer does exactly what you intended.
That is harder to find than it used to be. Worth a few crashes to get back to it.