summaryrefslogtreecommitdiff
path: root/doom/.config
diff options
context:
space:
mode:
Diffstat (limited to 'doom/.config')
-rw-r--r--doom/.config/doom/+colemak.el5
-rw-r--r--doom/.config/doom/+dashboard.el13
-rw-r--r--doom/.config/doom/+email.el29
-rw-r--r--doom/.config/doom/+emms.el41
-rw-r--r--doom/.config/doom/+eww.el66
-rw-r--r--doom/.config/doom/+format.el17
-rw-r--r--doom/.config/doom/+git.el1
-rw-r--r--doom/.config/doom/+indent.el4
-rw-r--r--doom/.config/doom/+jabber.el5
-rw-r--r--doom/.config/doom/+lsp.el3
-rw-r--r--doom/.config/doom/+maps.el5
-rw-r--r--doom/.config/doom/+mosey.el10
-rw-r--r--doom/.config/doom/+org.el104
-rw-r--r--doom/.config/doom/+splash.el58
-rw-r--r--doom/.config/doom/+ui.el36
-rw-r--r--doom/.config/doom/+zk.el19
-rw-r--r--doom/.config/doom/config.el8
-rw-r--r--doom/.config/doom/custom.el20
-rw-r--r--doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.pngbin0 -> 166487 bytes
-rw-r--r--doom/.config/doom/extra-themes/evergarden-common.el338
-rw-r--r--doom/.config/doom/extra-themes/evergarden-fall-theme.el187
-rw-r--r--doom/.config/doom/extra-themes/evergarden-spring-theme.el187
-rw-r--r--doom/.config/doom/extra-themes/evergarden-summer-theme.el187
-rw-r--r--doom/.config/doom/extra-themes/evergarden-theme.el445
-rw-r--r--doom/.config/doom/extra-themes/evergarden-winter-theme.el187
-rw-r--r--doom/.config/doom/extra-themes/evergarden.el45
-rw-r--r--doom/.config/doom/init.el18
-rw-r--r--doom/.config/doom/packages.el15
28 files changed, 1921 insertions, 132 deletions
diff --git a/doom/.config/doom/+colemak.el b/doom/.config/doom/+colemak.el
index 31df83d..132fa8b 100644
--- a/doom/.config/doom/+colemak.el
+++ b/doom/.config/doom/+colemak.el
@@ -1,7 +1,10 @@
;;; $DOOMDIR/+colemak.el -*- lexical-binding: t; -*-
(remove-hook 'doom-first-input-hook #'evil-snipe-mode)
-
+(evil-set-initial-state 'gnus-browse-mode 'emacs)
+(after! evil-org
+ (evil-define-key 'normal evil-org-mode-map
+ "o" #'evil-forward-char))
(evil-define-key '(normal visual operator) 'global
"n" 'evil-backward-char
"e" 'evil-next-line
diff --git a/doom/.config/doom/+dashboard.el b/doom/.config/doom/+dashboard.el
index 5962679..a751684 100644
--- a/doom/.config/doom/+dashboard.el
+++ b/doom/.config/doom/+dashboard.el
@@ -5,7 +5,18 @@
"Welcome to Emacs"
"M-x M-x"
"nnngh *humps* get pregnant!!!"
- "tetris, a therapist, web browser, music player... oh and a text editor if youre into that."))
+ "tetris, a therapist, web browser, music player... oh and a text editor if youre into that."
+ "wranglin' emacs"
+ "wranglin' gnu"
+ "teco? i hardly know 'er"
+ "teco? thats a bad joke"
+ "you can do that in emacs"
+ "pig destroyer"
+ "billions will abudabi"
+ "billions will die"
+ "evil is cringe - dustmite"
+ "free as in freedom"
+ "i extract carbon packets out of sun foam"))
(defun my/dashboard-random-message ()
(nth (random (length dashboard-messages))
dashboard-messages))
diff --git a/doom/.config/doom/+email.el b/doom/.config/doom/+email.el
index ade568c..df06bea 100644
--- a/doom/.config/doom/+email.el
+++ b/doom/.config/doom/+email.el
@@ -1,22 +1,21 @@
;;; $DOOMDIR/+email.el -*- lexical-binding: t; -*-
(setq auth-sources '("~/.authinfo.gpg")
auth-source-cache-expiry nil)
-
+(setq gnus-permanently-visible-groups ".")
(setq gnus-select-method
- '(nnimap "disroot"
- (nnimap-address "disroot.org")
+ '(nnimap "migadu"
+ (nnimap-address "imap.migadu.com")
(nnimap-server-port 993)
(nnimap-stream ssl)))
-
-(setq smtpmail-smtp-server "disroot.org"
- smtpmail-smtp-service 587
- smtpmail-stream-type 'starttls
+(setq smtpmail-smtp-server "smtp.migadu.com"
+ smtpmail-smtp-service 465
+ smtpmail-stream-type 'ssl
message-send-mail-function #'smtpmail-send-it)
-(setq user-mail-address "roughlynamed@disroot.org"
+(setq user-mail-address "hi@roughlynamed.net"
user-full-name "Magdalena Szweda")
-(setq gnus-message-archive-method '(nnimap "disroot")
+(setq gnus-message-archive-method '(nnimap "migadu")
gnus-message-archive-group "Sent")
(setq gnus-large-newsgroup nil
@@ -27,8 +26,12 @@
'("3258B28C124AB0891D6C9E929B72909EEF00CBD0")
mml-secure-openpgp-sign-with-sender t)
-(add-hook 'message-setup-hook #'message-insert-signature)
(add-hook 'message-send-hook #'mml-secure-message-sign-pgpmime)
-
-(setq message-signature
- "\n--\nMagdalena Szweda\nhttps://roughlynamed.net\nPGP: 3258 B28C 124A B089 1D6C 9E92 9B72 909E EF00 CBD0")
+(with-eval-after-load "mm-decode"
+ (add-to-list 'mm-discouraged-alternatives "text/html")
+ (add-to-list 'mm-discouraged-alternatives "text/richtext"))
+(setq message-signature-file "~/.signature")
+(map! :map message-mode-map
+ :localleader
+ "s" #'message-send-and-exit
+ "S" #'message-send)
diff --git a/doom/.config/doom/+emms.el b/doom/.config/doom/+emms.el
index 945982c..3b03e9e 100644
--- a/doom/.config/doom/+emms.el
+++ b/doom/.config/doom/+emms.el
@@ -1,18 +1,33 @@
;;; $DOOMDIR/+emms.el -*- lexical-binding: t; -*-
(use-package! emms
+ :commands (emms emms-browser)
+ :init
+ (map! :leader
+ (:prefix ("e" . "emms")
+ :desc "Browser" "b" #'emms-browser
+ :desc "Playlist" "m" #'emms-playlist-mode-go
+ :desc "Play/pause" "SPC" #'emms-pause
+ :desc "Next" "n" #'emms-next
+ :desc "Previous" "p" #'emms-previous
+ :desc "Stop" "s" #'emms-stop
+ :desc "Clear" "c" #'emms-playlist-clear))
:config
(require 'emms-setup)
- (require 'emms-player-mpd)
(emms-all)
- (emms-default-players)
- (emms-mpris-enable)
- (setq emms-source-file-default-directory "~/Music/")
- (setq emms-player-list
- '(emms-player-mpd)))
-
-(map!
- :leader
- :prefix "e"
- :desc "Browser" "b" #'emms-browser
- :desc "Emms" "e" #'emms
- :desc "Play playlist" "a" #'emms-play-playlist)
+ (require 'emms-player-mpd)
+ (setq emms-player-list '(emms-player-mpd)
+ emms-info-functions '(emms-info-mpd)
+ emms-player-mpd-server-name "localhost"
+ emms-player-mpd-server-port "6600"
+ emms-player-mpd-music-directory "~/Music"
+ emms-source-file-default-directory (expand-file-name "~/Music/")
+ emms-repeat-playlist t
+ emms-cache-file (concat doom-cache-dir "emms-cache"))
+ (add-hook 'emms-playlist-cleared-hook #'emms-player-mpd-clear)
+ (emms-player-mpd-connect)
+ (emms-mode-line-mode 1)
+ (emms-lyrics-toggle-display-on-minibuffer)
+ (emms-lyrics-toggle-display-on-modeline)
+ (emms-playing-time-mode 1)
+ (map! :map emms-browser-mode-map
+ :n "RET" #'emms-browser-add-tracks-and-play))
diff --git a/doom/.config/doom/+eww.el b/doom/.config/doom/+eww.el
new file mode 100644
index 0000000..7f8c97c
--- /dev/null
+++ b/doom/.config/doom/+eww.el
@@ -0,0 +1,66 @@
+;;; $DOOMDIR/+eww.el -*- lexical-binding: t; -*-
+
+(setq eww-search-prefix "https://ecosia.org/search?q=")
+(setq eww-download-directory (expand-file-name "~/Downloads/"))
+
+(defun my-browse-url-mpv (url &rest _args)
+ "Open URL in mpv."
+ (start-process "mpv" nil "mpv" url))
+
+(defun my-browse-url-pdf (url &rest _args)
+ "Fetch remote PDF and open in pdf-tools within Emacs."
+ (let ((tmp (make-temp-file "emacs-pdf-" nil ".pdf")))
+ (url-copy-file url tmp t)
+ (find-file-other-window tmp)
+ (pdf-view-mode)))
+
+(setq browse-url-handlers
+ '(("\\(youtube\\.com\\|youtu\\.be\\|vimeo\\.com\\|twitch\\.tv\\)" . my-browse-url-mpv)
+ ("\\.mp4$" . my-browse-url-mpv)
+ ("\\.pdf$" . my-browse-url-pdf)
+ ("^gemini://" . elpher-browse-url-elpher)
+ ("^gopher://" . elpher-browse-url-elpher)
+ ("." . eww-browse-url)))
+
+;; Keep your fallback setting
+(setq browse-url-secondary-browser-function 'browse-url-generic
+ browse-url-generic-program "chromium")
+
+(with-eval-after-load 'eww
+ (define-key eww-mode-map (kbd "=") #'text-scale-increase)
+ (define-key eww-mode-map (kbd "-") #'text-scale-decrease)
+ (define-key eww-mode-map (kbd "0") #'text-scale-adjust))
+
+(setq shr-width 100)
+(setq shr-max-width 120)
+(setq shr-indentation 4)
+
+(setq shr-use-fonts nil)
+(setq shr-max-image-size '(800 . 600))
+(setq shr-image-animate t)
+
+(defun my/eww-download-image-at-point ()
+ "Download image at point to `eww-download-directory'."
+ (interactive)
+ (let ((url (or (get-text-property (point) 'image-url)
+ (get-text-property (point) 'shr-url))))
+ (if (not url)
+ (message "No image at point")
+ (let* ((filename (file-name-nondirectory (url-filename (url-generic-parse-url url))))
+ (dest (expand-file-name filename eww-download-directory)))
+ (url-copy-file url dest t)
+ (message "Saved: %s" dest)))))
+
+;; Keybinds
+(with-eval-after-load 'eww
+ (define-key eww-mode-map (kbd "b") #'eww-back-url)
+ (define-key eww-mode-map (kbd "a") #'eww-add-bookmark)
+ (define-key eww-mode-map (kbd "U") #'shr-copy-url)
+ (define-key eww-mode-map (kbd "D") #'my/eww-download-image-at-point)
+ (evil-define-key 'normal eww-mode-map
+ "b" #'eww-back-url
+ "a" #'eww-add-bookmark
+ "U" #'shr-copy-url
+ "D" #'my/eww-download-image-at-point))
+
+(provide 'browser)
diff --git a/doom/.config/doom/+format.el b/doom/.config/doom/+format.el
index 93d15c1..c5bbc79 100644
--- a/doom/.config/doom/+format.el
+++ b/doom/.config/doom/+format.el
@@ -1,11 +1,10 @@
;;; $DOOMDIR/+format.el -*- lexical-binding: t; -*-
-
-(use-package! format-all
- :commands format-all-mode
- :hook (prog-mode . format-all-mode)
+(use-package! apheleia
+ :hook (prog-mode . apheleia-mode)
:config
- (add-to-list 'format-all-mode-hook 'format-all-ensure-formatter))
-(with-eval-after-load 'format-all
- (setq-default format-all-formatters
- '(("HTML" (oxfmt "--config=.oxfmtrc.json"))
- ("CSS" (oxfmt "--config=.oxfmtrc.json")))))
+ (setf (alist-get 'oxfmt apheleia-formatters)
+ '("oxfmt" "--config=.oxfmtrc.json" "--stdin-filepath" filepath))
+
+ (dolist (mode '(html-mode mhtml-mode web-mode css-mode))
+ (setf (alist-get mode apheleia-mode-alist) 'oxfmt)))
+
diff --git a/doom/.config/doom/+git.el b/doom/.config/doom/+git.el
index be9dc99..09790f0 100644
--- a/doom/.config/doom/+git.el
+++ b/doom/.config/doom/+git.el
@@ -2,6 +2,7 @@
(map!
:leader
:prefix "g m"
+ :desc "Status" "s" #'majutsu
:desc "Describe" "c" #'majutsu-describe
:desc "New" "n" #'majutsu-new
:desc "Push" "p" #'majutsu-git-push)
diff --git a/doom/.config/doom/+indent.el b/doom/.config/doom/+indent.el
new file mode 100644
index 0000000..4f55797
--- /dev/null
+++ b/doom/.config/doom/+indent.el
@@ -0,0 +1,4 @@
+;;; $DOOMDIR/+indent.el -*- lexical-binding: t; -*-
+(use-package! aggressive-indent
+ :config
+ (global-aggressive-indent-mode 1))
diff --git a/doom/.config/doom/+jabber.el b/doom/.config/doom/+jabber.el
index 3355070..23b420f 100644
--- a/doom/.config/doom/+jabber.el
+++ b/doom/.config/doom/+jabber.el
@@ -4,13 +4,14 @@
(setq jabber-account-list
'(("roughlynamed@yax.im")))
(jabber-modeline-mode 1)
- :hook (kill-emacs . jabber-disconnect))
+ :hook
+ (kill-emacs . jabber-disconnect))
(map! :leader
:prefix "j"
:desc "Connect" "c" #'jabber-connect-all
:desc "Disconnect" "q" #'jabber-disconnect
- :desc "Roster" "f" #'jabber-roster
+ :desc "Dash" "f" #'jabber-roster
:desc "Reply" "r" #'jabber-chat-reply
:desc "New chat" "n" #'jabber-chat-with
:desc "Set status" "s" #'jabber-send-presence)
diff --git a/doom/.config/doom/+lsp.el b/doom/.config/doom/+lsp.el
deleted file mode 100644
index db08c7e..0000000
--- a/doom/.config/doom/+lsp.el
+++ /dev/null
@@ -1,3 +0,0 @@
-;;; $DOOMDIR/+lsp.el -*- lexical-binding: t; -*-
-(after! eglot
- (setq eglot-autoshutdown t))
diff --git a/doom/.config/doom/+maps.el b/doom/.config/doom/+maps.el
index 34534f5..2be1d51 100644
--- a/doom/.config/doom/+maps.el
+++ b/doom/.config/doom/+maps.el
@@ -1,5 +1,8 @@
;;; $DOOMDIR/+maps.el -*- lexical-binding: t; -*-
-
+(map!
+ :leader
+ :prefix "o"
+ :desc "Woman" "w" #'helm-man-woman)
(map!
:leader
:prefix "d"
diff --git a/doom/.config/doom/+mosey.el b/doom/.config/doom/+mosey.el
new file mode 100644
index 0000000..06b7c33
--- /dev/null
+++ b/doom/.config/doom/+mosey.el
@@ -0,0 +1,10 @@
+;;; $DOOMDIR/+mosey.el -*- lexical-binding: t; -*-
+
+(use-package! mosey
+ :commands (mosey-forward mosey-backward
+ mosey-forward-bounce mosey-backward-bounce
+ mosey-forward-cycle mosey-backward-cycle))
+(map! :leader
+ (:prefix ("k" . "mosey")
+ :desc "Mosey backward" "a" #'mosey-backward-bounce
+ :desc "Mosey forward" "e" #'mosey-forward-bounce))
diff --git a/doom/.config/doom/+org.el b/doom/.config/doom/+org.el
new file mode 100644
index 0000000..fbd57db
--- /dev/null
+++ b/doom/.config/doom/+org.el
@@ -0,0 +1,104 @@
+;;; $DOOMDIR/+org.el -*- lexical-binding: t; -*-
+(setq org-directory "~/org/")
+(after! org
+ (setq
+ org-startup-indented t
+ org-pretty-entities t
+ org-hide-emphasis-markers t
+ org-capture-templates-contexts nil
+ org-confirm-babel-evaluate nil)
+ (org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((emacs-lisp . t)
+ (python . t)
+ (C . t)
+ (lisp . t))))
+
+(add-hook 'org-capture-mode-hook #'delete-other-windows)
+(add-hook 'org-capture-mode-hook
+ (lambda () (set-window-dedicated-p (selected-window) nil)))
+
+(after! org-roam
+ (setq org-roam-directory (file-truename "~/org/"))
+ (org-roam-db-autosync-mode)
+
+ (defun my/org-roam-short-id ()
+ (let ((chars "abcdefghijklmnopqrstuvwxyz0123456789"))
+ (apply #'string
+ (cl-loop repeat 4
+ collect (aref chars (random (length chars)))))))
+
+ (setq org-roam-capture-templates
+ '(("d" "default" plain
+ "* %?"
+ :if-new
+ (file+head
+ (lambda () (concat (my/org-roam-short-id) ".org"))
+ "#+TITLE: %^{title|Untitled}\n#+FILETAGS: :%^{tags}:\n\n")
+ :unnarrowed t)))
+
+ (cl-defmethod org-roam-node-file-stem ((node org-roam-node))
+ (file-name-base (org-roam-node-file node)))
+
+ (setq org-roam-node-display-template
+ (concat "${title:*} " (propertize "${file-stem}" 'face 'org-tag)))
+
+ (setq org-roam-mode-sections
+ '(org-roam-backlinks-section
+ org-roam-reflinks-section
+ org-roam-unlinked-references-section))
+
+ (defun my/org-roam-check-self-link ()
+ (when-let* ((node (org-roam-node-at-point))
+ (id (org-roam-node-id node)))
+ (save-excursion
+ (goto-char (point-min))
+ (while (re-search-forward org-link-any-re nil t)
+ (when (string-match-p (regexp-quote id) (match-string 0))
+ (message "Warning: self-link detected"))))))
+
+ (defun my/org-roam-check-dead-links ()
+ (dolist (link (org-roam-db-query
+ [:select [dest] :from links
+ :where (= source $s1)] (org-roam-id-at-point)))
+ (unless (org-roam-db-query [:select id :from nodes :where (= id $s1)] (car link))
+ (message "Error: dead link to %s" (car link)))))
+
+ (add-hook 'before-save-hook
+ (lambda ()
+ (when (org-roam-file-p)
+ (my/org-roam-check-self-link)
+ (my/org-roam-check-dead-links)))
+ nil t)
+ (map!
+ :leader
+ :prefix ("n r" . "roam")
+ :desc "Find node" "f" #'org-roam-node-find
+ :desc "Insert node" "i" #'org-roam-node-insert
+ :desc "Backlinks" "b" #'org-roam-buffer-toggle
+ :desc "Capture" "c" #'org-roam-capture
+ :desc "Graph" "g" #'org-roam-graph
+ :desc "Random node" "r" #'org-roam-node-random
+ :desc "Toggle buffer" "t" #'org-roam-buffer-toggle
+ :desc "Open link" "o" #'org-open-at-point
+ :desc "Jump back" "O" #'org-mark-ring-goto))
+(with-eval-after-load 'ox-html
+ (setq org-html-xml-declaration nil
+ org-html-doctype "html5"
+ org-html-html5-fancy t
+ org-html-head-include-default-style nil
+ org-html-postamble nil))
+(use-package! websocket :after org-roam)
+(use-package! org-roam-ui
+ :after org-roam
+ :config
+ (setq org-roam-ui-sync-theme t
+ org-roam-ui-follow t
+ org-roam-ui-update-on-save t))
+(use-package! org-appear
+ :hook (org-mode . org-appear-mode)
+ :config
+ (setq org-appear-autoemphasis t
+ org-appear-autolinks t
+ org-appear-autosubmarkers t
+ org-appear-autoentities t))
diff --git a/doom/.config/doom/+splash.el b/doom/.config/doom/+splash.el
new file mode 100644
index 0000000..e76098e
--- /dev/null
+++ b/doom/.config/doom/+splash.el
@@ -0,0 +1,58 @@
+;;; $DOOMDIR/+splash.el -*- lexical-binding: t; -*-
+
+;;; Code:
+
+(defun splash--center (str width)
+ "Return STR centered in WIDTH columns."
+ (let ((pad (max 0 (/ (- width (string-width str)) 2))))
+ (concat (make-string pad ?\s) str)))
+
+(defun splash-screen ()
+ "Show the splash screen."
+ (interactive)
+ (let ((buf (get-buffer-create "*splash*")))
+ (with-current-buffer buf
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (when (one-window-p)
+ (setq mode-line-format nil))
+ (setq cursor-type nil)
+ (let* ((height (- (window-body-height nil) 1))
+ (width (window-body-width nil))
+ (pad-top (- (/ height 2) 1))
+ (pad-bottom (- height (/ height 2) 3))
+ (emacs-str (format "GNU Emacs version %d.%d"
+ emacs-major-version
+ emacs-minor-version)))
+ (insert (make-string pad-top ?\n))
+ (insert (splash--center "www.gnu.org" width) "\n")
+ (insert (splash--center emacs-str width) "\n")
+ (insert (splash--center "A free/libre editor" width) "\n")
+ (insert (make-string pad-bottom ?\n))
+ (insert (splash--center "GNU Emacs comes with ABSOLUTELY NO WARRANTY" width) "\n")
+ (insert (splash--center "Copyright (C) 2026 Free Software Foundation, Inc." width) "\n"))
+ (goto-char (point-min))
+ (read-only-mode 1)
+ (use-local-map (make-sparse-keymap))))))
+
+(defun splash-screen-kill ()
+ "Kill the splash buffer."
+ (interactive)
+ (when (get-buffer "*splash*")
+ (kill-buffer "*splash*")))
+
+(if (daemonp)
+ (add-hook 'server-after-make-frame-hook
+ (lambda ()
+ (run-with-timer 0.15 nil #'splash-screen)))
+ (when (and (not (member "-no-splash" command-line-args))
+ (not (member "--file" command-line-args))
+ (not (member "--insert" command-line-args))
+ (not (member "--find-file" command-line-args)))
+ (add-hook 'window-setup-hook #'splash-screen)
+ (setq inhibit-startup-screen t
+ inhibit-startup-message t
+ inhibit-startup-echo-area-message t)))
+
+(provide 'splash-screen)
+;;; splash.el ends here
diff --git a/doom/.config/doom/+ui.el b/doom/.config/doom/+ui.el
index baa26f5..eed34e9 100644
--- a/doom/.config/doom/+ui.el
+++ b/doom/.config/doom/+ui.el
@@ -1,13 +1,41 @@
;;; $DOOMDIR/+ui.el -*- lexical-binding: t; -*-
+(load! "+splash")
+
+(defun +splash-initial-buffer ()
+ (splash-screen)
+ (get-buffer "*splash*"))
+
+(setq doom-fallback-buffer-name "*splash*"
+ initial-buffer-choice #'+splash-initial-buffer)
+
+(defadvice! +splash-regenerate-if-missing-a (&rest _)
+ :before #'doom-fallback-buffer
+ (unless (get-buffer "*splash*")
+ (splash-screen)))
(add-to-list 'custom-theme-load-path
"~/.config/doom/extra-themes/")
(setq doom-font (font-spec :family "Berkeley Mono" :size 12.0))
-(setq doom-theme 'doom-badger)
+(setq doom-theme 'modus-vivendi)
+;; (setq doom-theme 'tango)
(setq display-line-numbers-type t)
-(setq org-directory "~/notes/")
-
-(use-package mood-line
+(use-package! mood-line
:config
(mood-line-mode)
:custom
(mood-line-glyph-alist mood-line-glyphs-fira-code))
+
+(defun my/split-window-dynamically ()
+ "Split the selected window, choosing orientation by its shape."
+ (interactive)
+ (select-window
+ (if (> (window-total-width) (* 2 (window-total-height)))
+ (split-window-right)
+ (split-window-below))))
+(map! :leader "w s" #'my/split-window-dynamically)
+(setq scroll-margin 3)
+(use-package! breadcrumb
+ :defer t
+ :hook
+ (prog-mode . breadcrumb-mode)
+ :config
+ (breadcrumb-mode 1))
diff --git a/doom/.config/doom/+zk.el b/doom/.config/doom/+zk.el
deleted file mode 100644
index 29bdbd7..0000000
--- a/doom/.config/doom/+zk.el
+++ /dev/null
@@ -1,19 +0,0 @@
-;;; $DOOMDIR/+zk.el -*- lexical-binding: t; -*-
-(use-package! zk4e
- :commands (zk4e-list zk4e-edit zk4e-new zk4e-tag-list zk4e-index zk4e-select-notebook
- zk4e-goto-error)
- :custom
- (zk4e-notebook-directories '(("notes" . "~/notes/")))
- :config
- (zk4e-select-notebook "notes")
- (add-hook 'zk4e-edit-hook #'zk4e-maybe-name-buffer))
-
-(map! :leader
- (:prefix ("n z" . "zk")
- :desc "Edit note" "e" #'zk4e-edit
- :desc "New note" "n" #'zk4e-new
- :desc "List notes" "l" #'zk4e-list
- :desc "Index" "i" #'zk4e-index
- :desc "Tags" "t" #'zk4e-tag-list
- :desc "Switch notebook" "s" #'zk4e-select-notebook
- :desc "Error log" "!" #'zk4e-goto-error))
diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el
index d339c72..7eb4158 100644
--- a/doom/.config/doom/config.el
+++ b/doom/.config/doom/config.el
@@ -1,12 +1,16 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
(load! "+ui")
-(load! "+dashboard")
+;; (load! "+dashboard") ; this is the bigger dashboard
+(load! "+splash") ; this is the more minimal one
(load! "+maps")
(load! "+colemak")
(load! "+lang")
(load! "+email")
(load! "+jabber")
(load! "+emms")
-(load! "+zk")
(load! "+term")
(load! "+git")
+(load! "+org")
+(load! "+eww")
+(load! "+mosey")
+(load! "+indent")
diff --git a/doom/.config/doom/custom.el b/doom/.config/doom/custom.el
index a4ebc8b..3fb66f9 100644
--- a/doom/.config/doom/custom.el
+++ b/doom/.config/doom/custom.el
@@ -5,8 +5,24 @@
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
- '("a9eeab09d61fef94084a95f82557e147d9630fbbb82a837f971f83e66e21e5ad" default))
- '(helm-minibuffer-history-key "M-p"))
+ '("10e330880269244ae45ae9e02fe6f55766da9e15036e7c7f07d7ce228195deb5"
+ "28f3ac0f5fade64dc7e27abe9d32e7d85576c40940977e8e319f25055d3a28b7"
+ "967c23e9ba179b80560774419f081df22e7674aac23c5c550b817e4a1ce7d058"
+ "456697e914823ee45365b843c89fbc79191fdbaff471b29aad9dcbe0ee1d5641"
+ "df8500a3d0f9ba9aeaf8c9a74e108e3eac67ba72e64aceb11e6740edde779f70"
+ "a13adebab62892a6749eb620e2331b73c61fde6040e77413b7d7fb199d68ae9e"
+ "42b4451c14bde0a78d9b68c199dbd2ec554efec4a2bf3161944e6dbcc2c5a84b"
+ "2c68f4cf27b1e5f8c388aee2e9df91eb44092b94c78f6bea1cf411daaf6f1fa9"
+ "fb6cab2f9f670e9a65f39475de9a106cc7607f6ea6aec5397eee3950f75911b5"
+ "4c6fafeb552599e42567742ca0daa9755545421103a2d9b96407ed94abef15a9"
+ "8533fc4f3d5498e100e946bebcaf8ec553ee2b64f19cb2110e95eda0dfa4b854"
+ "beb0a691bac517cef04770453967ec4415ade448b51a89c785ad4ef1c332c575"
+ "b7970f3f38400138468f7d6dfc25cf3daa79f6e10d4472efa31f23b5b9152e64"
+ "be275b45bca52c599b82718759760dbc0e5044b22c7fca0b9b6b36f76d76f5d6"
+ "a9eeab09d61fef94084a95f82557e147d9630fbbb82a837f971f83e66e21e5ad" default))
+ '(helm-minibuffer-history-key "M-p")
+ '(safe-local-variable-directories
+ '("/home/sophie/melpa/" "/home/sophie/.config/doom/" "~/.config/emacs/")))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
diff --git a/doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.png b/doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.png
new file mode 100644
index 0000000..32b4a29
--- /dev/null
+++ b/doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.png
Binary files differ
diff --git a/doom/.config/doom/extra-themes/evergarden-common.el b/doom/.config/doom/extra-themes/evergarden-common.el
new file mode 100644
index 0000000..749bcda
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-common.el
@@ -0,0 +1,338 @@
+;;; evergarden-common.el --- Shared engine for the evergarden theme family -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.2.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;; this is NOT a theme in itself
+
+;;; Code:
+
+(require 'modus-themes)
+(require 'ef-themes)
+
+(defgroup evergarden-theme nil
+ "Cozy evergarden theme family built on Modus and Ef."
+ :group 'faces
+ :group 'ef-themes
+ :prefix "evergarden-")
+
+(defconst evergarden-theme-family 'evergarden-theme
+ "Shared theme family symbol for every evergarden flavor.")
+
+(defconst evergarden--term-mappings-dark
+ '((bg-term-black bg-main)
+ (fg-term-black bg-main)
+ (bg-term-black-bright overlay0)
+ (fg-term-black-bright overlay0)
+ (bg-term-white fg-dim)
+ (fg-term-white fg-dim)
+ (bg-term-white-bright fg-main)
+ (fg-term-white-bright fg-main))
+ "ANSI black/white terminal mapping for dark-background flavors.
+Anchors \"black\" to the darkest neutrals and \"white\" to the lightest,
+the same relationship a light theme uses just inverted.")
+
+(defconst evergarden--term-mappings-light
+ '((bg-term-black fg-main)
+ (fg-term-black fg-main)
+ (bg-term-black-bright fg-dim)
+ (fg-term-black-bright fg-dim)
+ (bg-term-white border)
+ (fg-term-white border)
+ (bg-term-white-bright bg-main)
+ (fg-term-white-bright bg-main))
+ "ANSI black/white terminal mapping for the light-background flavor (summer).
+Matches fortune-gold-theme.el's light-theme convention.")
+
+(defconst evergarden--term-mappings-color
+ '((bg-term-red red) (fg-term-red red)
+ (bg-term-red-bright red-warmer) (fg-term-red-bright red-warmer)
+ (bg-term-green green) (fg-term-green green)
+ (bg-term-green-bright green-warmer) (fg-term-green-bright green-warmer)
+ (bg-term-yellow yellow) (fg-term-yellow yellow)
+ (bg-term-yellow-bright yellow-warmer) (fg-term-yellow-bright yellow-warmer)
+ (bg-term-blue blue) (fg-term-blue blue)
+ (bg-term-blue-bright blue-warmer) (fg-term-blue-bright blue-warmer)
+ (bg-term-magenta magenta) (fg-term-magenta magenta)
+ (bg-term-magenta-bright magenta-warmer) (fg-term-magenta-bright magenta-warmer)
+ (bg-term-cyan cyan) (fg-term-cyan cyan)
+ (bg-term-cyan-bright cyan-warmer) (fg-term-cyan-bright cyan-warmer))
+ "ANSI colored-slot terminal mapping, identical for every flavor.
+Left as true family colors (not the green signature) since ANSI red should
+stay red, ANSI blue should stay blue, etc., regardless of flavor.")
+
+(defconst evergarden-palette-mappings-partial
+ (append
+ '(
+ (err red)
+ (warning orange)
+ (info cyan)
+ (underline-err red)
+ (underline-warning orange)
+ (underline-note cyan)
+ (modeline-err red)
+ (modeline-warning yellow)
+ (modeline-info cyan)
+ (bg-prominent-warning bg-warning)
+ (fg-prominent-warning fg-main)
+ (bg-prominent-note bg-info)
+ (fg-prominent-note fg-main)
+
+ (fg-link blue)
+ (fg-link-visited magenta)
+ (fg-link-symbolic cyan)
+ (bg-link unspecified)
+ (bg-link-symbolic unspecified)
+ (bg-link-visited unspecified)
+ (underline-link blue)
+ (underline-link-visited magenta)
+ (underline-link-symbolic cyan)
+
+ (name cyan)
+ (keybind green)
+ (identifier fg-main)
+ (fg-prompt green)
+ (bg-prompt unspecified)
+
+ (builtin cyan-cooler)
+ (comment fg-dim)
+ (constant magenta-cooler)
+ (fnname cyan)
+ (fnname-call cyan-warmer)
+ (keyword red)
+ (preprocessor green)
+ (property fg-main)
+ (docstring fg-dim)
+ (docmarkup green-cooler)
+ (string green-warmer)
+ (type yellow)
+ (variable blue)
+ (variable-use blue)
+ (rx-backslash orange)
+ (rx-construct magenta)
+
+ (accent-0 green)
+ (accent-1 cyan)
+ (accent-2 magenta-warmer)
+ (accent-3 orange)
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-main)
+ (bg-button-inactive bg-dim)
+ (fg-region fg-main)
+ (bg-mark-delete bg-red-subtle)
+ (fg-mark-delete red)
+ (bg-mark-select bg-green-subtle)
+ (fg-mark-select green)
+ (bg-mark-other bg-cyan-subtle)
+ (fg-mark-other cyan)
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-deadline-subtle red-faint)
+ (date-event fg-alt)
+ (date-holiday red-warmer)
+ (date-holiday-other magenta-warmer)
+ (date-now fg-main)
+ (date-range fg-alt)
+ (date-scheduled green)
+ (date-scheduled-subtle green-faint)
+ (date-weekday blue)
+ (date-weekend red-faint)
+
+ (fg-prose-code green-cooler)
+ (prose-done green)
+ (fg-prose-macro green)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-table-formula cyan)
+ (prose-tag yellow-faint)
+ (prose-todo red)
+ (fg-prose-verbatim magenta-warmer)
+
+ (mail-cite-0 green)
+ (mail-cite-1 cyan)
+ (mail-cite-2 magenta-warmer)
+ (mail-cite-3 red-warmer)
+ (mail-part cyan)
+ (mail-recipient blue)
+ (mail-subject green)
+ (mail-other fg-alt)
+
+ (bg-search-static bg-cyan-subtle)
+ (bg-search-current bg-green-intense)
+ (bg-search-lazy bg-green-subtle)
+ (bg-search-replace bg-red-intense)
+
+ (bg-search-rx-group-0 bg-green-intense)
+ (bg-search-rx-group-1 bg-magenta-intense)
+ (bg-search-rx-group-2 bg-cyan-intense)
+ (bg-search-rx-group-3 bg-red-intense)
+
+ (bg-space-err bg-red-intense)
+ (bg-space bg-main)
+ (fg-space border)
+
+ (fringe bg-main)
+ (fg-line-number-active green)
+ (fg-line-number-inactive overlay1)
+ (bg-line-number-active bg-hl-line)
+ (bg-line-number-inactive bg-main)
+
+ (bg-tab-bar bg-dim)
+ (bg-tab-current bg-main)
+ (bg-tab-other bg-dim)
+
+ (bg-prominent-err bg-err)
+ (fg-prominent-err err)
+ (fg-paren-match fg-main)
+ (underline-paren-match unspecified)
+ (bg-active-argument bg-active)
+ (fg-active-argument green)
+ (bg-active-value bg-green-subtle)
+ (fg-active-value green)
+
+ (bg-prose-block-delimiter bg-prose-block)
+ (fg-prose-block-delimiter fg-dim)
+ (bg-prose-block-contents bg-prose-block)
+ (bg-prose-code unspecified)
+ (bg-prose-macro unspecified)
+ (bg-prose-verbatim unspecified)
+
+ (fg-completion-match-0 green)
+ (fg-completion-match-1 cyan)
+ (fg-completion-match-2 magenta-warmer)
+ (fg-completion-match-3 orange)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+ (bg-completion bg-dim)
+ (fg-search-current fg-main)
+
+ (rainbow-0 green)
+ (rainbow-1 cyan)
+ (rainbow-2 magenta)
+ (rainbow-3 blue)
+ (rainbow-4 orange)
+ (rainbow-5 red)
+ (rainbow-6 yellow)
+ (rainbow-7 fg-alt)
+ (rainbow-8 fg-dim)
+
+ (fg-heading-0 green)
+ (fg-heading-1 green)
+ (fg-heading-2 cyan)
+ (fg-heading-3 magenta)
+ (fg-heading-4 blue)
+ (fg-heading-5 orange)
+ (fg-heading-6 red)
+ (fg-heading-7 fg-alt)
+ (fg-heading-8 fg-dim)
+ (bg-heading-0 unspecified)
+ (bg-heading-1 bg-green-nuanced)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 bg-magenta-nuanced)
+ (bg-heading-4 bg-blue-nuanced)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 bg-red-nuanced)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+ (overline-heading-0 green)
+ (overline-heading-1 green)
+ (overline-heading-2 cyan)
+ (overline-heading-3 magenta)
+ (overline-heading-4 blue)
+ (overline-heading-5 orange)
+ (overline-heading-6 red)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ evergarden--term-mappings-color)
+ "Semantic color mappings shared by every evergarden flavor.
+Only references palette symbol names, never literal hex, so the exact same
+list works whether the active flavor's palette is dark or light.")
+(defconst evergarden-custom-faces
+ '(`(corfu-default ((,c :inherit modus-themes-fixed-pitch
+ :background ,bg-dim
+ :foreground ,fg-main)))
+ `(corfu-current ((,c :background ,bg-green-intense
+ :foreground ,fg-main
+ :extend t
+ :box (:line-width -1 :color ,green)
+ :weight semi-bold)))
+ `(corfu-border ((,c :background ,border
+ :foreground ,border)))
+ `(corfu-bar ((,c :background ,green)))
+ `(corfu-popupinfo ((,c :background ,bg-dim
+ :foreground ,fg-main)))))
+(defun evergarden--ensure-modus-theme-metadata (name family description mode palette-sym overrides-sym)
+ "Declare NAME as a Modus-derived theme when reloading in-session.
+
+FAMILY, DESCRIPTION, MODE, PALETTE-SYM and OVERRIDES-SYM are forwarded to
+`modus-themes-declare', matching what `modus-themes-theme' expects to find
+if the theme object already exists in the current session."
+ (unless (plist-get (get name 'theme-properties) :modus-core-palette)
+ (modus-themes-declare name family description mode palette-sym nil overrides-sym)
+ (modus-themes-register name)))
+
+(defun evergarden-build-theme (flavor-name palette-partial mode)
+ "Register and define one evergarden flavor.
+
+FLAVOR-NAME is a symbol like `evergarden-fall'. PALETTE-PARTIAL is that
+flavor's base palette (its own analogue of one spring.lua/summer.lua/
+fall.lua/winter.lua table, plus the warmer/cooler/faint/intense/subtle/
+nuanced variants Modus needs). MODE is `dark' or `light' and selects which
+of `evergarden--term-mappings-dark'/`-light' gets appended."
+ (let* ((flavor-str (symbol-name flavor-name))
+ (description (format "Cozy evergarden dark theme, %s flavor."
+ (capitalize (substring flavor-str (length "evergarden-")))))
+ (palette-sym (intern (concat flavor-str "-palette")))
+ (overrides-sym (intern (concat flavor-str "-palette-overrides")))
+ (term-mappings (if (eq mode 'dark)
+ evergarden--term-mappings-dark
+ evergarden--term-mappings-light)))
+ (eval
+ `(progn
+ (defcustom ,overrides-sym nil
+ ,(format "Overrides for `%s'.
+
+Each element should have the form (NAME VALUE), where NAME is a palette
+entry from `%s' and VALUE is either another palette symbol or a color
+string."
+ palette-sym palette-sym)
+ :group 'evergarden-theme
+ :package-version '(evergarden-theme . "0.2.0")
+ :type '(repeat (list symbol (choice symbol string))))
+
+ (defconst ,palette-sym
+ (modus-themes-generate-palette
+ ',palette-partial
+ ',(if (eq mode 'dark) 'cool 'warm)
+ nil
+ (append evergarden-palette-mappings-partial
+ ',term-mappings
+ ef-themes-palette-common))
+ ,(format "Full palette for `%s'." flavor-name))
+
+ (evergarden--ensure-modus-theme-metadata
+ ',flavor-name 'evergarden-theme ,description ',mode ',palette-sym ',overrides-sym)
+
+ (modus-themes-theme
+ ',flavor-name 'evergarden-theme ,description ',mode
+ ',palette-sym nil ',overrides-sym 'evergarden-custom-faces))
+ t)))
+
+;;;###autoload
+(when load-file-name
+ (add-to-list 'custom-theme-load-path
+ (file-name-as-directory
+ (file-name-directory load-file-name))))
+
+(provide 'evergarden-common)
+
+;;; evergarden-common.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden-fall-theme.el b/doom/.config/doom/extra-themes/evergarden-fall-theme.el
new file mode 100644
index 0000000..e0903c2
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-fall-theme.el
@@ -0,0 +1,187 @@
+;;; evergarden-fall-theme.el --- Evergarden, Fall flavor -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.2.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;;
+;; The Fall flavor of evergarden -- generated by whiskers from
+;; the shared color table, same as lua/evergarden/palettes/fall.lua.
+;; All the actual face wiring lives in evergarden-common.el; this file only
+;; supplies Fall's own colors. DO NOT EDIT BY HAND -- edit the
+;; .tera template and re-run whiskers instead.
+
+;;; Code:
+
+;; Not `(file-name-directory (or load-file-name buffer-file-name))' --
+;; both can be nil depending on how the loader gets here (byte-compile
+;; caches, `eval-buffer', some straight.el paths), which signals
+;; `(wrong-type-argument stringp nil)'. `custom-theme-load-path' is
+;; reliably populated by the time any theme file loads (it's how this
+;; file was found in the first place), so search that instead.
+(unless (featurep 'evergarden-common)
+ (let ((common (locate-file "evergarden-common"
+ (append (seq-filter #'stringp custom-theme-load-path)
+ load-path)
+ '(".el" ".elc" ""))))
+ (if common
+ (load common)
+ (error "evergarden-common.el not found; add its directory to `custom-theme-load-path'"))))
+
+(defconst evergarden-fall-palette-partial
+ '(
+ ;; Core backgrounds / foregrounds
+ (cursor "#fae6ef")
+ (bg-main "#232a2e")
+ (bg-dim "#2b3337")
+ (bg-alt "#374145")
+ (fg-main "#f8f9e8")
+ (fg-dim "#adc9bc")
+ (fg-alt "#96b4aa")
+ (bg-active "#4a585c")
+ (bg-inactive "#2b3337")
+ (border "#58686d")
+
+ ;; Fall's own named palette (from the whiskers color table)
+ (bg-hl "#4a585c")
+ (bg-prose-block "#2a3338")
+ (red "#f57f82")
+ (orange "#f7a182")
+ (yellow "#f5d098")
+ (lime "#dbe6af")
+ (green "#cbe3b3")
+ (aqua "#b3e3ca")
+ (skye "#b3e6db")
+ (snow "#afd9e6")
+ (blue "#b2caed")
+ (purple "#d2bdf3")
+ (pink "#f3c0e5")
+ (cherry "#fae6ef")
+ (text "#f8f9e8")
+ (subtext1 "#adc9bc")
+ (subtext0 "#96b4aa")
+ (overlay2 "#839e9a")
+ (overlay1 "#6f8788")
+ (overlay0 "#58686d")
+ (surface2 "#4a585c")
+ (surface1 "#374145")
+ (surface0 "#2b3337")
+ (base "#232a2e")
+ (mantle "#1c2225")
+ (crust "#171c1f")
+
+ ;; Red family
+ (red-warmer "#f6788f")
+ (red-cooler "#f48f76")
+ (red-faint "#d07073")
+
+ ;; Green family
+ (green-warmer "#dbe6af")
+ (green-cooler "#bae1af")
+ (green-faint "#b1c999")
+
+ ;; Yellow family
+ (yellow-warmer "#f6c498")
+ (yellow-cooler "#f1dc97")
+ (yellow-faint "#d5b585")
+
+ ;; Blue family
+ (blue-warmer "#afd9e6")
+ (blue-cooler "#aeb8ec")
+ (blue-faint "#98aed0")
+
+ ;; Magenta/purple family
+ (magenta "#d2bdf3")
+ (magenta-warmer "#f3c0e5")
+ (magenta-cooler "#dcb8f2")
+ (magenta-faint "#b5a0d8")
+
+ ;; Cyan family
+ (cyan "#b3e3ca")
+ (cyan-warmer "#b3e3bf")
+ (cyan-cooler "#b3e6db")
+ (cyan-faint "#97c7ae")
+
+ ;; Intense/Subtle/Nuanced backgrounds
+ (bg-red-intense "#d79d9f")
+ (bg-red-subtle "#cca8a9")
+ (bg-red-nuanced "#c5afb0")
+ (bg-green-intense "#cbe1b5")
+ (bg-green-subtle "#cbd8be")
+ (bg-green-nuanced "#cbd3c3")
+ (bg-yellow-intense "#deccb0")
+ (bg-yellow-subtle "#d5cab9")
+ (bg-yellow-nuanced "#d0c9be")
+ (bg-blue-intense "#bccce4")
+ (bg-blue-subtle "#c4cedc")
+ (bg-blue-nuanced "#c8ced8")
+ (bg-magenta-intense "#d4c8e8")
+ (bg-magenta-subtle "#d6cee2")
+ (bg-magenta-nuanced "#d7d2de")
+ (bg-cyan-intense "#b5e1ca")
+ (bg-cyan-subtle "#bed8cb")
+ (bg-cyan-nuanced "#c3d3cb")
+
+ ;; Graph colors
+ (bg-graph-red-0 "#e09497")
+ (bg-graph-red-1 "#d69ea0")
+ (bg-graph-green-0 "#cbe8ae")
+ (bg-graph-green-1 "#cbe0b6")
+ (bg-graph-yellow-0 "#e6cda8")
+ (bg-graph-yellow-1 "#ddcbb1")
+ (bg-graph-blue-0 "#b6cbea")
+ (bg-graph-blue-1 "#bdcce3")
+ (bg-graph-magenta-0 "#d3c3ed")
+ (bg-graph-magenta-1 "#d4c8e8")
+ (bg-graph-cyan-0 "#aee8ca")
+ (bg-graph-cyan-1 "#b6e0ca")
+
+ ;; Diff
+ (bg-added "#cbe1b5")
+ (bg-added-faint "#cbd8be")
+ (bg-added-refine "#cbdcba")
+ (bg-added-fringe "#cbe8ae")
+ (fg-added "#cbe3b3")
+ (fg-added-intense "#8bcd49")
+
+ (bg-changed "#deccb0")
+ (bg-changed-faint "#d5cab9")
+ (bg-changed-refine "#d9cbb5")
+ (bg-changed-fringe "#e6cda8")
+ (fg-changed "#f1dc97")
+ (fg-changed-intense "#efbd19")
+
+ (bg-removed "#d79d9f")
+ (bg-removed-faint "#cca8a9")
+ (bg-removed-refine "#d0a4a5")
+ (bg-removed-fringe "#e09497")
+ (fg-removed "#f57f82")
+ (fg-removed-intense "#ef050d")
+
+ (bg-diff-context "#4a585c")
+
+ ;; UI chrome
+ (bg-mode-line-active "#435053")
+ (fg-mode-line-active "#f8f9e8")
+ (bg-mode-line-inactive "#2b3337")
+ (fg-mode-line-inactive "#adc9bc")
+ (border-mode-line-active "#cbe3b3")
+ (border-mode-line-inactive "#58686d")
+ (bg-completion "#2b3337")
+ (bg-hover "#4a585c")
+ (bg-hover-secondary "#c4cedc")
+ (bg-hl-line "#4a585c")
+ (bg-paren-match "#deccb0")
+ (bg-err "#d79d9f")
+ (bg-warning "#deccb0")
+ (bg-info "#b5e1ca")
+ (bg-region "#cbe1b5"))
+ "Base palette entries for `evergarden-fall', generated by whiskers.")
+
+(evergarden-build-theme 'evergarden-fall evergarden-fall-palette-partial 'dark)
+
+(provide 'evergarden-fall-theme)
+
+;;; evergarden-fall-theme.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden-spring-theme.el b/doom/.config/doom/extra-themes/evergarden-spring-theme.el
new file mode 100644
index 0000000..4ce3f85
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-spring-theme.el
@@ -0,0 +1,187 @@
+;;; evergarden-spring-theme.el --- Evergarden, Spring flavor -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.2.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;;
+;; The Spring flavor of evergarden -- generated by whiskers from
+;; the shared color table, same as lua/evergarden/palettes/spring.lua.
+;; All the actual face wiring lives in evergarden-common.el; this file only
+;; supplies Spring's own colors. DO NOT EDIT BY HAND -- edit the
+;; .tera template and re-run whiskers instead.
+
+;;; Code:
+
+;; Not `(file-name-directory (or load-file-name buffer-file-name))' --
+;; both can be nil depending on how the loader gets here (byte-compile
+;; caches, `eval-buffer', some straight.el paths), which signals
+;; `(wrong-type-argument stringp nil)'. `custom-theme-load-path' is
+;; reliably populated by the time any theme file loads (it's how this
+;; file was found in the first place), so search that instead.
+(unless (featurep 'evergarden-common)
+ (let ((common (locate-file "evergarden-common"
+ (append (seq-filter #'stringp custom-theme-load-path)
+ load-path)
+ '(".el" ".elc" ""))))
+ (if common
+ (load common)
+ (error "evergarden-common.el not found; add its directory to `custom-theme-load-path'"))))
+
+(defconst evergarden-spring-palette-partial
+ '(
+ ;; Core backgrounds / foregrounds
+ (cursor "#fae6ef")
+ (bg-main "#2b3438")
+ (bg-dim "#343e43")
+ (bg-alt "#3e4a4f")
+ (fg-main "#f8f9e8")
+ (fg-dim "#adc9bc")
+ (fg-alt "#96b4aa")
+ (bg-active "#4a585c")
+ (bg-inactive "#343e43")
+ (border "#58686d")
+
+ ;; Spring's own named palette (from the whiskers color table)
+ (bg-hl "#4a585c")
+ (bg-prose-block "#323d42")
+ (red "#f57f82")
+ (orange "#f7a182")
+ (yellow "#f5d098")
+ (lime "#dbe6af")
+ (green "#cbe3b3")
+ (aqua "#b3e3ca")
+ (skye "#b3e6db")
+ (snow "#afd9e6")
+ (blue "#b2caed")
+ (purple "#d2bdf3")
+ (pink "#f3c0e5")
+ (cherry "#fae6ef")
+ (text "#f8f9e8")
+ (subtext1 "#adc9bc")
+ (subtext0 "#96b4aa")
+ (overlay2 "#839e9a")
+ (overlay1 "#6f8788")
+ (overlay0 "#58686d")
+ (surface2 "#4a585c")
+ (surface1 "#3e4a4f")
+ (surface0 "#343e43")
+ (base "#2b3438")
+ (mantle "#232a2e")
+ (crust "#1c2225")
+
+ ;; Red family
+ (red-warmer "#f6788f")
+ (red-cooler "#f48f76")
+ (red-faint "#d07073")
+
+ ;; Green family
+ (green-warmer "#dbe6af")
+ (green-cooler "#bae1af")
+ (green-faint "#b1c999")
+
+ ;; Yellow family
+ (yellow-warmer "#f6c498")
+ (yellow-cooler "#f1dc97")
+ (yellow-faint "#d5b585")
+
+ ;; Blue family
+ (blue-warmer "#afd9e6")
+ (blue-cooler "#aeb8ec")
+ (blue-faint "#98aed0")
+
+ ;; Magenta/purple family
+ (magenta "#d2bdf3")
+ (magenta-warmer "#f3c0e5")
+ (magenta-cooler "#dcb8f2")
+ (magenta-faint "#b5a0d8")
+
+ ;; Cyan family
+ (cyan "#b3e3ca")
+ (cyan-warmer "#b3e3bf")
+ (cyan-cooler "#b3e6db")
+ (cyan-faint "#97c7ae")
+
+ ;; Intense/Subtle/Nuanced backgrounds
+ (bg-red-intense "#d79d9f")
+ (bg-red-subtle "#cca8a9")
+ (bg-red-nuanced "#c5afb0")
+ (bg-green-intense "#cbe1b5")
+ (bg-green-subtle "#cbd8be")
+ (bg-green-nuanced "#cbd3c3")
+ (bg-yellow-intense "#deccb0")
+ (bg-yellow-subtle "#d5cab9")
+ (bg-yellow-nuanced "#d0c9be")
+ (bg-blue-intense "#bccce4")
+ (bg-blue-subtle "#c4cedc")
+ (bg-blue-nuanced "#c8ced8")
+ (bg-magenta-intense "#d4c8e8")
+ (bg-magenta-subtle "#d6cee2")
+ (bg-magenta-nuanced "#d7d2de")
+ (bg-cyan-intense "#b5e1ca")
+ (bg-cyan-subtle "#bed8cb")
+ (bg-cyan-nuanced "#c3d3cb")
+
+ ;; Graph colors
+ (bg-graph-red-0 "#e09497")
+ (bg-graph-red-1 "#d69ea0")
+ (bg-graph-green-0 "#cbe8ae")
+ (bg-graph-green-1 "#cbe0b6")
+ (bg-graph-yellow-0 "#e6cda8")
+ (bg-graph-yellow-1 "#ddcbb1")
+ (bg-graph-blue-0 "#b6cbea")
+ (bg-graph-blue-1 "#bdcce3")
+ (bg-graph-magenta-0 "#d3c3ed")
+ (bg-graph-magenta-1 "#d4c8e8")
+ (bg-graph-cyan-0 "#aee8ca")
+ (bg-graph-cyan-1 "#b6e0ca")
+
+ ;; Diff
+ (bg-added "#cbe1b5")
+ (bg-added-faint "#cbd8be")
+ (bg-added-refine "#cbdcba")
+ (bg-added-fringe "#cbe8ae")
+ (fg-added "#cbe3b3")
+ (fg-added-intense "#8bcd49")
+
+ (bg-changed "#deccb0")
+ (bg-changed-faint "#d5cab9")
+ (bg-changed-refine "#d9cbb5")
+ (bg-changed-fringe "#e6cda8")
+ (fg-changed "#f1dc97")
+ (fg-changed-intense "#efbd19")
+
+ (bg-removed "#d79d9f")
+ (bg-removed-faint "#cca8a9")
+ (bg-removed-refine "#d0a4a5")
+ (bg-removed-fringe "#e09497")
+ (fg-removed "#f57f82")
+ (fg-removed-intense "#ef050d")
+
+ (bg-diff-context "#4a585c")
+
+ ;; UI chrome
+ (bg-mode-line-active "#435053")
+ (fg-mode-line-active "#f8f9e8")
+ (bg-mode-line-inactive "#343e43")
+ (fg-mode-line-inactive "#adc9bc")
+ (border-mode-line-active "#cbe3b3")
+ (border-mode-line-inactive "#58686d")
+ (bg-completion "#343e43")
+ (bg-hover "#4a585c")
+ (bg-hover-secondary "#c4cedc")
+ (bg-hl-line "#4a585c")
+ (bg-paren-match "#deccb0")
+ (bg-err "#d79d9f")
+ (bg-warning "#deccb0")
+ (bg-info "#b5e1ca")
+ (bg-region "#cbe1b5"))
+ "Base palette entries for `evergarden-spring', generated by whiskers.")
+
+(evergarden-build-theme 'evergarden-spring evergarden-spring-palette-partial 'dark)
+
+(provide 'evergarden-spring-theme)
+
+;;; evergarden-spring-theme.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden-summer-theme.el b/doom/.config/doom/extra-themes/evergarden-summer-theme.el
new file mode 100644
index 0000000..0557283
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-summer-theme.el
@@ -0,0 +1,187 @@
+;;; evergarden-summer-theme.el --- Evergarden, Summer flavor -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.2.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;;
+;; The Summer flavor of evergarden -- generated by whiskers from
+;; the shared color table, same as lua/evergarden/palettes/summer.lua.
+;; All the actual face wiring lives in evergarden-common.el; this file only
+;; supplies Summer's own colors. DO NOT EDIT BY HAND -- edit the
+;; .tera template and re-run whiskers instead.
+
+;;; Code:
+
+;; Not `(file-name-directory (or load-file-name buffer-file-name))' --
+;; both can be nil depending on how the loader gets here (byte-compile
+;; caches, `eval-buffer', some straight.el paths), which signals
+;; `(wrong-type-argument stringp nil)'. `custom-theme-load-path' is
+;; reliably populated by the time any theme file loads (it's how this
+;; file was found in the first place), so search that instead.
+(unless (featurep 'evergarden-common)
+ (let ((common (locate-file "evergarden-common"
+ (append (seq-filter #'stringp custom-theme-load-path)
+ load-path)
+ '(".el" ".elc" ""))))
+ (if common
+ (load common)
+ (error "evergarden-common.el not found; add its directory to `custom-theme-load-path'"))))
+
+(defconst evergarden-summer-palette-partial
+ '(
+ ;; Core backgrounds / foregrounds
+ (cursor "#c29fb2")
+ (bg-main "#f5efe6")
+ (bg-dim "#ede8dd")
+ (bg-alt "#e6e1d3")
+ (fg-main "#2b3034")
+ (fg-dim "#455355")
+ (fg-alt "#576869")
+ (bg-active "#ceccbd")
+ (bg-inactive "#ede8dd")
+ (border "#acb5a4")
+
+ ;; Summer's own named palette (from the whiskers color table)
+ (bg-hl "#ceccbd")
+ (bg-prose-block "#f2ebe0")
+ (red "#c58687")
+ (orange "#c69883")
+ (yellow "#c4aa80")
+ (lime "#abb182")
+ (green "#91a77a")
+ (aqua "#74a48b")
+ (skye "#719f96")
+ (snow "#7799a3")
+ (blue "#8294ad")
+ (purple "#a897b8")
+ (pink "#c499b8")
+ (cherry "#c29fb2")
+ (text "#2b3034")
+ (subtext1 "#455355")
+ (subtext0 "#576869")
+ (overlay2 "#707d76")
+ (overlay1 "#829084")
+ (overlay0 "#acb5a4")
+ (surface2 "#ceccbd")
+ (surface1 "#e6e1d3")
+ (surface0 "#ede8dd")
+ (base "#f5efe6")
+ (mantle "#f2eae1")
+ (crust "#e8ded5")
+
+ ;; Red family
+ (red-warmer "#c5818c")
+ (red-cooler "#c28e80")
+ (red-faint "#cdb3b3")
+
+ ;; Green family
+ (green-warmer "#abb182")
+ (green-cooler "#89aa7e")
+ (green-faint "#abb6a0")
+
+ ;; Yellow family
+ (yellow-warmer "#c6a17e")
+ (yellow-cooler "#c2b588")
+ (yellow-faint "#cbbfad")
+
+ ;; Blue family
+ (blue-warmer "#7799a3")
+ (blue-cooler "#868eb0")
+ (blue-faint "#abb2bd")
+
+ ;; Magenta/purple family
+ (magenta "#a897b8")
+ (magenta-warmer "#c499b8")
+ (magenta-cooler "#b39bbb")
+ (magenta-faint "#c4beca")
+
+ ;; Cyan family
+ (cyan "#74a48b")
+ (cyan-warmer "#74a480")
+ (cyan-cooler "#719f96")
+ (cyan-faint "#9cb4a8")
+
+ ;; Intense/Subtle/Nuanced backgrounds
+ (bg-red-intense "#d3797b")
+ (bg-red-subtle "#ca8284")
+ (bg-red-nuanced "#c58788")
+ (bg-green-intense "#93c85a")
+ (bg-green-subtle "#92bd65")
+ (bg-green-nuanced "#92b76b")
+ (bg-yellow-intense "#d1ad73")
+ (bg-yellow-subtle "#c7ab7d")
+ (bg-yellow-nuanced "#c2aa82")
+ (bg-blue-intense "#648fcc")
+ (bg-blue-subtle "#6f91c1")
+ (bg-blue-nuanced "#7492bc")
+ (bg-magenta-intense "#a97cd4")
+ (bg-magenta-subtle "#a985cb")
+ (bg-magenta-nuanced "#a98ac6")
+ (bg-cyan-intense "#52c68a")
+ (bg-cyan-subtle "#5eba8a")
+ (bg-cyan-nuanced "#64b48b")
+
+ ;; Graph colors
+ (bg-graph-red-0 "#c58788")
+ (bg-graph-red-1 "#c58788")
+ (bg-graph-green-0 "#92b76b")
+ (bg-graph-green-1 "#92b76b")
+ (bg-graph-yellow-0 "#c2aa82")
+ (bg-graph-yellow-1 "#c2aa82")
+ (bg-graph-blue-0 "#7492bc")
+ (bg-graph-blue-1 "#7492bc")
+ (bg-graph-magenta-0 "#a98ac6")
+ (bg-graph-magenta-1 "#a98ac6")
+ (bg-graph-cyan-0 "#64b48b")
+ (bg-graph-cyan-1 "#64b48b")
+
+ ;; Diff
+ (bg-added "#93c85a")
+ (bg-added-faint "#92bd65")
+ (bg-added-refine "#93c161")
+ (bg-added-fringe "#92b76b")
+ (fg-added "#91a77a")
+ (fg-added-intense "#6c894d")
+
+ (bg-changed "#d1ad73")
+ (bg-changed-faint "#c7ab7d")
+ (bg-changed-refine "#cbac79")
+ (bg-changed-fringe "#c2aa82")
+ (fg-changed "#c2b588")
+ (fg-changed-intense "#b29c4c")
+
+ (bg-removed "#d3797b")
+ (bg-removed-faint "#ca8284")
+ (bg-removed-refine "#cd7e80")
+ (bg-removed-fringe "#c58788")
+ (fg-removed "#c58687")
+ (fg-removed-intense "#b7494b")
+
+ (bg-diff-context "#ceccbd")
+
+ ;; UI chrome
+ (bg-mode-line-active "#c8c5b4")
+ (fg-mode-line-active "#2b3034")
+ (bg-mode-line-inactive "#ede8dd")
+ (fg-mode-line-inactive "#455355")
+ (border-mode-line-active "#91a77a")
+ (border-mode-line-inactive "#acb5a4")
+ (bg-completion "#ede8dd")
+ (bg-hover "#ceccbd")
+ (bg-hover-secondary "#6f91c1")
+ (bg-hl-line "#ceccbd")
+ (bg-paren-match "#d1ad73")
+ (bg-err "#d3797b")
+ (bg-warning "#d1ad73")
+ (bg-info "#52c68a")
+ (bg-region "#93c85a"))
+ "Base palette entries for `evergarden-summer', generated by whiskers.")
+
+(evergarden-build-theme 'evergarden-summer evergarden-summer-palette-partial 'light)
+
+(provide 'evergarden-summer-theme)
+
+;;; evergarden-summer-theme.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden-theme.el b/doom/.config/doom/extra-themes/evergarden-theme.el
new file mode 100644
index 0000000..1cd0824
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-theme.el
@@ -0,0 +1,445 @@
+;;; evergarden-theme.el --- Cozy evergarden dark theme -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.1.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;; The evergarden theme (https://evergarden.moe), ported to Emacs and based on ef/modus themes
+
+;;; Code:
+
+(require 'modus-themes)
+(require 'ef-themes)
+
+(defgroup evergarden-theme nil
+ "Cozy evergarden dark theme built on Modus and Ef."
+ :group 'faces
+ :group 'ef-themes
+ :prefix "evergarden-")
+
+(defconst evergarden-theme-description
+ "Cozy evergarden dark theme with forest-green accents."
+ "Documentation string for the `evergarden' theme.")
+
+(defconst evergarden-theme-name 'evergarden
+ "Theme symbol for `evergarden'.")
+
+(defconst evergarden-theme-family 'evergarden-theme
+ "Theme family symbol for `evergarden'.")
+
+(defconst evergarden-theme-background-mode 'dark
+ "Background mode for `evergarden'.")
+
+(defconst evergarden-palette-partial
+ '(
+ (cursor "#FAE6EF")
+ (bg-main "#232A2E")
+ (bg-dim "#2B3337")
+ (bg-alt "#374145")
+ (fg-main "#F8F9E8")
+ (fg-dim "#ADC9BC")
+ (fg-alt "#96B4AA")
+ (bg-active "#4A585C")
+ (bg-inactive "#2B3337")
+ (border "#58686D")
+
+ (bg-hl "#4A585C")
+ (bg-prose-block "#2A3237")
+ (red "#F57F82")
+ (orange "#F7A182")
+ (yellow "#F5D098")
+ (lime "#DBE6AF")
+ (green "#CBE3B3")
+ (aqua "#B3E3CA")
+ (skye "#B3E6DB")
+ (snow "#AFD9E6")
+ (blue "#B2CAED")
+ (purple "#D2BDF3")
+ (pink "#F3C0E5")
+ (cherry "#FAE6EF")
+ (subtext1 "#ADC9BC")
+ (subtext0 "#96B4AA")
+ (overlay2 "#839E9A")
+ (overlay1 "#6F8788")
+ (overlay0 "#58686D")
+ (surface2 "#4A585C")
+ (surface1 "#374145")
+ (surface0 "#2B3337")
+ (mantle "#1C2225")
+ (crust "#171C1F")
+
+ (red-warmer "#F6798F")
+ (red-cooler "#F68F74")
+ (red-faint "#D07173")
+
+ (green-warmer "#DBE6AF")
+ (green-cooler "#BBE2AF")
+ (green-faint "#B2C49F")
+
+ (yellow-warmer "#F6C497")
+ (yellow-cooler "#F2DC96")
+ (yellow-faint "#D4B586")
+
+ (blue-warmer "#AFD9E6")
+ (blue-cooler "#AEB9EC")
+ (blue-faint "#9AAFCD")
+
+ (magenta "#D2BDF3")
+ (magenta-warmer "#F3C0E5")
+ (magenta-cooler "#DCB9F2")
+ (magenta-faint "#B6A0D8")
+
+ (cyan "#B3E3CA")
+ (cyan-warmer "#B3E3BF")
+ (cyan-cooler "#B3E6DB")
+ (cyan-faint "#9DC1AE")
+
+ (bg-red-intense "#6D2C2E")
+ (bg-green-intense "#4D6D2C")
+ (bg-yellow-intense "#6D532C")
+ (bg-blue-intense "#2C476D")
+ (bg-magenta-intense "#452C6D")
+ (bg-cyan-intense "#2C6D4B")
+
+ (bg-red-subtle "#482A2B")
+ (bg-green-subtle "#39482A")
+ (bg-yellow-subtle "#483C2A")
+ (bg-blue-subtle "#2A3748")
+ (bg-magenta-subtle "#362A48")
+ (bg-cyan-subtle "#2A4839")
+
+ (bg-red-nuanced "#372828")
+ (bg-green-nuanced "#2F3728")
+ (bg-yellow-nuanced "#373128")
+ (bg-blue-nuanced "#282E37")
+ (bg-magenta-nuanced "#2D2837")
+ (bg-cyan-nuanced "#28372F")
+
+ (bg-graph-red-0 "#A63033")
+ (bg-graph-red-1 "#6B2E2F")
+ (bg-graph-green-0 "#6BA630")
+ (bg-graph-green-1 "#4D6B2E")
+ (bg-graph-yellow-0 "#A67730")
+ (bg-graph-yellow-1 "#6B532E")
+ (bg-graph-blue-0 "#3060A6")
+ (bg-graph-blue-1 "#2E476B")
+ (bg-graph-magenta-0 "#5E30A6")
+ (bg-graph-magenta-1 "#462E6B")
+ (bg-graph-cyan-0 "#30A669")
+ (bg-graph-cyan-1 "#2E6B4B")
+ (bg-added "#4D6D2C")
+ (bg-added-faint "#39482A")
+ (bg-added-refine "#577B32")
+ (bg-added-fringe "#4D6B2E")
+ (fg-added "#CBE3B3")
+ (fg-added-intense "#8BCC4A")
+ (bg-changed "#6D532C")
+ (bg-changed-faint "#483C2A")
+ (bg-changed-refine "#7B5E32")
+ (bg-changed-fringe "#6B532E")
+ (fg-changed "#F2DC96")
+ (fg-changed-intense "#F69D18")
+ (bg-removed "#6D2C2E")
+ (bg-removed-faint "#482A2B")
+ (bg-removed-refine "#7B3234")
+ (bg-removed-fringe "#6B2E2F")
+ (fg-removed "#F57F82")
+ (fg-removed-intense "#F41A20")
+ (bg-diff-context "#4A585C")
+ (bg-mode-line-active "#455356")
+ (fg-mode-line-active "#F8F9E8")
+ (bg-mode-line-inactive "#2B3337")
+ (fg-mode-line-inactive "#ADC9BC")
+ (border-mode-line-active "#CBE3B3")
+ (border-mode-line-inactive "#58686D")
+ (bg-completion "#374145")
+ (bg-hover "#4A585C")
+ (bg-hover-secondary "#2B3646")
+ (bg-hl-line "#4A585C")
+ (bg-paren-match "#604D2E")
+ (bg-err "#6D2C2E")
+ (bg-warning "#6D532C")
+ (bg-info "#2C6D4B")
+ (bg-region "#4A585C"))
+ "Base palette entries for `evergarden'.")
+
+(defconst evergarden-palette-mappings-partial
+ '(
+ (err red)
+ (warning orange)
+ (info cyan)
+ (underline-err red)
+ (underline-warning orange)
+ (underline-note cyan)
+ (modeline-err red)
+ (modeline-warning yellow)
+ (modeline-info cyan)
+ (bg-prominent-warning bg-warning)
+ (fg-prominent-warning fg-main)
+ (bg-prominent-note bg-info)
+ (fg-prominent-note fg-main)
+ (fg-link blue)
+ (fg-link-visited magenta)
+ (fg-link-symbolic cyan)
+ (bg-link unspecified)
+ (bg-link-symbolic unspecified)
+ (bg-link-visited unspecified)
+ (underline-link blue)
+ (underline-link-visited magenta)
+ (underline-link-symbolic cyan)
+ (name cyan)
+ (keybind green)
+ (identifier fg-main)
+ (fg-prompt green)
+ (bg-prompt unspecified)
+ (builtin cyan-cooler)
+ (comment fg-dim)
+ (constant magenta-cooler)
+ (fnname cyan)
+ (fnname-call cyan-warmer)
+ (keyword red)
+ (preprocessor green)
+ (property fg-main)
+ (docstring fg-dim)
+ (docmarkup green-cooler)
+ (string green-warmer)
+ (type yellow)
+ (variable blue)
+ (variable-use blue)
+ (rx-backslash orange)
+ (rx-construct magenta)
+ (accent-0 green)
+ (accent-1 cyan)
+ (accent-2 magenta-warmer)
+ (accent-3 orange)
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-main)
+ (bg-button-inactive bg-dim)
+ (fg-region fg-main)
+ (bg-mark-delete bg-red-subtle)
+ (fg-mark-delete red)
+ (bg-mark-select bg-green-subtle)
+ (fg-mark-select green)
+ (bg-mark-other bg-cyan-subtle)
+ (fg-mark-other cyan)
+ (date-common cyan)
+ (date-deadline red)
+ (date-deadline-subtle red-faint)
+ (date-event fg-alt)
+ (date-holiday red-warmer)
+ (date-holiday-other magenta-warmer)
+ (date-now fg-main)
+ (date-range fg-alt)
+ (date-scheduled green)
+ (date-scheduled-subtle green-faint)
+ (date-weekday blue)
+ (date-weekend red-faint)
+ (fg-prose-code green-cooler)
+ (prose-done green)
+ (fg-prose-macro green)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-table-formula cyan)
+ (prose-tag yellow-faint)
+ (prose-todo red)
+ (fg-prose-verbatim magenta-warmer)
+ (mail-cite-0 green)
+ (mail-cite-1 cyan)
+ (mail-cite-2 magenta-warmer)
+ (mail-cite-3 red-warmer)
+ (mail-part cyan)
+ (mail-recipient blue)
+ (mail-subject green)
+ (mail-other fg-alt)
+ (bg-search-static bg-cyan-subtle)
+ (bg-search-current bg-green-intense)
+ (bg-search-lazy bg-green-subtle)
+ (bg-search-replace bg-red-intense)
+ (bg-search-rx-group-0 bg-green-intense)
+ (bg-search-rx-group-1 bg-magenta-intense)
+ (bg-search-rx-group-2 bg-cyan-intense)
+ (bg-search-rx-group-3 bg-red-intense)
+ (bg-space-err bg-red-intense)
+ (bg-space bg-main)
+ (fg-space border)
+ (fringe bg-main)
+ (fg-line-number-active green)
+ (fg-line-number-inactive overlay1)
+ (bg-line-number-active bg-hl-line)
+ (bg-line-number-inactive bg-main)
+ (bg-tab-bar bg-dim)
+ (bg-tab-current bg-main)
+ (bg-tab-other bg-dim)
+ (bg-prominent-err bg-err)
+ (fg-prominent-err err)
+ (fg-paren-match fg-main)
+ (underline-paren-match unspecified)
+ (bg-active-argument bg-active)
+ (fg-active-argument green)
+ (bg-active-value bg-green-subtle)
+ (fg-active-value green)
+ (bg-prose-block-delimiter bg-prose-block)
+ (fg-prose-block-delimiter fg-dim)
+ (bg-prose-block-contents bg-prose-block)
+ (bg-prose-code unspecified)
+ (bg-prose-macro unspecified)
+ (bg-prose-verbatim unspecified)
+ (fg-completion-match-0 green)
+ (fg-completion-match-1 cyan)
+ (fg-completion-match-2 magenta-warmer)
+ (fg-completion-match-3 orange)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+ (bg-completion bg-dim)
+ (fg-search-current fg-main)
+ (bg-term-black bg-main)
+ (fg-term-black bg-main)
+ (bg-term-black-bright overlay0)
+ (fg-term-black-bright overlay0)
+ (bg-term-red red)
+ (fg-term-red red)
+ (bg-term-red-bright red-warmer)
+ (fg-term-red-bright red-warmer)
+ (bg-term-green green)
+ (fg-term-green green)
+ (bg-term-green-bright green-warmer)
+ (fg-term-green-bright green-warmer)
+ (bg-term-yellow yellow)
+ (fg-term-yellow yellow)
+ (bg-term-yellow-bright yellow-warmer)
+ (fg-term-yellow-bright yellow-warmer)
+ (bg-term-blue blue)
+ (fg-term-blue blue)
+ (bg-term-blue-bright blue-warmer)
+ (fg-term-blue-bright blue-warmer)
+ (bg-term-magenta magenta)
+ (fg-term-magenta magenta)
+ (bg-term-magenta-bright magenta-warmer)
+ (fg-term-magenta-bright magenta-warmer)
+ (bg-term-cyan cyan)
+ (fg-term-cyan cyan)
+ (bg-term-cyan-bright cyan-warmer)
+ (fg-term-cyan-bright cyan-warmer)
+ (bg-term-white fg-dim)
+ (fg-term-white fg-dim)
+ (bg-term-white-bright fg-main)
+ (fg-term-white-bright fg-main)
+ (rainbow-0 green)
+ (rainbow-1 cyan)
+ (rainbow-2 magenta)
+ (rainbow-3 blue)
+ (rainbow-4 orange)
+ (rainbow-5 red)
+ (rainbow-6 yellow)
+ (rainbow-7 fg-alt)
+ (rainbow-8 fg-dim)
+ (fg-heading-0 green)
+ (fg-heading-1 green)
+ (fg-heading-2 cyan)
+ (fg-heading-3 magenta)
+ (fg-heading-4 blue)
+ (fg-heading-5 orange)
+ (fg-heading-6 red)
+ (fg-heading-7 fg-alt)
+ (fg-heading-8 fg-dim)
+ (bg-heading-0 unspecified)
+ (bg-heading-1 bg-green-nuanced)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 bg-magenta-nuanced)
+ (bg-heading-4 bg-blue-nuanced)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 bg-red-nuanced)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+ (overline-heading-0 green)
+ (overline-heading-1 green)
+ (overline-heading-2 cyan)
+ (overline-heading-3 magenta)
+ (overline-heading-4 blue)
+ (overline-heading-5 orange)
+ (overline-heading-6 red)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "Semantic color mappings for `evergarden'.")
+
+(defcustom evergarden-palette-overrides nil
+ "Overrides for `evergarden-palette'.
+
+Each element should have the form (NAME VALUE), where NAME is a palette
+entry from `evergarden-palette' and VALUE is either another palette symbol
+or a color string."
+ :group 'evergarden-theme
+ :package-version '(evergarden-theme . "0.1.0")
+ :type '(repeat (list symbol (choice symbol string))))
+
+(defconst evergarden-palette
+ (modus-themes-generate-palette
+ evergarden-palette-partial
+ 'cool
+ nil
+ (append evergarden-palette-mappings-partial ef-themes-palette-common))
+ "Full palette for `evergarden'.")
+
+(defconst evergarden-custom-faces
+ '(`(corfu-default ((,c :inherit modus-themes-fixed-pitch
+ :background ,bg-dim
+ :foreground ,fg-main)))
+ `(corfu-current ((,c :background ,bg-green-intense
+ :foreground ,fg-main
+ :extend t
+ :box (:line-width -1 :color ,green)
+ :weight semi-bold)))
+ `(corfu-border ((,c :background ,border
+ :foreground ,border)))
+ `(corfu-bar ((,c :background ,green)))
+ `(corfu-popupinfo ((,c :background ,bg-dim
+ :foreground ,fg-main))))
+ "Additional face overrides for `evergarden'.
+
+Prefer palette entries and semantic mappings first.
+Use direct face overrides only for targeted package cases where the
+inherited mapping does not provide enough contrast.")
+
+(defun evergarden--ensure-modus-theme-metadata ()
+ "Declare `evergarden' as a Modus-derived theme when reloading in-session.
+
+If an `evergarden' theme object already exists in the session, ensure it
+still has the theme properties that `modus-themes-theme' expects."
+ (unless (plist-get (get evergarden-theme-name 'theme-properties) :modus-core-palette)
+ (modus-themes-declare
+ evergarden-theme-name
+ evergarden-theme-family
+ evergarden-theme-description
+ evergarden-theme-background-mode
+ 'evergarden-palette
+ nil
+ 'evergarden-palette-overrides)
+ (modus-themes-register evergarden-theme-name)))
+
+(evergarden--ensure-modus-theme-metadata)
+
+(modus-themes-theme
+ evergarden-theme-name
+ evergarden-theme-family
+ evergarden-theme-description
+ evergarden-theme-background-mode
+ 'evergarden-palette
+ nil
+ 'evergarden-palette-overrides
+ 'evergarden-custom-faces)
+
+;;;###autoload
+(when load-file-name
+ (add-to-list 'custom-theme-load-path
+ (file-name-as-directory
+ (file-name-directory load-file-name))))
+
+(provide 'evergarden-theme)
+
+;;; evergarden-theme.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden-winter-theme.el b/doom/.config/doom/extra-themes/evergarden-winter-theme.el
new file mode 100644
index 0000000..e353f3a
--- /dev/null
+++ b/doom/.config/doom/extra-themes/evergarden-winter-theme.el
@@ -0,0 +1,187 @@
+;;; evergarden-winter-theme.el --- Evergarden, Winter flavor -*- lexical-binding: t; -*-
+
+;; Author: expansion of the original evergarden theme by @koi.rip
+;; Version: 0.2.0
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0") (ef-themes "2.0.0"))
+;; Keywords: faces, theme
+
+;;; Commentary:
+;;
+;; The Winter flavor of evergarden -- generated by whiskers from
+;; the shared color table, same as lua/evergarden/palettes/winter.lua.
+;; All the actual face wiring lives in evergarden-common.el; this file only
+;; supplies Winter's own colors. DO NOT EDIT BY HAND -- edit the
+;; .tera template and re-run whiskers instead.
+
+;;; Code:
+
+;; Not `(file-name-directory (or load-file-name buffer-file-name))' --
+;; both can be nil depending on how the loader gets here (byte-compile
+;; caches, `eval-buffer', some straight.el paths), which signals
+;; `(wrong-type-argument stringp nil)'. `custom-theme-load-path' is
+;; reliably populated by the time any theme file loads (it's how this
+;; file was found in the first place), so search that instead.
+(unless (featurep 'evergarden-common)
+ (let ((common (locate-file "evergarden-common"
+ (append (seq-filter #'stringp custom-theme-load-path)
+ load-path)
+ '(".el" ".elc" ""))))
+ (if common
+ (load common)
+ (error "evergarden-common.el not found; add its directory to `custom-theme-load-path'"))))
+
+(defconst evergarden-winter-palette-partial
+ '(
+ ;; Core backgrounds / foregrounds
+ (cursor "#fae6ef")
+ (bg-main "#1e2528")
+ (bg-dim "#262f33")
+ (bg-alt "#374145")
+ (fg-main "#f8f9e8")
+ (fg-dim "#adc9bc")
+ (fg-alt "#96b4aa")
+ (bg-active "#4a585c")
+ (bg-inactive "#262f33")
+ (border "#58686d")
+
+ ;; Winter's own named palette (from the whiskers color table)
+ (bg-hl "#4a585c")
+ (bg-prose-block "#252d31")
+ (red "#f57f82")
+ (orange "#f7a182")
+ (yellow "#f5d098")
+ (lime "#dbe6af")
+ (green "#cbe3b3")
+ (aqua "#b3e3ca")
+ (skye "#b3e6db")
+ (snow "#afd9e6")
+ (blue "#b2caed")
+ (purple "#d2bdf3")
+ (pink "#f3c0e5")
+ (cherry "#fae6ef")
+ (text "#f8f9e8")
+ (subtext1 "#adc9bc")
+ (subtext0 "#96b4aa")
+ (overlay2 "#839e9a")
+ (overlay1 "#6f8788")
+ (overlay0 "#58686d")
+ (surface2 "#4a585c")
+ (surface1 "#374145")
+ (surface0 "#262f33")
+ (base "#1e2528")
+ (mantle "#191e21")
+ (crust "#171c1f")
+
+ ;; Red family
+ (red-warmer "#f6788f")
+ (red-cooler "#f48f76")
+ (red-faint "#d07073")
+
+ ;; Green family
+ (green-warmer "#dbe6af")
+ (green-cooler "#bae1af")
+ (green-faint "#b1c999")
+
+ ;; Yellow family
+ (yellow-warmer "#f6c498")
+ (yellow-cooler "#f1dc97")
+ (yellow-faint "#d5b585")
+
+ ;; Blue family
+ (blue-warmer "#afd9e6")
+ (blue-cooler "#aeb8ec")
+ (blue-faint "#98aed0")
+
+ ;; Magenta/purple family
+ (magenta "#d2bdf3")
+ (magenta-warmer "#f3c0e5")
+ (magenta-cooler "#dcb8f2")
+ (magenta-faint "#b5a0d8")
+
+ ;; Cyan family
+ (cyan "#b3e3ca")
+ (cyan-warmer "#b3e3bf")
+ (cyan-cooler "#b3e6db")
+ (cyan-faint "#97c7ae")
+
+ ;; Intense/Subtle/Nuanced backgrounds
+ (bg-red-intense "#d79d9f")
+ (bg-red-subtle "#cca8a9")
+ (bg-red-nuanced "#c5afb0")
+ (bg-green-intense "#cbe1b5")
+ (bg-green-subtle "#cbd8be")
+ (bg-green-nuanced "#cbd3c3")
+ (bg-yellow-intense "#deccb0")
+ (bg-yellow-subtle "#d5cab9")
+ (bg-yellow-nuanced "#d0c9be")
+ (bg-blue-intense "#bccce4")
+ (bg-blue-subtle "#c4cedc")
+ (bg-blue-nuanced "#c8ced8")
+ (bg-magenta-intense "#d4c8e8")
+ (bg-magenta-subtle "#d6cee2")
+ (bg-magenta-nuanced "#d7d2de")
+ (bg-cyan-intense "#b5e1ca")
+ (bg-cyan-subtle "#bed8cb")
+ (bg-cyan-nuanced "#c3d3cb")
+
+ ;; Graph colors
+ (bg-graph-red-0 "#e09497")
+ (bg-graph-red-1 "#d69ea0")
+ (bg-graph-green-0 "#cbe8ae")
+ (bg-graph-green-1 "#cbe0b6")
+ (bg-graph-yellow-0 "#e6cda8")
+ (bg-graph-yellow-1 "#ddcbb1")
+ (bg-graph-blue-0 "#b6cbea")
+ (bg-graph-blue-1 "#bdcce3")
+ (bg-graph-magenta-0 "#d3c3ed")
+ (bg-graph-magenta-1 "#d4c8e8")
+ (bg-graph-cyan-0 "#aee8ca")
+ (bg-graph-cyan-1 "#b6e0ca")
+
+ ;; Diff
+ (bg-added "#cbe1b5")
+ (bg-added-faint "#cbd8be")
+ (bg-added-refine "#cbdcba")
+ (bg-added-fringe "#cbe8ae")
+ (fg-added "#cbe3b3")
+ (fg-added-intense "#8bcd49")
+
+ (bg-changed "#deccb0")
+ (bg-changed-faint "#d5cab9")
+ (bg-changed-refine "#d9cbb5")
+ (bg-changed-fringe "#e6cda8")
+ (fg-changed "#f1dc97")
+ (fg-changed-intense "#efbd19")
+
+ (bg-removed "#d79d9f")
+ (bg-removed-faint "#cca8a9")
+ (bg-removed-refine "#d0a4a5")
+ (bg-removed-fringe "#e09497")
+ (fg-removed "#f57f82")
+ (fg-removed-intense "#ef050d")
+
+ (bg-diff-context "#4a585c")
+
+ ;; UI chrome
+ (bg-mode-line-active "#435053")
+ (fg-mode-line-active "#f8f9e8")
+ (bg-mode-line-inactive "#262f33")
+ (fg-mode-line-inactive "#adc9bc")
+ (border-mode-line-active "#cbe3b3")
+ (border-mode-line-inactive "#58686d")
+ (bg-completion "#262f33")
+ (bg-hover "#4a585c")
+ (bg-hover-secondary "#c4cedc")
+ (bg-hl-line "#4a585c")
+ (bg-paren-match "#deccb0")
+ (bg-err "#d79d9f")
+ (bg-warning "#deccb0")
+ (bg-info "#b5e1ca")
+ (bg-region "#cbe1b5"))
+ "Base palette entries for `evergarden-winter', generated by whiskers.")
+
+(evergarden-build-theme 'evergarden-winter evergarden-winter-palette-partial 'dark)
+
+(provide 'evergarden-winter-theme)
+
+;;; evergarden-winter-theme.el ends here
diff --git a/doom/.config/doom/extra-themes/evergarden.el b/doom/.config/doom/extra-themes/evergarden.el
deleted file mode 100644
index eb7db9a..0000000
--- a/doom/.config/doom/extra-themes/evergarden.el
+++ /dev/null
@@ -1,45 +0,0 @@
-;;; evergarden.el -- emacs theme for evergarden -*- lexical-binding: t; -*-
-;;; Commentary:
-
-;; this is an expansion for @koi.rip 's evergarden theme
-;; heavily W.I.P
-
-;;; Code:
-(deftheme evergarden "Cozy evergarden theme for Emacs.")
-(let ((class '((class color) (min-colors 24)))
- (red "#F57F82")
- (orange "#F7A182")
- (yellow "#F5D098")
- (lime "#DBE6AF")
- (green "#CBE3B3")
- (aqua "#B3E3CA")
- (skye "#B3E6DB")
- (snow "#AFD9E6")
- (blue "#B2CAED")
- (purple "#D2BDF3")
- (pink "#F3C0E5")
- (cherry "#FAE6EF")
- (text "#F8F9E8")
- (subtext1 "#ADC9BC")
- (subtext0 "#96B4AA")
- (overlay2 "#839E9A")
- (overlay1 "#6F8788")
- (overlay0 "#58686D")
- (surface2 "#4A585C")
- (surface1 "#374145")
- (surface0 "#2B3337")
- (base "#232A2E")
- (mantle "#1C2225")
- (crust "#171C1F"))
- (custom-theme-set-faces
- 'evergarden
- `(default ((,class :background ,base :foreground ,text)))
- `(cursor ((,class :background ,cherry)))
- `(font-lock-keyword-face ((,class :foreground ,red)))
- `(font-lock-builtin-face ((,class :foreground ,skye)))
- `(font-lock-string-face ((,class :foreground ,lime)))))
-
-(provide-theme 'evergarden)
-
-(provide 'evergarden)
-;;; evergarden.el ends here
diff --git a/doom/.config/doom/init.el b/doom/.config/doom/init.el
index 2e2c42f..5862c74 100644
--- a/doom/.config/doom/init.el
+++ b/doom/.config/doom/init.el
@@ -7,12 +7,12 @@
;;layout ; auie,ctsrnm is the superior home row
:completion
- ;;company ; the ultimate code completion backend
- (corfu +orderless) ; complete with cap(f), cape and a flying feather!
- ;;helm ; the *other* search engine for love and life
+ company ; the ultimate code completion backend
+ ;; (corfu +orderless) ; complete with cap(f), cape and a flying feather!
+ helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine for love and life
;;ivy ; a search engine for love and life
- vertico ; the search engine of the future
+ ;; vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
@@ -46,7 +46,7 @@
(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
- ;; multiple-cursors ; editing in many places at once
+ ;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
@@ -64,11 +64,11 @@
vc ; version-control and Emacs, sitting in a tree
:term
- ;;eshell ; the elisp shell that works everywhere
+ eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
;;vterm ; almost the best terminal emulation in Emacs
- ghostel ; the best terminal emulation in Emacs
+ ;; ghostel ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
@@ -82,7 +82,7 @@
;;debugger ; stepping through code, to help you add bugs
;;direnv
;;docker
- ;;editorconfig ; let someone else argue about tabs vs spaces
+ editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation
@@ -144,7 +144,7 @@
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
;;odin ; C, minus its footguns
- org ; organize your plain life in plain text
+ (org +roam) ; organize your plain life in plain text
php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;graphviz ; diagrams for confusing yourself even more
diff --git a/doom/.config/doom/packages.el b/doom/.config/doom/packages.el
index e9bffc7..6e95d1c 100644
--- a/doom/.config/doom/packages.el
+++ b/doom/.config/doom/packages.el
@@ -1,17 +1,16 @@
;;; $DOOMDIR/packages.el -*- lexical-binding: t; no-byte-compile: t -*-
(package! jabber)
(package! mood-line)
-(package! tomlparse
- :recipe (:host github :repo "johannes-mueller/tomlparse.el"))
-(package! zk4e
- :recipe (:host codeberg :repo "mcookly/zk-emacs"
- :files ("zk4e.el" "zk4e-citar.el")))
(package! try)
(package! modus-themes)
(package! ef-themes)
(package! majutsu
:recipe (:host github :repo "0WD0/majutsu"))
-(package! exwm)
-(package! edwina)
(package! minimal-dashboard)
-(package! format-all)
+(package! elcord)
+(unpin! org-roam)
+(package! org-roam-ui)
+(package! breadcrumb)
+(package! mosey)
+(package! aggressive-indent)
+(package! org-appear)