And in spirit of HN, here is the extremely long (as I've been meaning to write this up for a few friends too) human written description of what led to it/why it's my zen sandbox/what I've liked so much about it. The short answer, if one does not wish to read a wall of text about someone's vibe coded pet project, is I can live tweak aspects of my DE in the background during the workday but I've never actually spent an ounce of energy looking at a single line of the code (I've got enough of that elsewhere!). E.g. my desktop icons replicate across my monitors so I can always access them from any screen. Small shit like that is just fun to have "appear" during some boring work call. It's also pretty efficient, using less RAM+VRAM than LXQT/KDE/Gnome (though I don't claim feature parity with those either). The downsides are it's not meant to be the best archictecure, the most secure architecture, or have features anyone but I wanted to use. Parts I don't use much also haven't gotten as much work, e.g. RemoteViewer is still just an MVP with only (custom built) VNC support while the Start Menu functionality is pretty much 100% from what I wanted to do. It's designed to be a zen sandbox.
I'd also preface all of the OS configuration has gone into a monorepo which contains the DE as one component and I made sure to have regular backups to my external server. This is in anticipation at some point it'll just delete everything when it gets stuck or somehting, but it has surprisingly been very well behaved so far and I haven't had to do more than run test restores of anything yet.
.
Longer (still human) description:
I started my yearly "install Linux on my main personal PC, put a few weeks of work into tweaking it, regret it, and roll back to Windows" except this time I decided to just give AI full reign in initial set up and troubleshooting. I usually go Arch (btw) with Sway because my favorite thing on all of my Linux PCs vs my Windows one is I can build it up to what I want rather than down from some enormous blob of shit I don't care about (which, inevitably, I end up breaking or getting limited by because there is some cross dependency built into the system I didn't account for). This was great, it took a lot of the "and how the fuck do I configure Pipewire to do hide the unfiltered mic?" type friction from the start.
Straight away though I ran into some issues with my software KVM (drag your mouse through the edge of the monitor and your mouse+keyboard goes to the next machine until you drag it back) since it expected Gnome/KDE Wayland extensions to do it and Sway doesn't have those. I didn't really want to go down the road of building half my programs from scratch (or trying to find who else already is on AUR and use that kludge) so I asked the LLM if there was a way to write a plugin. It suggested Hyprland would both be easier to write such a plugin for and be a bit more bleeding edge for some of the other wlroots features I was looking for too. Not 30 minutes later, Synergy was working!
I then took this another step forward and added the new Wayland extension for SDR content brightness in HDR. By default it put SDR content at 201 nits, and I usually set it to ~480 in my bright office (lower at night). Another quick addition to the hyprland plugin and this too was working without having to build the whole kit and kaboodle that is a standard pacman dependency tree with only the official repos (and a small, easier to maintain, plugin).
This was about the point I realized this was kind of relaxing/fun. Instead of fight some nitpick detail all day and come out half defeated, I could just do my thing while the LLM tried it in the background. So I decided, "hey, what about a few really lightweight tray apps for things like managing and connecting to containers or triggering different types of screenshots/recordings?". Then I replaced waybar, and the launcher, and maybe a few other things. The key rule which made it a zen sandbox was "low abstraction" and "avoid 3rd party libraries wherever reasonably possible". E.g. I was fine pulling in a unicode library, a font rendering library, and system integration libraries for vulkan/systemd/dbus/etc - if I ever really wanted I could replace those later but it was more the "why does this tray app take 120 MB to show me the clipboard?" type abstraction I wanted to avoid, not a custom OS.
Around this time, I realized I was wasting tokens/time asking it to do the same things. I.e. "make an input box which...", "theme this like...", and so on. I figured it'd be a lot more fun to make these kinds of things into microservices. Being a zen sandbox, I decided to go the slightly impractical approach of a single process with a bunch of threaded microservices which communicate over the JSON message bus. At first I wasn't sure if this would just be a crashing mess being a single C process, but it has actually managed to do extremely well with both hardening and isolating what it can in that bounds. The theme service, the image encoding/decoding service, the clipboard service, and so on. The biggest help was the common UI toolkit, written from raw C + Vulkan. After having it build up a library of UI elements overnight the speed of making graphical components went up drastically.
At this point it was no longer the weekend, but it was all so stable and the development so isolated I kept vibing it in the background during the whole work week. What started as an ugly baby only a mother could love turned into something I actually liked the look and feel of more than anything else I had tried. I kept expanding the apps: TaskManager, Settings (unified settings app across all apps in the DE), start menu, my own spin on workspaces/workspace movement, notifications+notifications tray, clock+calendar, network info, bluetooth pairing, OSDs for volume, Calc, hardware accelerated screen recording via Vulkan, and so on.
I had also vibed 2 remakes of Windows apps to Linux: SumatraPDF and 7zip. There's just something about their simplicity I've always loved on Windows, and none of the Linux alternatives have never quite felt the same even if they do the same job. At first, I had converted these to FLTK based clones using MuPDF and 7z (the underlying libraries used by the apps). Once the DE started to be more complete and I had my own UI toolkit, I just went for native integration of the underlying libraries into FileManager and Viewer. Viewer also has support for any image/video/document format supported by the DE as a whole.
Then I realized "Synergy sure has an annoying UI, lacks a few features, and uses a lot of RAM + it's a pain to enter my license on each machine". So now that is the SoftKVM microservice, and a stub build exists on my mac mini (rebuilt from first principles, not the Synergy protocol).
Anyways, I think that's more than enough blabbing. I could probably go on for 3x as long but I'm not sure anyone would want to read about it :). As for what's next? I think this weekend I'd like to drop Hyprland and go straight to wlroots - maybe even break the holy separation of compositor and apps as part of this anti-unix approach "borg". It has a lot of cruft which makes no sense (Lua for configs? All other configs go in JSON and have a GUI in Settings!) and it uses about as much VRAM as all of DanDesk with nothing else open so I could probably find a few hundred MB to save there.