mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-30 16:07:59 +01:00
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.
This commit is contained in:
parent
6bd85db300
commit
8a438c2c17
2 changed files with 29 additions and 3 deletions
|
@ -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
|
"Normal hook run after a window is just managed, in the context of the
|
||||||
corresponding buffer.")
|
corresponding buffer.")
|
||||||
|
|
||||||
|
(defvar exwm-manage--desktop nil "The desktop X window.")
|
||||||
|
|
||||||
(defun exwm-manage--update-geometry (id &optional force)
|
(defun exwm-manage--update-geometry (id &optional force)
|
||||||
"Update window geometry."
|
"Update window geometry."
|
||||||
(with-current-buffer (exwm--id->buffer id)
|
(with-current-buffer (exwm--id->buffer id)
|
||||||
|
@ -198,6 +200,16 @@ corresponding buffer.")
|
||||||
:y (/ (- (exwm-workspace--current-height)
|
:y (/ (- (exwm-workspace--current-height)
|
||||||
height)
|
height)
|
||||||
2)))))
|
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)
|
(xcb:flush exwm--connection)
|
||||||
(setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
|
(setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
|
||||||
(let ((kill-buffer-query-functions nil))
|
(let ((kill-buffer-query-functions nil))
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
|
|
||||||
(require 'exwm-core)
|
(require 'exwm-core)
|
||||||
|
|
||||||
|
(defvar exwm-manage--desktop)
|
||||||
|
|
||||||
(defvar exwm-workspace-number 1 "Initial number of workspaces.")
|
(defvar exwm-workspace-number 1 "Initial number of workspaces.")
|
||||||
(defvar exwm-workspace--list nil "List of all workspaces (Emacs frames).")
|
(defvar exwm-workspace--list nil "List of all workspaces (Emacs frames).")
|
||||||
(defvar exwm-workspace--current nil "Current active workspace.")
|
(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
|
:value-mask (logior xcb:ConfigWindow:X
|
||||||
xcb:ConfigWindow:Y
|
xcb:ConfigWindow:Y
|
||||||
xcb:ConfigWindow:Width
|
xcb:ConfigWindow:Width
|
||||||
|
(if exwm-manage--desktop
|
||||||
|
xcb:ConfigWindow:Sibling
|
||||||
|
0)
|
||||||
xcb:ConfigWindow:StackMode)
|
xcb:ConfigWindow:StackMode)
|
||||||
:x (aref workarea 0)
|
:x (aref workarea 0)
|
||||||
:y y
|
:y y
|
||||||
:width width
|
: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
|
(xcb:+request exwm--connection
|
||||||
(make-instance 'xcb:ConfigureWindow
|
(make-instance 'xcb:ConfigureWindow
|
||||||
:window (frame-parameter exwm-workspace--minibuffer
|
:window (frame-parameter exwm-workspace--minibuffer
|
||||||
|
@ -987,8 +995,14 @@ Please check `exwm-workspace--minibuffer-own-frame-p' first."
|
||||||
(make-instance 'xcb:ConfigureWindow
|
(make-instance 'xcb:ConfigureWindow
|
||||||
:window (frame-parameter exwm-workspace--minibuffer
|
:window (frame-parameter exwm-workspace--minibuffer
|
||||||
'exwm-container)
|
'exwm-container)
|
||||||
:value-mask xcb:ConfigWindow:StackMode
|
:value-mask (logior (if exwm-manage--desktop
|
||||||
:stack-mode xcb:StackMode:Below))
|
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))
|
(xcb:flush exwm--connection))
|
||||||
|
|
||||||
(defun exwm-workspace--on-minibuffer-setup ()
|
(defun exwm-workspace--on-minibuffer-setup ()
|
||||||
|
|
Loading…
Reference in a new issue