diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2015-09-23T04·53+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2015-09-23T04·53+0800 |
commit | 22ee3e6c5ffdc73f231e7125f48827dc1d44237f (patch) | |
tree | e4611a02309ad0c61a6e23cf202e69b8c4b4ede6 /exwm-workspace.el | |
parent | 623db8b378949b0dd863bd8ee069417973b69bad (diff) |
Adjust default prefix keys; advice x-create-frame
* exwm-input.el (exwm-input--on-KeyPress-line-mode, exwm-input-prefix-keys): Allow users to disable 'C-c' prefixed keys; Add 'C-c' to / remove 'M-!' from the default prefix keys. * exwm-workspace.el (exwm-workspace--x-create-frame, exwm-workspace--init): Advice `x-create-frame' to prevent it from hanging EXWM, making e.g. speedbar working. * exwm-floating.el (exwm-floating--set-floating): Remove the now unnecessary request that sets override-redirect on floating frames.
Diffstat (limited to 'exwm-workspace.el')
-rw-r--r-- | exwm-workspace.el | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el index 03972b407849..566ea539b641 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -263,6 +263,18 @@ The optional FORCE option is for internal use only." (setq newname (format "%s<%d>" basename (cl-incf counter)))) (rename-buffer (concat (and hidden " ") newname)))) +(defun exwm-workspace--x-create-frame (orig-fun params) + "Set override-redirect on the frame created by `x-create-frame'." + (let ((frame (funcall orig-fun params))) + (xcb:+request exwm--connection + (make-instance 'xcb:ChangeWindowAttributes + :window (string-to-number + (frame-parameter frame 'outer-window-id)) + :value-mask xcb:CW:OverrideRedirect + :override-redirect 1)) + (xcb:flush exwm--connection) + frame)) + (defun exwm-workspace--init () "Initialize workspace module." (cl-assert (and (< 0 exwm-workspace-number) (>= 10 exwm-workspace-number))) @@ -306,6 +318,8 @@ The optional FORCE option is for internal use only." :window window-id :value-mask xcb:CW:EventMask :event-mask xcb:EventMask:SubstructureRedirect)))) (xcb:flush exwm--connection) + ;; We have to advice `x-create-frame' or every call to it would hang EXWM + (advice-add 'x-create-frame :around #'exwm-workspace--x-create-frame) ;; We have to delay making the frame visible until the ;; override-redirect flag has been set. (select-frame-set-input-focus (car exwm-workspace--list)) |