Emacs in Emacs: A triumph for EXWM
Table of Contents
Previously I’ve talked about the inability to refer to my code screens from within exwm if I’m on a video call in my browser; it shows the option fo other browser windows, and the option of the whole screen, but not an emacs buffer. The solution is simple and beautifully recursive: run emacs within your exwm emacs.
Do what?
Run emacs within your main exwm emacs session. M-S & emacs
. Then, when your emacs starts, immediately press S-k
to switch into exwm’s char-mode
so that keystrokes go through directly, so I’ll never accidentally have my parent emacs keys used by the sub-emacs.
How it works
It’s this last part – using charmode the same way I use it to enable tab-killing in my browser – that I hadn’t thought of. And, when all is said and done, execute M-x kill-emacs
and you’ll go back to your parent.
The reason that emacs windows don’t show up in my list of screens to share in my browser is that exwm considers its emacs process a super-process while any other exwm-hosted app, my browser or gimp or whatever, will be a sub-process that can be found in the browser list.
Other Uses
Whenever you are expecting to operate in ways that endanger your emacs thread-life you can use this emacs-in-emacs method. Overall, this is a very lisp-like recursive solution that exwm makes possible!
- Changing emacs configuration or init.el stuff
- Tramping around or taking other known operations that tend to threaten you with freezing
Resources
-
Find EXWM here: https://github.com/ch11ng/exwm
-
“Share Other Window” issue on exwm https://github.com/ch11ng/exwm/issues/785