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
    Commented Dec 14, 2020 at 22:38
  • @darcamo: Please consider posting that as an answer.
    – Drew
    Commented Dec 15, 2020 at 17:07
  • please note that I am seeking a complete elisp function. Commented 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 Commented 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
    Commented 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
    Commented 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/… Commented Jan 5, 2023 at 6:22

Your Answer

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

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