about summary refs log tree commit diff
path: root/exwm-manage.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-08-12T11·22+0800
committerChris Feng <chris.w.feng@gmail.com>2016-08-12T11·22+0800
commit8a438c2c172b57fda19c36802bd183d44241af95 (patch)
treeb7e09f9de264626eadd41d7c745e08c32a21c823 /exwm-manage.el
parent6bd85db30053b493e079893af0ef9668d134057d (diff)
Always put the desktop at bottom
* exwm-manage.el (exwm-manage--desktop): New variable for recording the
desktop X window.
(exwm-manage--manage-window): Check for desktop.
* exwm-workspace.el (exwm-workspace--resize-minibuffer-frame)
(exwm-workspace--hide-minibuffer): Put the minibuffer container above
desktop if any.
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el12
1 files changed, 12 insertions, 0 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index 1dfd3c96cb..2ec21b3ed3 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -37,6 +37,8 @@ You can still make the X windows floating afterwards.")
   "Normal hook run after a window is just managed, in the context of the
 corresponding buffer.")
 
+(defvar exwm-manage--desktop nil "The desktop X window.")
+
 (defun exwm-manage--update-geometry (id &optional force)
   "Update window geometry."
   (with-current-buffer (exwm--id->buffer id)
@@ -198,6 +200,16 @@ corresponding buffer.")
                                :y (/ (- (exwm-workspace--current-height)
                                         height)
                                      2)))))
+        ;; Check for desktop.
+        (when (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DESKTOP exwm-window-type)
+          ;; There should be only one desktop X window.
+          (setq exwm-manage--desktop id)
+          ;; Put it at bottom.
+          (xcb:+request exwm--connection
+              (make-instance 'xcb:ConfigureWindow
+                             :window id
+                             :value-mask xcb:ConfigWindow:StackMode
+                             :stack-mode xcb:StackMode:Below)))
         (xcb:flush exwm--connection)
         (setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
         (let ((kill-buffer-query-functions nil))