branch: externals/exwm commit b735ab5c439af9985b7b6f5547c82bf55db35a6b Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
exwm-wm-mode: New global minor mode Simple refactoring, `exwm-wm-mode' only replaces `exwm-enable'. * exwm.el (exwm-wm-mode): New minor mode. (exwm-enable): Declare obsolete in favor of `exwm-wm-mode'. Based on https://github.com/ch11ng/exwm/pull/868 by Adrián. --- exwm.el | 51 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/exwm.el b/exwm.el index 2af36e951b..6d2ae8ce19 100644 --- a/exwm.el +++ b/exwm.el @@ -50,7 +50,7 @@ ;; ;; (require 'exwm) ;; (setq exwm-input-global-keys `(([?\s-r] . exwm-reset))) -;; (exwm-enable) +;; (exwm-wm-mode) ;; ;; 3. Add the following lines to '~/.xinitrc': ;; @@ -925,7 +925,9 @@ FRAME, if given, indicates the X display EXWM should manage." (cl-return-from exwm-init)) (condition-case err (progn - (exwm-enable 'undo) ;never initialize again + ;; Never initialize again + (remove-hook 'window-setup-hook #'exwm-init) + (remove-hook 'after-make-frame-functions #'exwm-init) (setq exwm--terminal (frame-terminal frame)) (setq exwm--connection (xcb:connect)) (set-process-query-on-exit-flag (slot-value exwm--connection 'process) @@ -1006,23 +1008,12 @@ FRAME, if given, indicates the X display EXWM should manage." (exwm--log "Exited")) ;;;###autoload -(defun exwm-enable (&optional undo) - "Enable/Disable EXWM. -Optional argument UNDO may be either of the following symbols: -- `undo' prevents reinitialization. -- `undo-all' attempts to revert all hooks and advice." - (exwm--log "%s" undo) - (pcase undo - (`undo ;prevent reinitialization - (remove-hook 'window-setup-hook #'exwm-init) - (remove-hook 'after-make-frame-functions #'exwm-init)) - (`undo-all ;attempt to revert everything - (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))) - (_ ;enable EXWM +(define-minor-mode exwm-wm-mode + "EXWM window manager mode." + :global t + :group 'exwm + (cond + (exwm-wm-mode (setq frame-resize-pixelwise t ;mandatory; before init window-resize-pixelwise t x-no-window-manager t) @@ -1037,7 +1028,27 @@ Optional argument UNDO may be either of the following symbols: ;; 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))))) + (advice-add i :around #'exwm--server-eval-at))) + (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))))) + +;;;###autoload +(defun exwm-enable (&optional undo) + "Obsolete function to enable/disable EXWM. Use `exwm-wm-mode' instead. +Optional argument UNDO may be either of the following symbols: +- `undo' prevents reinitialization. +- `undo-all' attempts to revert all hooks and advice." + (declare (obsolete exwm-wm-mode "0.33")) + (exwm--log "%s" undo) + (pcase undo + (`undo (remove-hook 'window-setup-hook #'exwm-init) + (remove-hook 'after-make-frame-functions #'exwm-init)) + (`undo-all (exwm-wm-mode -1)) + (_ (exwm-wm-mode 1)))) (defun exwm--server-stop () "Stop the subordinate Emacs server."