Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The "obvious" answer for me is EXWM; since I'm an Emacs user anyway. The things keeping me from EXWM (besides just finding time to make the switch) are that:

1) I'm concerned about Emacs being single-threaded; on the boxes that I use Wanderlust (an Emacs mail client) on on large folders (such as the git devel mailing list, which receives thousands of emails every month), Emacs can stall for 10s of seconds. Packing on even more of the system to that single-threaded event loop worries me (especially if I can't even switch to another program during that stall).

2) I'd like to try Wayland at some point, so it seems like if I'm going to go through the trouble of switching, it should be something that is future-compatible.



> 2) I'd like to try Wayland at some point, so it seems like if I'm going to go through the trouble of switching, it should be something that is future-compatible.

You both have probably heard of it, but in case you haven't, Sway[1] is like a port of i3 to Wayland. Since i3 is based on wmii, Sway might be your best bet.

Regarding programmability, I'm not sure exactly how similar Sway is to i3, but you can get quite far in scripting configuration using the included i3-msg[2] executable. i3 keeps a socket open where you can send it commands or query its state. So, you can use it to "program"/"extend" i3 from any language by calling i3-msg.[3] This doesn't go as far as what you can achieve with a live programming environment like the Lisp WMs you mentioned, but it's something.

The manpage says you can also subscribe to events to listen to them, but it doesn't seem to mention what events these are.

[1] https://swaywm.org/

[2] https://www.mankier.com/1/i3-msg

[3] As an example, a little configuration I've done is adding a command (called via keybinding) that moves back and forth the floating windows of the current workspace to a new workspace that's named based on the current workspace. In other words, it's a keybinding that shows or hides the floating windows of a given workspace without mixing the floating windows between the different workspaces. I use i3-msg to query the name of the current workspace, to check if there are floating windows in the workspace, and to send the command to send these windows to or from the alternate workspace corresponding to the current one.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: