branch: externals/exwm commit 685d382aa6b2bccb613db34d039591e35041ccf2 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
exwm--enable, exwm--disable: New functions. * exwm.el (exwm-wm-mode): Extract exwm--enable, exwm--disable. (exwm--enable, exwm--disable): New functions. Based on https://github.com/ch11ng/exwm/pull/868 by Adrián. --- exwm.el | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/exwm.el b/exwm.el index a46d826d95..1e3e4582c5 100644 --- a/exwm.el +++ b/exwm.el @@ -1011,27 +1011,37 @@ FRAME, if given, indicates the X display EXWM should manage." :group 'exwm (cond (exwm-wm-mode - (setq frame-resize-pixelwise t ;mandatory; before init - window-resize-pixelwise t - x-no-window-manager t) - (setenv "INSIDE_EXWM" "1") - ;; Ignore unrecognized command line arguments. This can be helpful - ;; when EXWM is launched by some session manager. - (push #'vector command-line-functions) - ;; In case EXWM is to be started from a graphical Emacs instance. - (add-hook 'window-setup-hook #'exwm--init t) - ;; In case EXWM is to be started with emacsclient. - (add-hook 'after-make-frame-functions #'exwm--init t) - ;; Manage the subordinate Emacs server. - (add-hook 'kill-emacs-hook #'exwm--server-stop) - (dolist (i exwm-blocking-subrs) - (advice-add i :around #'exwm--server-eval-at))) + (exwm--enable)) (t - (remove-hook 'window-setup-hook #'exwm--init) - (remove-hook 'after-make-frame-functions #'exwm--init) - (remove-hook 'kill-emacs-hook #'exwm--server-stop) - (dolist (i exwm-blocking-subrs) - (advice-remove i #'exwm--server-eval-at))))) + (exwm--disable)))) + +(defun exwm--disable () + "Unregister functions for EXWM to be initialized." + (exwm--log) + (remove-hook 'window-setup-hook #'exwm--init) + (remove-hook 'after-make-frame-functions #'exwm--init) + (remove-hook 'kill-emacs-hook #'exwm--server-stop) + (dolist (i exwm-blocking-subrs) + (advice-remove i #'exwm--server-eval-at))) + +(defun exwm--enable () + "Register functions for EXWM to be initialized." + (exwm--log) + (setq frame-resize-pixelwise t ;mandatory; before init + window-resize-pixelwise t + x-no-window-manager t) + (setenv "INSIDE_EXWM" "1") + ;; Ignore unrecognized command line arguments. This can be helpful + ;; when EXWM is launched by some session manager. + (push #'vector command-line-functions) + ;; In case EXWM is to be started from a graphical Emacs instance. + (add-hook 'window-setup-hook #'exwm--init t) + ;; In case EXWM is to be started with emacsclient. + (add-hook 'after-make-frame-functions #'exwm--init t) + ;; Manage the subordinate Emacs server. + (add-hook 'kill-emacs-hook #'exwm--server-stop) + (dolist (i exwm-blocking-subrs) + (advice-add i :around #'exwm--server-eval-at))) ;;;###autoload (defun exwm-enable (&optional undo)