From 6b4299e1a2063181da25f1a0d8df2301e1863176 Mon Sep 17 00:00:00 2001 From: Magdalena Szweda Date: Fri, 18 Sep 2026 20:01:57 +0200 Subject: so so much stuff --- doom/.config/doom/+colemak.el | 5 +- doom/.config/doom/+dashboard.el | 13 +- doom/.config/doom/+email.el | 29 +- doom/.config/doom/+emms.el | 41 +- doom/.config/doom/+eww.el | 66 +++ doom/.config/doom/+format.el | 17 +- doom/.config/doom/+git.el | 1 + doom/.config/doom/+indent.el | 4 + doom/.config/doom/+jabber.el | 5 +- doom/.config/doom/+lsp.el | 3 - doom/.config/doom/+maps.el | 5 +- doom/.config/doom/+mosey.el | 10 + doom/.config/doom/+org.el | 104 +++++ doom/.config/doom/+splash.el | 58 +++ doom/.config/doom/+ui.el | 36 +- doom/.config/doom/+zk.el | 19 - doom/.config/doom/config.el | 8 +- doom/.config/doom/custom.el | 20 +- .../2026-09-18-213348_1916x1052_scrot.png | Bin 0 -> 166487 bytes .../.config/doom/extra-themes/evergarden-common.el | 338 ++++++++++++++++ .../doom/extra-themes/evergarden-fall-theme.el | 187 +++++++++ .../doom/extra-themes/evergarden-spring-theme.el | 187 +++++++++ .../doom/extra-themes/evergarden-summer-theme.el | 187 +++++++++ doom/.config/doom/extra-themes/evergarden-theme.el | 445 +++++++++++++++++++++ .../doom/extra-themes/evergarden-winter-theme.el | 187 +++++++++ doom/.config/doom/extra-themes/evergarden.el | 45 --- doom/.config/doom/init.el | 18 +- doom/.config/doom/packages.el | 15 +- 28 files changed, 1921 insertions(+), 132 deletions(-) create mode 100644 doom/.config/doom/+eww.el create mode 100644 doom/.config/doom/+indent.el delete mode 100644 doom/.config/doom/+lsp.el create mode 100644 doom/.config/doom/+mosey.el create mode 100644 doom/.config/doom/+org.el create mode 100644 doom/.config/doom/+splash.el delete mode 100644 doom/.config/doom/+zk.el create mode 100644 doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.png create mode 100644 doom/.config/doom/extra-themes/evergarden-common.el create mode 100644 doom/.config/doom/extra-themes/evergarden-fall-theme.el create mode 100644 doom/.config/doom/extra-themes/evergarden-spring-theme.el create mode 100644 doom/.config/doom/extra-themes/evergarden-summer-theme.el create mode 100644 doom/.config/doom/extra-themes/evergarden-theme.el create mode 100644 doom/.config/doom/extra-themes/evergarden-winter-theme.el delete mode 100644 doom/.config/doom/extra-themes/evergarden.el (limited to 'doom') 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 Binary files /dev/null and b/doom/.config/doom/extra-themes/2026-09-18-213348_1916x1052_scrot.png 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) -- cgit v1.2.3