Doom’s splash screen is the first thing you see. Do you want to change the banner? Add to the menu? Perhaps make your own radical customizations?
Add/remove sections of the dashboard
The +doom-dashboard-functions
variable contains a list of functions to be executed in sequence when populating the dashboard buffer. It can be manipulated to add or remove sections of the dashboard. For example, to remove the menu:
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
Or to add your own custom footer:
(add-hook! '+doom-dashboard-functions :append
(insert "\n" (+doom-dashboard--center +doom-dashboard--width "Powered by Emacs!")))
Customize the ASCII banner
To replace the ASCII banner with an image, see “Use an image banner” below.
To replace it with your own ASCII art, set +doom-dashboard-ascii-banner-fn
to a function that inserts your new art line-by-line into the buffer. For example:
(defun my-weebery-is-always-greater ()
(let* ((banner '("⢸⣿⣿⣿⣿⠃⠄⢀⣴⡾⠃⠄⠄⠄⠄⠄⠈⠺⠟⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⣶⣤⡀⠄"
"⢸⣿⣿⣿⡟⢀⣴⣿⡿⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣿⣷"
"⢸⣿⣿⠟⣴⣿⡿⡟⡼⢹⣷⢲⡶⣖⣾⣶⢄⠄⠄⠄⠄⠄⢀⣼⣿⢿⣿⣿⣿⣿⣿⣿⣿"
"⢸⣿⢫⣾⣿⡟⣾⡸⢠⡿⢳⡿⠍⣼⣿⢏⣿⣷⢄⡀⠄⢠⣾⢻⣿⣸⣿⣿⣿⣿⣿⣿⣿"
"⡿⣡⣿⣿⡟⡼⡁⠁⣰⠂⡾⠉⢨⣿⠃⣿⡿⠍⣾⣟⢤⣿⢇⣿⢇⣿⣿⢿⣿⣿⣿⣿⣿"
"⣱⣿⣿⡟⡐⣰⣧⡷⣿⣴⣧⣤⣼⣯⢸⡿⠁⣰⠟⢀⣼⠏⣲⠏⢸⣿⡟⣿⣿⣿⣿⣿⣿"
"⣿⣿⡟⠁⠄⠟⣁⠄⢡⣿⣿⣿⣿⣿⣿⣦⣼⢟⢀⡼⠃⡹⠃⡀⢸⡿⢸⣿⣿⣿⣿⣿⡟"
"⣿⣿⠃⠄⢀⣾⠋⠓⢰⣿⣿⣿⣿⣿⣿⠿⣿⣿⣾⣅⢔⣕⡇⡇⡼⢁⣿⣿⣿⣿⣿⣿⢣"
"⣿⡟⠄⠄⣾⣇⠷⣢⣿⣿⣿⣿⣿⣿⣿⣭⣀⡈⠙⢿⣿⣿⡇⡧⢁⣾⣿⣿⣿⣿⣿⢏⣾"
"⣿⡇⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢻⠇⠄⠄⢿⣿⡇⢡⣾⣿⣿⣿⣿⣿⣏⣼⣿"
"⣿⣷⢰⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣧⣀⡄⢀⠘⡿⣰⣿⣿⣿⣿⣿⣿⠟⣼⣿⣿"
"⢹⣿⢸⣿⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣶⣭⣉⣤⣿⢈⣼⣿⣿⣿⣿⣿⣿⠏⣾⣹⣿⣿"
"⢸⠇⡜⣿⡟⠄⠄⠄⠈⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟⣱⣻⣿⣿⣿⣿⣿⠟⠁⢳⠃⣿⣿⣿"
"⠄⣰⡗⠹⣿⣄⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⠟⣅⣥⣿⣿⣿⣿⠿⠋⠄⠄⣾⡌⢠⣿⡿⠃"
"⠜⠋⢠⣷⢻⣿⣿⣶⣾⣿⣿⣿⣿⠿⣛⣥⣾⣿⠿⠟⠛⠉⠄⠄ "))
(longest-line (apply #'max (mapcar #'length banner))))
(put-text-property
(point)
(dolist (line banner (point))
(insert (+doom-dashboard--center
+doom-dashboard--width
(concat line (make-string (max 0 (- longest-line (length line))) 32)))
"\n"))
'face 'doom-dashboard-banner)))
(setq +doom-dashboard-ascii-banner-fn #'my-weebery-is-always-greater)
Use an image banner
Change fancy-splash-image
to the path of the image:
(setq fancy-splash-image (concat doom-private-dir "splash.png"))
Doom doesn’t preform any image resizing. They must be resized in an image editor outside of Emacs.
Change menu items
The dashboard’s menu is generated from the entries in +doom-dashboard-menu-sections
. To quote its documentation:
An alist of menu buttons used by `doom-dashboard-widget-shortmenu’. Each element is a cons cell (LABEL . PLIST). LABEL is a string to display after the icon and before the key string.
PLIST can have the following properties:
:icon FORM Uses the return value of FORM as an icon (can be literal string). :key STRING The keybind displayed next to the button. :when FORM If FORM returns nil, don't display this button. :face FACE Displays the icon and text with FACE (a face symbol). :action FORM Run FORM when the button is pushed.
For example:
-
To add a button to the top of the menu:
(add-to-list '+doom-dashboard-menu-sections '("Add journal entry" :icon (all-the-icons-octicon "calendar" :face 'doom-dashboard-menu-title) :when (featurep! :lang org +journal) :face (:inherit (doom-dashboard-menu-title bold)) :action org-journal-new-entry))
-
To remove a button:
(assoc-delete-all "Open project" +doom-dashboard-menu-sections)
-
To change a button’s icon:
(plist-put (alist-get "Open private configuration" +doom-dashboard-menu-sections nil nil 'equal) :icon (all-the-icons-octicon "book" :face 'doom-dashboard-menu-title))
Common issues
- Careful that you don’t eagerly load
org
, as this will add seconds to your startup time. - The ASCII banner is always displayed in terminal Emacs, where images aren’t supported. You’ll need to replace
doom-dashboard-widget-banner
in+doom-dashboard-functions
to change this behavior, or the ASCII banner.