about summary refs log tree commit diff
path: root/exwm-workspace.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-workspace.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-workspace.el')
-rw-r--r--exwm-workspace.el20
1 files changed, 17 insertions, 3 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 3d3a542eaf6b..fec83d9147e1 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -29,6 +29,8 @@
 
 (require 'exwm-core)
 
+(defvar exwm-manage--desktop)
+
 (defvar exwm-workspace-number 1 "Initial number of workspaces.")
 (defvar exwm-workspace--list nil "List of all workspaces (Emacs frames).")
 (defvar exwm-workspace--current nil "Current active workspace.")
@@ -369,11 +371,17 @@ If the minibuffer is detached, this value is 0.")
                        :value-mask (logior xcb:ConfigWindow:X
                                            xcb:ConfigWindow:Y
                                            xcb:ConfigWindow:Width
+                                           (if exwm-manage--desktop
+                                               xcb:ConfigWindow:Sibling
+                                             0)
                                            xcb:ConfigWindow:StackMode)
                        :x (aref workarea 0)
                        :y y
                        :width width
-                       :stack-mode xcb:StackMode:Below))
+                       :sibling exwm-manage--desktop
+                       :stack-mode (if exwm-manage--desktop
+                                       xcb:StackMode:Above
+                                     xcb:StackMode:Below)))
     (xcb:+request exwm--connection
         (make-instance 'xcb:ConfigureWindow
                        :window (frame-parameter exwm-workspace--minibuffer
@@ -987,8 +995,14 @@ Please check `exwm-workspace--minibuffer-own-frame-p' first."
       (make-instance 'xcb:ConfigureWindow
                      :window (frame-parameter exwm-workspace--minibuffer
                                               'exwm-container)
-                     :value-mask xcb:ConfigWindow:StackMode
-                     :stack-mode xcb:StackMode:Below))
+                     :value-mask (logior (if exwm-manage--desktop
+                                             xcb:ConfigWindow:Sibling
+                                           0)
+                                         xcb:ConfigWindow:StackMode)
+                     :sibling exwm-manage--desktop
+                     :stack-mode (if exwm-manage--desktop
+                                     xcb:StackMode:Above
+                                   xcb:StackMode:Below)))
   (xcb:flush exwm--connection))
 
 (defun exwm-workspace--on-minibuffer-setup ()