emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm 8a438c2 3/7: Always put the desktop at bottom


From: Chris Feng
Subject: [elpa] externals/exwm 8a438c2 3/7: Always put the desktop at bottom
Date: Fri, 12 Aug 2016 14:38:50 +0000 (UTC)

branch: externals/exwm
commit 8a438c2c172b57fda19c36802bd183d44241af95
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    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.
---
 exwm-manage.el    |   12 ++++++++++++
 exwm-workspace.el |   20 +++++++++++++++++---
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/exwm-manage.el b/exwm-manage.el
index 1dfd3c9..2ec21b3 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))
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 3d3a542..fec83d9 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 ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]