diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2018-02-19T14·34+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2018-02-19T14·34+0800 |
commit | b8ce20b4f3eac1228aef58b83a72a87ccdb819d0 (patch) | |
tree | d4d412e76032258104255e0cdce84b2b5d540acb /exwm-manage.el | |
parent | d22e6740d761bd2c67e928579502a6c2816516a9 (diff) |
Support displaying floating X windows on all workspaces
; Setting _NET_WM_DESKTOP to 0xffffffff makes an X windows appearing ; on all desktops (EWMH). It's tricky to do it for tiling X windows ; so it's not implemented. * exwm-core.el (exwm--desktop): New buffer-local variable recording the value of _NET_WM_DESKTOP. * exwm-layout.el (exwm-layout--hide): Do not hide X windows with this property set to 0xffffffff. * exwm.el (exwm--update-desktop): New function for fetching the value of _NET_WM_DESKTOP and setting `exwm--desktop'. * exwm-manage.el (exwm-manage--manage-window): Use it. * exwm-workspace.el (exwm-workspace--set-desktop): Also update `exwm--desktop'.
Diffstat (limited to 'exwm-manage.el')
-rw-r--r-- | exwm-manage.el | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/exwm-manage.el b/exwm-manage.el index b983ebf80de4..790b6f147904 100644 --- a/exwm-manage.el +++ b/exwm-manage.el @@ -73,6 +73,7 @@ You can still make the X windows floating afterwards." (declare-function exwm--update-struts "exwm.el" (id)) (declare-function exwm--update-title "exwm.el" (id)) (declare-function exwm--update-transient-for "exwm.el" (id &optional force)) +(declare-function exwm--update-desktop "exwm.el" (id &optional force)) (declare-function exwm--update-window-type "exwm.el" (id &optional force)) (declare-function exwm-floating--set-floating "exwm-floating.el" (id)) (declare-function exwm-floating--unset-floating "exwm-floating.el" (id)) @@ -252,19 +253,7 @@ You can still make the X windows floating afterwards." (exwm-floating--unset-floating id)) (exwm-input-grab-keyboard id) (setq exwm-workspace--switch-history-outdated t) - ;; Set _NET_WM_DESKTOP or move window. - (let ((reply (xcb:+request-unchecked+reply exwm--connection - (make-instance 'xcb:ewmh:get-_NET_WM_DESKTOP - :window id))) - desktop) - (when reply - (setq desktop (slot-value reply 'value))) - (if (and desktop - (/= desktop exwm-workspace-current-index) - ;; Check the range. - (< desktop (exwm-workspace--count))) - (exwm-workspace-move-window desktop id) - (exwm-workspace--set-desktop id))) + (exwm--update-desktop id) (exwm-manage--update-ewmh-state id) (with-current-buffer (exwm--id->buffer id) (when (memq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state) |