branch: externals/exwm
commit 3b861e2d030b1bf87e745decfca9b5f4f36179e0
Author: Steven Allen <[email protected]>
Commit: Steven Allen <[email protected]>

    exwm-workspace: only remove the internal border when not configured
    
    Since 0863f41490, EXWM has always removed the internal border from
    workspace frames. However, this is something that (IMO) should be left
    up to the user. In my case, EXWM clobbers the boarders set by
    spacious-padding-mode.
    
    * exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Set the
    internal border width to 0 explicitly, if not otherwise set. This will
    override any port/toolkit specific settings, but won't override user
    settings.
    (exwm-workspace--init): Don't modify the frame defaults, do update the
    internal border but only for frames that don't already have an explicit
    user setting.
    (exwm-workspace--exit): Remove dead code.
---
 exwm-workspace.el | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/exwm-workspace.el b/exwm-workspace.el
index 2f69e94547..1389fd60c9 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -1303,6 +1303,9 @@ ALIST is an action alist, as accepted by function 
`display-buffer'."
         (window-id (string-to-number (frame-parameter frame 'window-id)))
         (container (xcb:generate-id exwm--connection))
         frame-colormap frame-visual frame-depth)
+    ;; Remove the internal frame border unless the user explicitly set one.
+    (unless (frame-parameter frame 'internal-border-width)
+      (set-frame-parameter frame 'internal-border-width 0))
     ;; Save window IDs
     (set-frame-parameter frame 'exwm-outer-id outer-id)
     (set-frame-parameter frame 'exwm-id window-id)
@@ -1662,8 +1665,6 @@ applied to all subsequently created X frames."
   (exwm-workspace--update-switch-by-name-map)
   ;; Prevent unexpected exit
   (setq exwm-workspace--fullscreen-frame-count 0)
-  (exwm-workspace--modify-all-x-frames-parameters
-   '((internal-border-width . 0)))
   (let ((initial-workspaces (frame-list)))
     (if (not (exwm-workspace--minibuffer-own-frame-p))
         ;; Initialize workspaces with minibuffers.
@@ -1673,8 +1674,9 @@ applied to all subsequently created X frames."
             (unless (frame-parameter i 'window-id)
               (setq initial-workspaces (delq i initial-workspaces))))
           (let ((f (car initial-workspaces)))
-            ;; Remove the possible internal border.
-            (set-frame-parameter f 'internal-border-width 0)))
+            ;; Remove the internal border, unless explicitly set by the user.
+            (unless (frame-parameter f 'internal-border-width)
+              (set-frame-parameter f 'internal-border-width 0))))
       (exwm-workspace--init-minibuffer-frame)
       ;; Remove/hide existing frames.
       (dolist (f initial-workspaces)
@@ -1741,7 +1743,6 @@ applied to all subsequently created X frames."
                                      (exwm-outer-id . nil)
                                      (exwm-id . nil)
                                      (exwm-container . nil)
-                                     ;; (internal-border-width . nil) ; 
integerp
                                      (fullscreen . nil)
                                      (buffer-predicate . nil))))))
   ;; Don't let dead frames linger.

Reply via email to