I am often opening exwm buffers by running async-shell-command but unfortunately these buffers always get named *EXWM*. It would be great if when I ran async-shell-command 'firefox the buffer that gets created would be named firefox.

  • 1
    I don't use EXWM, but async-shell-command accepts extra optional parameters. The second parameter is the name you want for the buffer with the results.
    – darcamo
    Dec 14, 2020 at 22:38
  • @darcamo: Please consider posting that as an answer.
    – Drew
    Dec 15, 2020 at 17:07
  • please note that I am seeking a complete elisp function. Dec 15, 2020 at 20:29

1 Answer 1


something like this could work...

(defun async-shell-to-buffer (cmd)
  (interactive "sCall command: ")
  (let ((output-buffer (generate-new-buffer (format "*async:%s*" cmd)))
        (error-buffer  (generate-new-buffer (format "*error:%s*" cmd))))
    (async-shell-command cmd output-buffer error-buffer)))

then it's possible to call (async-shell-to-buffer "firefox")

  • this behaves exactly the same for me as async-shell-command Dec 16, 2020 at 0:35
  • in the *Buffer List* i get *async:firefox* and *error:firefox* so might be something else exwm is doing?
    – zzkt
    Dec 16, 2020 at 2:51
  • maybe try rename-buffer in a function advising exwm-manage--manage-window looks like that's where it's creating new buffers...
    – zzkt
    Dec 16, 2020 at 2:52
  • I'd copy this from the example config; it sets the name to a I'd expect (feel free to choose a different keybinding): github.com/ch11ng/exwm/blob/… Jan 5 at 6:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.