实现类似 nano-theme 的窗口间隔效果

(let ((modes
       '(blink-cursor-mode
         tooltip-mode
         tool-bar-mode
         menu-bar-mode
         scroll-bar-mode)))
  (dolist (mode modes)
    (when (fboundp mode)
      (funcall mode -1))))

(setq-default cursor-in-non-selected-windows nil)

(setq frame-title-format nil
      default-frame-alist
      '((left-fringe . 0)
        (right-fringe . 0)
        (internal-border-width . 24)))

(setq window-divider-default-right-width 24)
(window-divider-mode 1)

(defun +nanolize (&rest args)
  (interactive)
  (let* ((background
          (plist-get (custom-face-attributes-get 'default nil)
                     :background))
         (mode-line
          (plist-get (custom-face-attributes-get 'mode-line nil)
                     :background))
         (mode-line-active
          (or (plist-get (custom-face-attributes-get 'mode-line-active nil)
                         :background)
              mode-line))
         (mode-line-inactive
          (or (plist-get (custom-face-attributes-get 'mode-line-inactive nil)
                         :background)
              mode-line)))
    (dolist (face '(window-divider
                    window-divider-first-pixel
                    window-divider-last-pixel))
      (set-face-attribute face nil :foreground background))
    (set-face-attribute 'mode-line-active nil
                        :box `(:line-width 6 :color ,mode-line-active :style nil))
    (set-face-attribute 'mode-line-inactive nil
                        :box `(:line-width 6 :color ,mode-line-inactive :style nil))))

(+nanolize)
(advice-add 'enable-theme :after '+nanolize)

nano-theme 的窗口间隔效果是通过 internal-border-width 和 window-divider-mode 实现的,我糊了一个函数在切换主题时设置窗口间隔和 mode-line 边框的颜色。放几张截图:

2 个赞

prot 的spacious-padding 和这差不多:

2 个赞