diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2016-07-17T12·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2016-07-17T12·00+0000 |
commit | cd1372eaec2521ea163c505b38d36b1f787d1944 (patch) | |
tree | 0381ae83e20456340d688bb08b247845d82db539 | |
parent | 983fd468dc8acb910e25178379750dec3300d35a (diff) |
Apply minibuffer in own frame configuration to created frames
* exwm-workspace.el (exwm-workspace--modify-all-x-frames-parameters): Helper function to non-destructively modify `window-system-default-frame-alist'. (exwm-workspace--init): Use above function to default all frames to the shared minibuffer when `exwm-workspace--minibuffer-own-frame-p' is true.
-rw-r--r-- | exwm-workspace.el | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el index 82c054fb92a8..b2138aa138a7 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -797,6 +797,20 @@ The optional FORCE option is for internal use only." (defvar exwm-workspace--timer nil "Timer used to track echo area changes.") +(defun exwm-workspace--modify-all-x-frames-parameters (new-x-parameters) + "Modifies `window-system-default-frame-alist' for the X Window System. +NEW-X-PARAMETERS is an alist of frame parameters, merged into current +`window-system-default-frame-alist' for the X Window System. The parameters are +applied to all subsequently created X frames." + ;; The parameters are modified in place; take current + ;; ones or insert a new X-specific list. + (let ((x-parameters (or (assq 'x window-system-default-frame-alist) + (let ((new-x-parameters '(x))) + (push new-x-parameters window-system-default-frame-alist) + new-x-parameters)))) + (setf (cdr x-parameters) + (append new-x-parameters (cdr x-parameters))))) + (defun exwm-workspace--init () "Initialize workspace module." (cl-assert (and (< 0 exwm-workspace-number) (>= 10 exwm-workspace-number))) @@ -843,6 +857,8 @@ The optional FORCE option is for internal use only." (delete-frame f))))) ;; This is the only usable minibuffer frame. (setq default-minibuffer-frame exwm-workspace--minibuffer) + (exwm-workspace--modify-all-x-frames-parameters + '((minibuffer . nil))) (let ((outer-id (string-to-number (frame-parameter exwm-workspace--minibuffer 'outer-window-id))) @@ -883,8 +899,6 @@ The optional FORCE option is for internal use only." ;; Create workspace frames. (dotimes (_ exwm-workspace-number) (push (make-frame `((window-system . x) - (minibuffer . ,(minibuffer-window - exwm-workspace--minibuffer)) (internal-border-width . 0) (client . nil))) exwm-workspace--list)) |