Add initial support for dock (panel) applications
* exwm-layout.el (exwm-layout--fullscreen-frame-count) (exwm-layout--set-frame-fullscreen): Moved to workspace module. * exwm-workspace.el (exwm-workspace--fullscreen-frame-count) (exwm-workspace--set-fullscreen): Moved from layout module. * exwm-manage.el (exwm-manage--manage-window): Update struts for dock applications. * exwm-workspace.el (exwm-workspace--strut) (exwm-workspace--strut-is-partial): New variables for storing struts. (exwm-workspace--resize-minibuffer-frame) (exwm-workspace--on-ConfigureNotify): Take struts into consideration. * exwm.el (exwm--update-strut-legacy, exwm--update-strut-partial) (exwm--update-strut): New functions for updating _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL. (exwm--on-PropertyNotify): Update struts on corresponding event. (exwm--init-icccm-ewmh): Declare _NET_WM_STRUT and _NET_WM_STRUT_PARTIAL as supported. * exwm-workspace.el (exwm-workspace--update-workareas): Dedicated function for updating _NET_WORKAREA. * exwm-randr.el (exwm-randr--refresh): * exwm-workspace.el (exwm-workspace--init): Use `exwm-workspace--update-workareas'. * exwm.el (exwm--init-icccm-ewmh): Do not set _NET_WORKAREA here.
This commit is contained in:
parent
0863f41490
commit
650ed0013c
5 changed files with 163 additions and 61 deletions
|
|
@ -213,34 +213,6 @@
|
|||
(setq exwm--fullscreen nil)
|
||||
(call-interactively #'exwm-input-grab-keyboard)))
|
||||
|
||||
(defvar exwm-layout--fullscreen-frame-count 0
|
||||
"Count the fullscreen workspace frames.")
|
||||
|
||||
;; This function is superficially similar to `exwm-layout-set-fullscreen', but
|
||||
;; they do very different things: `exwm-layout--set-frame-fullscreen' resizes a
|
||||
;; frame to the actual monitor size, `exwm-layout-set-fullscreen' resizes an X
|
||||
;; window to the frame size.
|
||||
(defun exwm-layout--set-frame-fullscreen (frame)
|
||||
"Make frame FRAME fullscreen, with regard to its RandR output if applicable."
|
||||
(let ((geometry (or (frame-parameter frame 'exwm-geometry)
|
||||
(xcb:+request-unchecked+reply exwm--connection
|
||||
(make-instance 'xcb:GetGeometry
|
||||
:drawable exwm--root))
|
||||
(make-instance 'xcb:RECTANGLE :x 0 :y 0
|
||||
:width (x-display-pixel-width)
|
||||
:height (x-display-pixel-height))))
|
||||
(id (frame-parameter frame 'exwm-outer-id))
|
||||
(container (frame-parameter frame 'exwm-container))
|
||||
(workspace (frame-parameter frame 'exwm-workspace)))
|
||||
(with-slots (x y width height) geometry
|
||||
(when (and (eq frame exwm-workspace--current)
|
||||
(exwm-workspace--minibuffer-own-frame-p))
|
||||
(exwm-workspace--resize-minibuffer-frame width height))
|
||||
(exwm-layout--resize-container id container 0 0 width height)
|
||||
(exwm-layout--resize-container nil workspace x y width height t)
|
||||
(xcb:flush exwm--connection)))
|
||||
(cl-incf exwm-layout--fullscreen-frame-count))
|
||||
|
||||
(defvar exwm-layout--other-buffer-exclude-exwm-mode-buffers nil
|
||||
"When non-nil, prevent EXWM buffers from being selected by `other-buffer'.")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue