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
This commit is contained in:
parent
5882015eb5
commit
94bdbfc0da
4 changed files with 60 additions and 6 deletions
18
exwm.el
18
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)))))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue