Skip to main content

SomeWM 1.4.0 - Stable Release

· 4 min read

I first installed linux on a personal machine in 2014. Linux mint. It was absolutely glorious in all its janky ways. I used it stock for about 2 or 3 years, until I stumbled upon /r/unixporn and saw some things that blew my mind. I had never considered that I could configure my setup in a way that was truly unique to my machine.

AwesomeWM users had the coolest rices. Every time I saw a truly beautiful rice, it was AwesomeWM, without fail. I was hooked instantly. I spent SO MUCH of my time in the subreddit and discord. I downloaded the docs so I could dig through them from the boat during a scuba trip with my brothers. I answered questions on the discord and subreddit trying to help get more users access to building what they want! Awesome was way more than just a Window Manager. It was a framework, the only thing in your way was your own creativity.

Then I finally noticed questions about Wayland all over the subreddit, discord, and github. I hadn't even considered that. Why hasn't Awesome adopted wayland yet? Will it? If not, is it going to be worth using AwesomeWM when the rest of the linux world moves on?

I tried a few wayland compositors. No disrespect, but they are not for me. I'm in charge of my awesome config. I can do anything I want. No other compositor gave me that feeling.

I watched Wayland ports of Awesome start and then fizzle out. And start again...and fizzle out again.

I was worried if we didn't get a wayland port, maybe we'd lose the community who was building the stuff I loved.

So, I figured "Why not me?"

SomeWM is AwesomeWM's entire Lua API on top of Wayland.

My first attempt used tinywl as a jumping off point. It failed instantly. Too overwhelming, too much to do. AwesomeWM had 12 or 13 years of logic. I would never be able to do it, so I gave up on that "from scratch approach." Then I tried taking the AwesomeWM code and altering the C only where it had used X11 calls...also, actually impossible for my skill level. I became an AwesomeWM archeologist. I read every early commit. Learned how they implemented lua early on, watched the fork from dwm to something awesome. So I thought, "Maybe I could fork from dwl1 and move the AwesomeWM lua code in."

That one worked.

SomeWM 1.4.02 is, to me, AwesomeWM master branch on Wayland.3

What's next

1.4.x will get maintenance releases with bugfixes and upstream ports on the release/1.4 branch. That will always follow AwesomeWM as closely as I can.

Meanwhile, main is now 2.0-dev. The 2.0 cycle is about internal architecture improvements - a proper event queue, a new layout engine - while keeping the public Lua API compatible. Your rc.lua should keep working unless I get really weird with it.

Thank you

Thank you to everyone who has contributed thus far. And to everyone who tried SomeWM after the first post, filed bugs, shared configs, or just gave encouragement.

There's still lots of stuff in the works.

Try it. Break it. File bugs.

GitHub: https://github.com/trip-zip/somewm

Footnotes

  1. Why use wlroots? Because forking from dwl was easier than learning libwayland.

  2. Why start with versioning 1.4.0 rather than 1.0.0? Because the minor version tracks the AwesomeWM release being mirrored: SomeWM 1.4 = AwesomeWM 4.4 on Wayland.

  3. 1.4 also includes a couple of features that go beyond AwesomeWM - a carousel layout and animated tiling transitions. These are more of a preview of the 2.0 direction than a focus of this release, but they're there if you want to play with them.