Hacker News new | ask | show | jobs
by NoboruWataya 14 days ago
Slight tangent but has anyone moved from AwesomeWM to a Wayland-based tiling WM? Interested to hear what people chose. I tried Sway for a bit and while it's not bad by any means it's a bit too unlike what I'm used to. SomeWM is an attempt at "porting" AwesomeWM to Wayland and looks very promising but not quite there yet (I couldn't get Vicious widgets working and not sure if supporting them is even a goal).

I'm still on AwesomeWM for now because I have no real reason to incur the pain of switching, but still curious to know what path others are taking.

3 comments

(one of AwesomeWM core dev here)

Vicious is getting quite old. We put tons of effort in AwesomeWM to be perfectly backward compatible all the way back to the 3.5.0 API (ok, 4.0 had documented breaking changes, but still had compat code to minimize the porting work), like bug-compatible level using a **ton of `if` in the code. I really can't blame any effort to implement wayland to nuke that compat code mess when it blocks them. The older Vicious most people use is also using blocking code in the main thread, it it locks the entire WM when its calling a shell command. AwesomeWM had async APIs for that kind of stuff for a decade now. IMHO, using some LLM call to port the widget to use the declarative widget API, which AFAIK SomeWM supports, is probably worth it for performance alone, even if you keep using AwesomeWM.

Yes, when looking into it I realised how dated Vicious is these days. It goes to show how long I've been using AwesomeWM I guess because I think it was the shiny new(ish) thing when I first started using it. It doesn't seem like the functionality I want would be that difficult to replicate without it (famous last words) so I may just do that.

Thanks for all your work on AwesomeWM - whether I keep using it or not it has been a great experience!

> not sure if supporting them is even a goal

Technically, it is a goal, though perhaps an optimistic one.

I won't support vicious widgets in the 2.x releases, but I should definitely add support for it in the release/1.4 branch that follows AwesomeWM master/4.4. Not that I think vicious widgets are the best, but technically if it runs on AwesomeWM, I should support it in 1.4.

I created an issue (https://github.com/trip-zip/somewm/issues/599), even if you decide not to use SomeWM. Thanks for trying it out.

I settled on river¹ after a couple of decades with awesomewm. Tiling and tagging work in a way you'd expect coming from awesomewm, but nothing else does. I made my mind up because having to use workspaces and manual tiling is a far harder sell than implementing the functionality I want on top of a decent base.

If anything it reminds me more of the experience with using awesome v2(before lua); you generate a config file for the base WM, and then build up external tooling to drive it how you see fit. The experience has been quite pleasant, but I do enjoy twiddling.

¹ https://codeberg.org/river/river

Edit: I just checked my dotfiles. Awesome went in on 2008-06-09, and river on 2024-06-30. Happy and largely uneventful two years on river.

I had seen river but for some reason didn't look too much into it. I think it's because at first glance it looks like a protocol that you can build a WM on, rather than a WM itself, but I guess it's probably easy to build your own tooling over it (a lot easier than "building your own WM" in the traditional sense)?

I'll give it a look - thanks!

If you want an out of the box test then playing with river-classic¹ is probably a good place to start. It gives a feel for where you can go, without having to put too much effort in.

For example, it has pluggable layouts where instead of pulling in a lua module(such as awful.layout) in awesome you'll run an external process which handles events. You can even run multiple managers and switch between them with bindings, or write a custom one to scratch that itch. If you're happy with just awful's .suit.tile.right and .suit.max then basically any backend will do.

This is why it feels like a reasonable path off awesomewm to me. I always considered awesomewm to be the WMConstructionKit, and while river changes how you interact there is still a nice route to extensibility. The newer direction even more so than the -classic offshoot.

¹ https://codeberg.org/river/river-classic