     (add-hook 'after-make-frame-functions #'+doom-dashboard-deferred-reload)
     (add-hook 'window-configuration-change-hook #'+doom-dashboard-reload)
     (add-hook 'kill-buffer-query-functions #'+doom-dashboard|kill-buffer-query-fn)
-    (+doom-dashboard-reload)
-    (when (equal (buffer-name) "*scratch*")
-      (switch-to-buffer (doom-fallback-buffer)))))
+    (unless (daemonp)
+      (+doom-dashboard/open t))))
 
 (add-hook 'doom-post-init-hook #'+doom-dashboard|init)
 

    (and (buffer-live-p buffer)
         (eq buffer (doom-fallback-buffer)))))

(defun +doom-dashboard-deferred-reload (&rest _)
  "Reload the dashboard after a brief pause. This is necessary for new frames,
whose dimensions may not be fully initialized by the time this is run."
  (run-with-timer 0.1 nil #'+doom-dashboard-reload))

(defun +doom-dashboard-reload (&optional dir)
  "Update the DOOM scratch buffer (or create it, if it doesn't exist)."
  (when (and (not +doom-dashboard-inhibit-refresh)
             (not (minibuffer-window-active-p (minibuffer-window)))
             (get-buffer-window-list (doom-fallback-buffer) nil t))
    (unless +doom-dashboard-modeline
      (setq +doom-dashboard--old-modeline mode-line-format)
      (setq +doom-dashboard-modeline

  (push +doom-dashboard-name clean-buffer-list-kill-never-buffer-names)
  (push "^\\s-*\\*doom.+" clean-buffer-list-kill-never-regexps))

;;
(defun +doom-dashboard/open (&optional startup)
  "Open the dashboard buffer."
  (interactive)
  (when (or (not startup)
            (one-window-p t)
            (eq (buffer-name (window-buffer (car (window-list)))) "*scratch*"))
    (+doom-dashboard-reload)
    (switch-to-buffer (doom-fallback-buffer))))

(defun +doom-dashboard-p (&optional buffer)
  "Returns t if BUFFER is the dashboard buffer."
