diff options
author | Philip <pipcet@gmail.com> | 2015-08-24T19·09+0000 |
---|---|---|
committer | Philip <pipcet@gmail.com> | 2015-08-24T19·12+0000 |
commit | 94bdbfc0da7c8ef14acdc8aa4e73dc1c8fee9700 (patch) | |
tree | ddfe7add7d2dee590f8d366eefbef930067c3ebd /exwm.el | |
parent | 5882015eb5a21cb859794388e21d6dc023764480 (diff) |
Avoid using the "no window manager" code in Emacs
* exwm.el (exwm--on-ClientMessage): Handle fullscreen requests for frames. (exwm-init): Initialize workspaces after unlocking events. * exwm-workspace.el (exwm-workspace--init): Create frames as invisible, then make them visible only once their OverrideRedirect property has been set. * exwm-randr.el (exwm-randr--refresh): New frame parameter `exwm-geometry'. * exwm-layout.el (exwm-layout--set-frame-fullscreen): New function. The Emacs code is buggy, see https://github.com/ch11ng/exwm/issues/39 https://github.com/ch11ng/exwm/pull/42
Diffstat (limited to 'exwm.el')
-rw-r--r-- | exwm.el | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/exwm.el b/exwm.el index 7dffa87aec4b..a52e11419d3a 100644 --- a/exwm.el +++ b/exwm.el @@ -441,6 +441,20 @@ (props (list (elt data 1) (elt data 2))) (buffer (exwm--id->buffer id)) props-new) + ;; only support _NET_WM_STATE_FULLSCREEN / _NET_WM_STATE_ADD for frames + (when (and (not buffer) + (memq xcb:Atom:_NET_WM_STATE_FULLSCREEN props) + (= action xcb:ewmh:_NET_WM_STATE_ADD)) + (dolist (f exwm-workspace--list) + (when (equal (frame-parameter f 'exwm-outer-id) id) + (exwm-layout--set-frame-fullscreen f) + (xcb:+request + exwm--connection + (make-instance 'xcb:ewmh:set-_NET_WM_STATE + :window id + :data (vector + xcb:Atom:_NET_WM_STATE_FULLSCREEN))) + (xcb:flush exwm--connection)))) (when buffer ;ensure it's managed (with-current-buffer buffer ;; _NET_WM_STATE_MODAL @@ -609,14 +623,14 @@ ;; (xcb:icccm:init exwm--connection) (xcb:ewmh:init exwm--connection) (exwm--lock) - (exwm-workspace--init) (exwm--init-icccm-ewmh) (exwm-layout--init) (exwm-floating--init) (exwm-manage--init) (exwm-input--init) (exwm--unlock) - ;; Manage exiting windows + (exwm-workspace--init) + ;; Manage existing windows (exwm-manage--scan) (run-hooks 'exwm-init-hook))))) |