(This video has sound)
CYBERMACS is my personal window manager. It is based on Emacs Wayland Manager (EWM) with added 3D and “organization” features.
- Everything is scriptable (thanks Emacs)
- Tiled, with support for floating windows (thanks EWM)
- Floating windows wobble
- Everything is 3D – panes, workspaces and activities (meta-workspaces)
- Many ways to spawn, move and switch between applications
- Fuzzy search select anything
- Adaptive quick-switching based on recency and frequency
- undo/redo layout changes; save them for later
- All surfaces hidden from screen capture by-default; explicitly set surfaces you wish to display
- etc.
My dream has been to combine Compiz with a flexible, fully programmable window manager. Emacs window managers – like EXWM – are perfect for the latter, but there wasn’t much out there to “compizify” it with effects, animations and 3D graphics that gave it a cohesive physical “feel”.
I’ve long considered implementing it myself. At a few instances I’ve set out to learn X (and evetually wayland) internals, shader programming, and so on. But any time I bring it up, friends and family manage to talk me out of it. They have a point – I don’t want to count the hours I’ve already spent on my window manager configurations (EXWM at the time). I’d rather use the time I had left to touch grass than to set up something that resembled Johnny Mnemonic.
Sometime early this year, LLM coding tools started getting decent, so I set out to experiment using them on some of my backlogged projects. I ended up making a personal fork of EWM (Emacs Wayland Manager) called CYBERMACS, and added a ton of 3D and workspace navigation features to it.
You know how some people browse the web and leave hundreds of tabs open? The result here is something that gives a tactile dimension to workspace management with (too many) ways to navigate and organize hundreds of opened applications.
It is a bit overwhelming. Sometimes I lose track what I’m actually running and where it is within panes, workspaces and activities (meta-workspaces). Every workspace can have more application surfaces assigned to it than the number of panes that it has to display them. To resolve this, a pane can be switched to any hidden surface of that workspace like a bookwheel. There are actually 3 “bookwheels” – each pane within a workspace can be switched to other hidden surfaces, workspaces are switched around a multi-face prism (which represents the “activity”), and multiple prisms can be switched. So it’s actually almost 5 dimensions.
To help myself get my bearings within the environment, navigation can be performed via fuzzy search throughout all the panes and workspaces/activities. When I get tired of typing and reading, I can use a visual / non-textual selection interface to switch between surfaces. I like to think that the 3D physical imitation contributes as a mnemonic feature to remember and intuit navigation actions, like a memory castle.
I constantly use CYBERMACS to experiment with better ways to integrate it into my muscle memory; if I can think less about how to get to an application surface, then I’m making progress.
I pay attention to my usage habits, and how my intents are translated to my actions. You know how walking feels mostly automatic, despite the complexity of the motor sequences that are required to do it? One of my goals is to reduce the distance between what I want and how to do it. Instead of just training myself to use a static interface, I’ve also molded cybermacs to my own patterns of thinking. CYBERMACS and I bear aspects of a symbiotic relationship.
Someone at a bar said that it was basically a virtual fidget spinner. I make no claim that this is more productive, it’s kind of an ADHD trap. But it’s mine and it feels good.