小技巧:防止启动白屏晃眼 (prevent initial flash of light)

如果将 theme 相关逻辑放到 init.el,Emacs 启动时会闪一下白色背景,半夜十分晃眼睛。其实解决起来很简单:

  1. 将 theme 相关逻辑放到 early-init.el,但此时 package 并未初始化,如果你想使用包里的主题或 根据时间切换 emacs theme 的包
  2. emacs -bg black 但是每次启动要加参数麻烦
  3. 等同于在 early-init.el 中 (emacs27+)
(add-to-list 'default-frame-alist '(background-color . "black"))

但白色主题就会闪一下黑屏。

  1. 所以可以加个时间判断(我个人用的这个)
(let ((hour-now (string-to-number (format-time-string "%H"))))
  (if (>= hour-now 20)
      (add-to-list 'default-frame-alist '(background-color . "black"))))

需要注意的是,early-init.el 阶段 (display-graphic-p) 为 nil,不能也没有必要用它判断是否为 GUI。

  1. pif.el 会将上一次使用的主题背景保存

希望对大家的眼睛有些帮助

9 个赞

没见过启动时的 白屏 的问题。

能详细说一下你的 theme 相关的配置吗,学习一下

(也可能是你的机器太快了)

我也有这种情况,比如我在 Mac 下用 Doom,可能 GUI 的 frame 已经出来了,但是各种包(比如 Doom 的 theme 和 dashboard)还没加载完毕,此时 GUI 里面就是一片空白。

early-init.el 中加进去上面这个代码,这个启动阶段的“空白”就变成黑色了,确实有用!