From 5184f0d7c1b540a6241904528d068dce288a911e Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Sun, 27 Sep 2015 19:31:00 +0800 Subject: Work around subrs that block EXWM; other minor fixes Some subrs (e.g. x-file-dialog) create X windows and block the execution of EXWM, so they won't work normally. This commit partly fixes this issue by invoking them in a subordinate Emacs instance and trying to fetch the result back. * exwm.el (exwm-blocking-subrs): New variable for specify such subrs. * exwm.el (exwm-enable, exwm--server-name, exwm--server-stop) (exwm--server-eval-at): The implementation. * exwm-core.el: * exwm-floating.el: * exwm-layout.el: * exwm-manage.el: * exwm-randr.el: Evaluate constants at compile-time. * README.md: Renamed from README.org to make the 'Commentary:' section used by GNU ELPA instead. * exwm.el: Depends on XELB version 0.3. --- exwm-layout.el | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'exwm-layout.el') diff --git a/exwm-layout.el b/exwm-layout.el index 4ccaef74500e..1d11dbcdca07 100644 --- a/exwm-layout.el +++ b/exwm-layout.el @@ -56,11 +56,12 @@ (xcb:+request exwm--connection (make-instance 'xcb:ConfigureWindow :window id - :value-mask (logior xcb:ConfigWindow:X - xcb:ConfigWindow:Y - xcb:ConfigWindow:Width - xcb:ConfigWindow:Height - xcb:ConfigWindow:StackMode) + :value-mask (eval-when-compile + (logior xcb:ConfigWindow:X + xcb:ConfigWindow:Y + xcb:ConfigWindow:Width + xcb:ConfigWindow:Height + xcb:ConfigWindow:StackMode)) :x x :y y :width width :height height ;; In order to put non-floating window at bottom :stack-mode xcb:StackMode:Below)) @@ -122,10 +123,11 @@ (xcb:+request exwm--connection (make-instance 'xcb:ConfigureWindow :window outer-id - :value-mask (logior xcb:ConfigWindow:X - xcb:ConfigWindow:Y - xcb:ConfigWindow:Width - xcb:ConfigWindow:Height) + :value-mask (eval-when-compile + (logior xcb:ConfigWindow:X + xcb:ConfigWindow:Y + xcb:ConfigWindow:Width + xcb:ConfigWindow:Height)) :x 0 :y 0 :width (frame-pixel-width exwm-workspace--current) :height (frame-pixel-height @@ -134,10 +136,11 @@ (xcb:+request exwm--connection (make-instance 'xcb:ConfigureWindow :window exwm--id - :value-mask (logior xcb:ConfigWindow:X - xcb:ConfigWindow:Y - xcb:ConfigWindow:Width - xcb:ConfigWindow:Height) + :value-mask (eval-when-compile + (logior xcb:ConfigWindow:X + xcb:ConfigWindow:Y + xcb:ConfigWindow:Width + xcb:ConfigWindow:Height)) :x 0 :y 0 :width (frame-pixel-width exwm-workspace--current) :height (frame-pixel-height exwm-workspace--current))) @@ -161,10 +164,11 @@ (make-instance 'xcb:ConfigureWindow :window (frame-parameter exwm--floating-frame 'exwm-outer-id) - :value-mask (logior xcb:ConfigWindow:X - xcb:ConfigWindow:Y - xcb:ConfigWindow:Width - xcb:ConfigWindow:Height) + :value-mask (eval-when-compile + (logior xcb:ConfigWindow:X + xcb:ConfigWindow:Y + xcb:ConfigWindow:Width + xcb:ConfigWindow:Height)) :x (elt exwm--floating-frame-geometry 0) :y (elt exwm--floating-frame-geometry 1) :width (elt exwm--floating-frame-geometry 2) @@ -194,10 +198,11 @@ (xcb:+request exwm--connection (make-instance 'xcb:ConfigureWindow :window id - :value-mask (logior xcb:ConfigWindow:X - xcb:ConfigWindow:Y - xcb:ConfigWindow:Width - xcb:ConfigWindow:Height) + :value-mask (eval-when-compile + (logior xcb:ConfigWindow:X + xcb:ConfigWindow:Y + xcb:ConfigWindow:Width + xcb:ConfigWindow:Height)) :x x :y y :width width :height height)) -- cgit 1.4.1