[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm bc80eef: Fix multi-monitor/fullscreen issues
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm bc80eef: Fix multi-monitor/fullscreen issues |
Date: |
Sat, 06 Feb 2016 08:50:08 +0000 |
branch: externals/exwm
commit bc80eefe3ff015f645b5ca2ff4a8838a48a72b96
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Fix multi-monitor/fullscreen issues
* exwm-randr.el (exwm-randr--refresh): Correct the _NET_WORKAREA property.
Reconfigure the current workspace when screen changes.
(exwm-randr--init): Run `exwm-randr-screen-change-hook' to take into
account already attached monitor(s),
* exwm.el (exwm--on-ClientMessage): Reconfigure the current workspace when
it's fullscreen.
---
exwm-randr.el | 17 ++++++++++++++---
exwm.el | 4 +++-
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/exwm-randr.el b/exwm-randr.el
index 3ed64ed..566f4ee 100644
--- a/exwm-randr.el
+++ b/exwm-randr.el
@@ -55,7 +55,8 @@
(defun exwm-randr--refresh ()
"Refresh workspaces according to the updated RandR info."
- (let (output-name geometry output-plist default-geometry workareas viewports)
+ (let (output-name geometry output-plist default-geometry workareas
+ workarea-offset viewports)
;; Query all outputs
(with-slots (config-timestamp outputs)
(xcb:+request-unchecked+reply exwm--connection
@@ -84,6 +85,10 @@
(unless default-geometry ;assume the first output as primary
(setq default-geometry geometry)))))))
(cl-assert (<= 2 (length output-plist)))
+ (exwm--log "(randr) outputs: %s" output-plist)
+ (setq workarea-offset (if exwm-workspace-minibuffer-position
+ 0
+ (window-pixel-height (minibuffer-window))))
(dotimes (i exwm-workspace-number)
(let* ((output (plist-get exwm-randr-workspace-output-plist i))
(geometry (lax-plist-get output-plist output))
@@ -98,7 +103,9 @@
(frame-parameter frame
'exwm-workspace)
x y width height)
- (setq workareas (nconc workareas (list x y width height))
+ (setq workareas
+ (nconc workareas (list x y width (- height
+ workarea-offset)))
viewports (nconc viewports (list x y))))))
;; Update _NET_WORKAREA
(xcb:+request exwm--connection
@@ -109,7 +116,9 @@
(make-instance 'xcb:ewmh:set-_NET_DESKTOP_VIEWPORT
:window exwm--root
:data (vconcat viewports)))
- (xcb:flush exwm--connection)))
+ (xcb:flush exwm--connection))
+ ;; Force update workspace settings.
+ (exwm-workspace-switch exwm-workspace-current-index t))
(defvar exwm-randr-screen-change-hook nil
"Normal hook run when screen changes.")
@@ -126,6 +135,8 @@
(if (or (/= major-version 1) (< minor-version 2))
(error "[EXWM] The server only support RandR version up to %d.%d"
major-version minor-version)
+ ;; External monitor(s) may already be connected.
+ (run-hooks 'exwm-randr-screen-change-hook)
(exwm-randr--refresh)
(xcb:+event exwm--connection 'xcb:randr:ScreenChangeNotify
(lambda (_data _synthetic)
diff --git a/exwm.el b/exwm.el
index 720274f..4335c81 100644
--- a/exwm.el
+++ b/exwm.el
@@ -341,7 +341,9 @@
:window id
:data (vector
xcb:Atom:_NET_WM_STATE_FULLSCREEN)))
- (xcb:flush exwm--connection))))
+ (xcb:flush exwm--connection)))
+ ;; Force update workspace settings.
+ (exwm-workspace-switch exwm-workspace-current-index t))
(when buffer ;ensure it's managed
(with-current-buffer buffer
;; _NET_WM_STATE_MODAL
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/exwm bc80eef: Fix multi-monitor/fullscreen issues,
Chris Feng <=