mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-27 14:57:59 +01:00
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.
This commit is contained in:
parent
c00331a7e6
commit
4f7abf4bfd
2 changed files with 12 additions and 3 deletions
|
@ -361,12 +361,17 @@ manager is shutting down."
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
(make-instance 'xcb:DeleteProperty
|
(make-instance 'xcb:DeleteProperty
|
||||||
:window id :property xcb:Atom:WM_STATE))
|
: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.
|
;; Remove _NET_WM_DESKTOP.
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
(make-instance 'xcb:DeleteProperty
|
(make-instance 'xcb:DeleteProperty
|
||||||
:window id
|
:window id
|
||||||
:property xcb:Atom:_NET_WM_DESKTOP))))
|
:property xcb:Atom:_NET_WM_DESKTOP)))))
|
||||||
(when exwm--floating-frame
|
(when exwm--floating-frame
|
||||||
;; Unmap the floating frame before destroying its container.
|
;; Unmap the floating frame before destroying its container.
|
||||||
(let ((window (frame-parameter exwm--floating-frame 'exwm-outer-id))
|
(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 ()
|
(defun exwm-manage--exit ()
|
||||||
"Exit the manage module."
|
"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))
|
(setq exwm-manage--_MOTIF_WM_HINTS nil))
|
||||||
|
|
||||||
|
|
||||||
|
|
2
exwm.el
2
exwm.el
|
@ -739,8 +739,8 @@
|
||||||
(run-hooks 'exwm-exit-hook)
|
(run-hooks 'exwm-exit-hook)
|
||||||
;; Exit modules.
|
;; Exit modules.
|
||||||
(exwm-input--exit)
|
(exwm-input--exit)
|
||||||
(exwm-workspace--exit)
|
|
||||||
(exwm-manage--exit)
|
(exwm-manage--exit)
|
||||||
|
(exwm-workspace--exit)
|
||||||
(exwm-floating--exit)
|
(exwm-floating--exit)
|
||||||
(exwm-layout--exit)
|
(exwm-layout--exit)
|
||||||
(exwm--exit-icccm-ewmh))
|
(exwm--exit-icccm-ewmh))
|
||||||
|
|
Loading…
Reference in a new issue