From 4f7abf4bfd41932fe23ce3e9544b8c425f1b2cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Medra=C3=B1o=20Calvo?= Date: Tue, 6 Mar 2018 00:00:00 +0000 Subject: [PATCH] Cleanup exwm-manage on exit * exwm-manage.el (exwm-manage--unmanage-window): Map windows when quitting. (exwm-manage--exit): Remap all windows. * exwm.el (exwm--exit): Reorder deinitialization sequence so that windows are reparented before the workspaces are removed. --- exwm-manage.el | 13 +++++++++++-- exwm.el | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/exwm-manage.el b/exwm-manage.el index b5c3f58df..cb2bf28b1 100644 --- a/exwm-manage.el +++ b/exwm-manage.el @@ -361,12 +361,17 @@ manager is shutting down." (xcb:+request exwm--connection (make-instance 'xcb:DeleteProperty :window id :property xcb:Atom:WM_STATE)) - (unless (eq withdraw-only 'quit) + (cond + ((eq withdraw-only 'quit) + ;; Remap the window when exiting. + (xcb:+request exwm--connection + (make-instance 'xcb:MapWindow :window id))) + (t ;; Remove _NET_WM_DESKTOP. (xcb:+request exwm--connection (make-instance 'xcb:DeleteProperty :window id - :property xcb:Atom:_NET_WM_DESKTOP)))) + :property xcb:Atom:_NET_WM_DESKTOP))))) (when exwm--floating-frame ;; Unmap the floating frame before destroying its container. (let ((window (frame-parameter exwm--floating-frame 'exwm-outer-id)) @@ -670,6 +675,10 @@ border-width: %d; sibling: #x%x; stack-mode: %d" (defun exwm-manage--exit () "Exit the manage module." + (dolist (pair exwm--id-buffer-alist) + (exwm-manage--unmanage-window (car pair) 'quit)) + (remove-hook 'after-make-frame-functions #'exwm-manage--add-frame) + (remove-hook 'delete-frame-functions #'exwm-manage--remove-frame) (setq exwm-manage--_MOTIF_WM_HINTS nil)) diff --git a/exwm.el b/exwm.el index 0387426ff..f80af0511 100644 --- a/exwm.el +++ b/exwm.el @@ -739,8 +739,8 @@ (run-hooks 'exwm-exit-hook) ;; Exit modules. (exwm-input--exit) - (exwm-workspace--exit) (exwm-manage--exit) + (exwm-workspace--exit) (exwm-floating--exit) (exwm-layout--exit) (exwm--exit-icccm-ewmh))