Add modeline customization
This commit is contained in:
parent
713ea2e4e4
commit
0a6e30bc0d
41
assets/splash.svg
Normal file
41
assets/splash.svg
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
height="250"
|
||||||
|
viewBox="0 0 82 100"
|
||||||
|
fill="none"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
sodipodi:docname="emacs-e-template.svg"
|
||||||
|
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview6"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#999999"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="3.026417"
|
||||||
|
inkscape:cx="46.424534"
|
||||||
|
inkscape:cy="86.571018"
|
||||||
|
inkscape:window-width="1486"
|
||||||
|
inkscape:window-height="1063"
|
||||||
|
inkscape:window-x="409"
|
||||||
|
inkscape:window-y="104"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg4" />
|
||||||
|
<path
|
||||||
|
d="M33.728 0C49.018 3.893 58.1 9.559 60.154 13.935c2.503 5.326-4.83 8.895-22.065 5.557-8.904-1.725-13.457-.508-14.99 1.582-6.778 9.233 16.72 25.023 27.646 31.478C-2.31 39.348-26.54 75.55 42.25 90.45c5.884 1.275 17.172 1.731 17.143 3.424-.003 1.818-29.003 1.97-44.3 2.436 10.433 2.785 35.52 4.682 51.83 3.138 15.854-1.498 22.779-6.872 2.783-11.784-10.32-2.532-50.764-10.191-46.503-18.351C29.427 57.396 56.328 60.265 72 58.638c-38.533-26.447-47.275-32.678 5.016-25.87 13.68 3.03-5.786-19.195-26.196-28.491C46.03 2.377 39.643.91 33.728 0"
|
||||||
|
fill="#a9b1d6"
|
||||||
|
stroke="none"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#e5c35b" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
153
config.org
153
config.org
|
@ -1058,40 +1058,6 @@ I don't want my cache files to get deleted whenever I mess up my Doom install, s
|
||||||
auth-source-cache-expiry nil)
|
auth-source-cache-expiry nil)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Aesthetics
|
|
||||||
|
|
||||||
#+call: confpkg("Visual")
|
|
||||||
|
|
||||||
My favorite color theme has always been Tokyo Night. I use it literally everywhere I can, and Doom Emacs is no exception.
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq doom-theme 'doom-tokyo-night)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
As for font choice, Victor Mono is my preferred coding font. I also use Source Sans Pro as my sans-serif font, though that is more out of obligation than actually liking how it looks.
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq doom-font (font-spec :family "VictorMono" :size 13)
|
|
||||||
doom-variable-pitch-font (font-spec :family "Source Sans Pro" :size 16))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
I'm a very big fan of how italics look in this font, so let's make more things italicized! While we're here, we'll also set doom's modified buffer font to be red instead of yellow (I like how it looks better).
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(custom-set-faces!
|
|
||||||
'(font-lock-comment-face :slant italic)
|
|
||||||
'(font-lock-variable-name-face :slant italic)
|
|
||||||
'(doom-modeline-buffer-modified :weight bold :inherit (doom-modeline error)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Some other small aesthetic changes:
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq nerd-icons-scale-factor 1.1 ; Make icons slightly larger
|
|
||||||
doom-modeline-height 24 ; Make Doom's modeline taller
|
|
||||||
display-line-numbers-type t) ; Line numbers (absolute)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Bindings
|
** Bindings
|
||||||
|
|
||||||
#+call: confpkg()
|
#+call: confpkg()
|
||||||
|
@ -1255,9 +1221,17 @@ For some reason, telling Evil to respect soft line wrapping doesn't change the b
|
||||||
(evil-line-move (- (or count 1))))))
|
(evil-line-move (- (or count 1))))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
**** Modeline
|
||||||
|
|
||||||
|
The =visual-fill-column= package works by expanding the window's right margin. This causes the right edge of the modeline to follow the margin as well, which looks a bit strange. As a hacky fix, I've found that configuring the the modeline to align itself to the right fringe instead of the right window edge seems to fix the issue.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq mode-line-right-align-edge 'right-fringe)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
**** Line Numbers
|
**** Line Numbers
|
||||||
|
|
||||||
When a buffer has line numbers, they can interfere with the margins and make them smaller than they need to be. We can mitigate this issue by adding extra columns to the window.
|
When a buffer has line numbers, they can interfere with the margins and make the line smaller than it should be. We can mitigate this issue by adding extra columns to the window.
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(add-hook! display-line-numbers-mode
|
(add-hook! display-line-numbers-mode
|
||||||
|
@ -1322,6 +1296,115 @@ If IMPURE is t, then allow impure builds."
|
||||||
path))
|
path))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Aesthetics
|
||||||
|
|
||||||
|
#+call: confpkg("Visual")
|
||||||
|
|
||||||
|
If you're going to be staring at your screen for hours a day, you might as well make the thing you're staring at look nice.
|
||||||
|
|
||||||
|
** Theme
|
||||||
|
|
||||||
|
My favorite color theme has always been Tokyo Night. I use it literally everywhere I can, and Doom Emacs is no exception.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq doom-theme 'doom-tokyo-night)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Fonts
|
||||||
|
|
||||||
|
Victor Mono is my preferred coding font. I also use Source Sans Pro as my sans-serif font, though that is more out of obligation than actually liking how it looks.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq doom-font (font-spec :family "VictorMono" :size 13)
|
||||||
|
doom-variable-pitch-font (font-spec :family "Source Sans Pro" :size 16))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
I'm a very big fan of how italics look in this font, so let's make more things italicized! While we're here, we'll also set doom's modified buffer font to be red instead of yellow (I like how it looks better).
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(custom-set-faces!
|
||||||
|
'(font-lock-comment-face :slant italic)
|
||||||
|
'(font-lock-variable-name-face :slant italic)
|
||||||
|
'(doom-modeline-buffer-modified :weight bold :inherit (doom-modeline error)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Some other small aesthetic changes:
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq nerd-icons-scale-factor 1.1 ; Make icons slightly larger
|
||||||
|
doom-modeline-height 24 ; Make Doom's modeline taller
|
||||||
|
display-line-numbers-type t) ; Line numbers (absolute)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Dashboard
|
||||||
|
|
||||||
|
#+call: confpkg("Dashboard")
|
||||||
|
|
||||||
|
There's a lot of reasons why I don't like Spacemacs and why I left it for Doom Emacs (mainly the fact that it's slow and often opaque to the user), but there's one thing that Spacemacs undoubtedly has Doom beat in:
|
||||||
|
|
||||||
|
[[https://user-images.githubusercontent.com/33982951/39624821-a4abccee-4f92-11e8-9e91-3d5b542bbb85.png][Spacemacs's dashboard has /impeccable/ style.]]
|
||||||
|
|
||||||
|
Doom Emacs tends to favor practicality over aesthetics with a focus on minimalism, and its dashboard is no exception. If we're want something that looks visually appealing, we're going to need a serious overhaul.
|
||||||
|
|
||||||
|
*** Splash Banner
|
||||||
|
|
||||||
|
The Doom dashboard allows the use of an image for its banner, which supports any image type Emacs can display, including SVG. I have procured an SVG image to use for my dashboard, the classic Emacs E:
|
||||||
|
|
||||||
|
#+attr_html: :width 150px
|
||||||
|
[[file:assets/splash.svg]]
|
||||||
|
|
||||||
|
The obvious choice for the fill color of the image would have been purple, the standard highlight color of my theme, but I wanted the banner to pop out a bit more.
|
||||||
|
|
||||||
|
The image can be set like thus:
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq fancy-splash-image
|
||||||
|
(expand-file-name "assets/splash.svg" doom-private-dir))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Title
|
||||||
|
|
||||||
|
Since our banner no longer includes a title, we should add one after the splash image. This title format is inspired by Spacemacs!
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defface doom-dashboard-title
|
||||||
|
'((t (:weight bold :inherit warning)))
|
||||||
|
"Face used for the Doom Emacs title on the dashboard."
|
||||||
|
:group 'doom-dashboard)
|
||||||
|
|
||||||
|
(setq +doom-dashboard-banner-padding '(0 . 3))
|
||||||
|
(defvar +doom-dashboard-title-padding 3)
|
||||||
|
|
||||||
|
(defun doom-dashboard-widget-title ()
|
||||||
|
(when (display-graphic-p)
|
||||||
|
(insert (propertize
|
||||||
|
(+doom-dashboard--center
|
||||||
|
+doom-dashboard--width
|
||||||
|
"[D O O M E M A C S]")
|
||||||
|
'face 'doom-dashboard-title)
|
||||||
|
(make-string +doom-dashboard-title-padding ?\n))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
To add the title to the dashboard, we create a new widget that inserts the title string with some padding. We only do this on graphical displays, as non-graphical ones fall back on the default ASCII banner, which includes a title.
|
||||||
|
|
||||||
|
*** Other Tweaks
|
||||||
|
|
||||||
|
We'll put our title widget into the ~+doom-dashboard-functions~ hook, and while we're at it we'll also get rid of the footer widget, which I don't see much use for.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq +doom-dashboard-functions
|
||||||
|
'(doom-dashboard-widget-banner
|
||||||
|
doom-dashboard-widget-title
|
||||||
|
doom-dashboard-widget-shortmenu
|
||||||
|
doom-dashboard-widget-loaded))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We should also declutter some other aspects of the dashboard. Since the dashboard has load information built into it, I don't see much purpose in printing it to the minibuffer on startup.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(remove-hook 'doom-after-init-hook #'doom-display-benchmark-h)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Packages
|
* Packages
|
||||||
|
|
||||||
Now that we've enabled our preferred modules and done some basic configuration, we can install and configure our packages.
|
Now that we've enabled our preferred modules and done some basic configuration, we can install and configure our packages.
|
||||||
|
|
Loading…
Reference in a new issue