I use dwm
in my laptop, but previously used i3wm
for a few years. I’m curious about:
- How well
EXWM
performs nowadays? - Is it resource heavy compared to other tiling window managers?
- Is it still an issue
EXWM
not being multi-threaded?
My daily tasks involves just opening chrome, telegram and/or slack, watching movies and coding of course. Would it be a good fit for my needs?
I’d love to know your thoughts if you use or have some previous experience with EXWM
. Thank you in advance!
I used EXWM for years and it was great. No real performance issues, and rarely did its single threaded nature cause a problem.
But I ended up switching to StumpWM because I prefer running a single Emacs instance that I can restart without restarting my whole window manager. And StumpWM can still be controlled in Emacs via SLY.
But it’s not nearly as intuitive as Emacs, as it acts more like tmux than an extension of Emacs window management.
How well EXWM performs nowadays?
IME the same of yesterday, I mean it’s a WM, no special compiz/beryll alike effects or so…
Is it resource heavy compared to other tiling window managers?
EXWM run on top of Emacs, so definitively it demand more resources than an X standalone WM, but itself it’s very light. The point of EXWM is living in Emacs, it’s a nonsense choosing it for just the WM.
Is it still an issue EXWM not being multi-threaded?
Generally speaking yes, but no. Normally you have to do nothing blocking so there is no issue. RARELY I experience something but it’s honestly not a problem and the ability to have my X11 stuff in Emacs it’s so much powerful that I do not want to switch to anything else…
I loved it. If I don’t need to be on a MS Windows machine, I would use EXWM as my daily driver. On Linux it was without problems. Yes, make keybindings and functions for sound, brightness and applications I want to start was a little bit of work. A little bit work with the configuration of X, like the mouse pointer, etc…
I use EXWM daily and I think it is the best user experience without needing the mouse. I have tested i3 in the past but I feel it limited at some points… Anyway, I agree that it is a personal choice and you should give a try!
Also curious, does it still hangs with ‘M-x gnus’ or any other time consuming command?
Yes, you have to wait for it to be finished to move on. Mostly won’t take that long though. The pros outweigh this con for me in daily use. You can break with C-g if it takes too long.
What are the pros that outweigh a single threaded DM? I love Emacs but something like sway on Wayland is a joy on modern HW.
I’ve been daily driving EXWM for about 3 years now and I love it. I haven’t noticed any performance problems and it should work great for just opening the apps you listed.
EXWM being single-threaded (and just being in Emacs) is still somewhat of an issue in that if you’re toying with Emacs and accidentally freeze or crash it, everything else goes down with the ship. It’s not that often of a problem in my experience and I personally find the benefits of EXWM totally outweigh this problem.
Do you think if it is okay to open 2 emacs simultaneously (one with EXWM and one that runs within the EXWM)?
What I mean is that if it will bring a lot of headaches, say, key bindings conflicts?
You should run the second emacs in char-mode.
Seconded (also you can use C-c C-k to quickly do this!). I’ve debugged Emacs startup errors and segfaults from within EXWM many times this way!
I have been using it as my daily driver for years.
i3
comes close but the shear emacsiness of theexwm
experience is impossible to beat. I don’t run very long jobs in elisp and so the single-threaded issue has not bitten me. Your task spec seems similar to mine and so it should be a good fit. Give it a go!why don’t you just try it and see if you personally like it for your personal tasks and requirements
Thank you, I will definetly give it a try!
I have been using exwm for about 2 years, there are some weirdness. When it comes to switching buffer preview with consult, the minibuffer loses focus when in a firefox buffer. And the support for wine application is utterly garbage, sometimes, I cannot even type in the wine application. In my dual monitors setup, I have to do some workaround to switch between monitor easily.
I have been trying other keyboard-centric window managers, like i3, dwm, stumpwm. None of them even come close to the integration of Emacs by exwm.
If I have time, I may try to fix the above issues myself, since the exwm has been abandoned by the author for quite some years, and the current maintainer kindly took over to accept pull request.
For the lost focus in x windows, you may try (setq x-no-window-manager t).
I agree that EXWM is in general a very pleasant experience, I used it for several years. But I have now given up on it and switched to sway. The issue was apps that created floating windows, I never got that to work smoothly. Just saving a file to disk in the web browser was a pain.
I thought it was ALMOST good enough when i used it, like maybe five years ago. I’m sure it’s even better now.
It is a great WM, the only really downside is the single threaded bit, which you can fix by opening another instance of emacs and passing keycaps directly, so that you run any processes that you know will block you in any time, in the created instance, this with emacs server is all you need.
Does anyone here know about the possibility of an Emacs Wayland compositor? I saw this a while ago, but I haven’t heard anything since.
Would I recommend EXWM as a daily driver? Not really. I say that as someone who has chosen to use exwm exclusively for years and tens of thousands of hours. I tried I3 for a while, and have used EXWM under OpenSuse several years and now under Guix, almost always with 3 monitors.
I find that exwm is a glass cannon. Like Linux and emacs, it has a learning curve and appeals to those who tolerate or enjoy that. Why do I get huge benefits from exwm?
- Universal buffer-paradigm even for all my browser tabs.
C-x b
and I can go to any buffer, any app. This is one of the biggest benefits for me, and is absolutely huge. - Universal orgmode modeline/shortcuts. From anywhere I can see what task I am currently logged in, switch to my agenda, and make captures.
- Universal emacs commands. Start eww, swap to shell or calculator or Dired or Tramp, or execute an arbitrary shell command, etc.
- Emacs interfaces become even better. I recently started using emm for audio, for example, and I can anywhere get to a command prompt and enter
emm-pause
etc. It’s not wrong to say that emacs is truly just a good text interface to things, and no where is that highlighted more than in making it your window manager. - Universal emacs-style editing. I don’t need to bother with the frequent question, “can I use emacs keys in my browser?” because EXWM takes care of that (with some minor caveats).
- Maximizing screen real-estate and screen usage. This is true of other tiling window managers, too, but it is very emacs-philosophy to not worry about icons and homescreens and always be full-screen emacs. My setup with multiple monitors, winmove, and Telephone modeline work beautifully, too.
But as for the “Glass” part of the “glass cannon”, there are several concerns that mean that EXWM is not good for general recommendation to, say, my colleagues, or my student developers.
-
Substantial learning curve. For some of us this is enjoyable, but not for everyone.
-
Customization needed. For some users (ie Linux users) this is a given, but those deep in Windows, Mac, and even Ubuntu may not have the taste for this.
-
Threading. Despite those who say otherwise, I have taken the habit of starting sub-emacs processes for the two emacs programs I run that can freeze the main thread. I have shortcuts for my Telega (= superb Telegram front-end) and Elfeed (which freezes on retrieval of some of my RSS feeds). In the past I’ve also needed to use sub-processes for TRAMP, but I’ve been able to stop this with 1) better internet connections 2) remembering to actually clean up all tramp connections when I finish using them, so they don’t sleep and freeze.
-
More likely catastrophes. I have lost times when a syntax error in my emacs init file causes things to fail to even boot, when I need to use command-line to debug my emacs init (often imbalanced parenthesis). An even tougher debug was necessary when I switched to GUIX and exwm kept silently failing to start for days. Eventually I found out that I was missing the image for one of my custom cursors (nothing emacs is normally concerned with) and this was causing exwm to fail without a helpful error message.
So, Glass Cannon, and the Glass means I cannot recommend exwm generally, but the Cannon part is one I would hate to live without.
- Universal buffer-paradigm even for all my browser tabs.