2024-01-23 21:13:36 +01:00
|
|
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
|
|
|
|
2024-03-12 07:03:29 +01:00
|
|
|
(defun org-path-find-file ()
|
|
|
|
"Open org-path in find file"
|
|
|
|
(interactive)
|
|
|
|
(doom-project-find-file +user-org-path))
|
|
|
|
|
2024-03-18 16:46:04 +01:00
|
|
|
(defun org-path (filename)
|
|
|
|
"Expand filename relative to the default org-path"
|
|
|
|
(expand-file-name filename +user-org-path))
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-03-12 07:03:29 +01:00
|
|
|
(defun my-org-inline-css-hook (exporter)
|
|
|
|
"Insert custom inline css"
|
|
|
|
(when (eq exporter 'html)
|
|
|
|
(let* ((dir (ignore-errors (file-name-directory (buffer-file-name))))
|
|
|
|
(path (concat dir "style.css"))
|
|
|
|
(fallback-style (or (null dir) (null (file-exists-p path))))
|
|
|
|
(final (if fallback-style "~/.config/doom/style.css" path))) ;; <- set your own style file path
|
|
|
|
(setq org-html-head-include-default-style t)
|
|
|
|
(setq org-html-head (concat
|
|
|
|
"<style type=\"text/css\">\n"
|
|
|
|
"<!--/*--><![CDATA[/*><!--*/\n"
|
|
|
|
(with-temp-buffer
|
|
|
|
(insert-file-contents final)
|
|
|
|
(buffer-string))
|
|
|
|
"/*]]>*/-->\n"
|
|
|
|
"</style>\n")))))
|
|
|
|
|
|
|
|
(defun my-weebery-is-always-greater ()
|
|
|
|
(let* ((banner '("EMACS "
|
|
|
|
"███▄ ▄███▓ ▒█████ ▒█████ ▓█████▄ "
|
|
|
|
"▓██▒▀█▀ ██▒▒██▒ ██▒▒██▒ ██▒▒██▀ ██▌"
|
|
|
|
"▓██ ▓██░▒██░ ██▒▒██░ ██▒░██ █▌"
|
|
|
|
"▒██ ▒██ ▒██ ██░▒██ ██░░▓█▄ ▌"
|
|
|
|
"▒██▒ ░██▒░ ████▓▒░░ ████▓▒░░▒████▓ "
|
|
|
|
"░ ▒░ ░ ░░ ▒░▒░▒░ ░ ▒░▒░▒░ ▒▒▓ ▒ "
|
|
|
|
"░ ░ ░ ░ ▒ ▒░ ░ ▒ ▒░ ░ ▒ ▒ "
|
|
|
|
"░ ░ ░ ░ ░ ▒ ░ ░ ░ ▒ ░ ░ ░ "
|
|
|
|
" ░ ░ ░ ░ ░ ░ "
|
|
|
|
" ░ "))
|
|
|
|
(longest-line (apply #'max (mapcar #'length banner))))
|
|
|
|
(put-text-property
|
|
|
|
(point)
|
|
|
|
(dolist (line banner (point))
|
|
|
|
(insert (+doom-dashboard--center
|
|
|
|
+doom-dashboard--width
|
|
|
|
(concat line (make-string (max 0 (- longest-line (length line))) 32)))
|
|
|
|
"\n"))
|
|
|
|
'face 'doom-dashboard-banner)))
|
|
|
|
|
2024-02-28 19:57:03 +01:00
|
|
|
(map! "C-M-+" #'doom/increase-font-size)
|
2024-03-12 07:03:29 +01:00
|
|
|
|
|
|
|
;; NOTE: Does not work in org-mode src blocks
|
2024-02-28 19:57:03 +01:00
|
|
|
(map! "C-#" #'comment-line)
|
2024-03-12 07:03:29 +01:00
|
|
|
|
|
|
|
(map! :leader
|
|
|
|
:map doom-leader-file-map
|
2024-03-18 10:03:13 +01:00
|
|
|
:desc "Find org files" "f o" #'org-path-find-file)
|
|
|
|
|
|
|
|
(map! :leader
|
|
|
|
:map doom-leader-open-map
|
|
|
|
:desc "Open elfeed" "o e" #'elfeed
|
|
|
|
:desc "Open org drill" "o r" #'org-drill)
|
|
|
|
|
|
|
|
(map! :localleader
|
|
|
|
:after org
|
|
|
|
:map org-mode-map
|
|
|
|
:desc "View habit stats" "g s" #'org-habit-stats-view-habit-at-point)
|
2024-02-28 19:57:03 +01:00
|
|
|
|
2024-02-07 17:08:51 +01:00
|
|
|
;; Basic User Settings
|
2024-01-28 09:35:19 +01:00
|
|
|
(setq user-full-name "Jonathan Jenne"
|
|
|
|
user-mail-address "johnnie@posteo.de")
|
2024-01-23 21:13:36 +01:00
|
|
|
|
2024-02-07 17:08:51 +01:00
|
|
|
;; Default Shell
|
|
|
|
;; Useful if default system shell is not bash
|
2024-02-02 09:28:35 +01:00
|
|
|
(setq shell-file-name (executable-find "bash"))
|
2024-01-23 21:13:36 +01:00
|
|
|
|
2024-03-11 11:07:35 +01:00
|
|
|
;; This is where all org files are sourced from
|
|
|
|
(setq +user-org-path "~/Notes/Org")
|
|
|
|
|
2024-03-11 06:21:39 +01:00
|
|
|
;; Display Line numbers
|
|
|
|
(setq display-line-numbers-type t)
|
|
|
|
|
2024-03-03 11:48:20 +01:00
|
|
|
;; Fonts
|
|
|
|
(setq doom-font
|
|
|
|
(font-spec :family "IBM Plex Mono" :size 18 :weight 'medium))
|
|
|
|
(setq doom-variable-pitch-font
|
|
|
|
(font-spec :family "IBM Plex Serif" :size 18 :weight 'medium))
|
|
|
|
(setq variable-pitch
|
|
|
|
(font-spec :family "IBM Plex Serif" :size 18 :weight 'medium))
|
|
|
|
|
2024-03-11 06:21:39 +01:00
|
|
|
;; Dashboard
|
|
|
|
(setq +doom-dashboard-ascii-banner-fn #'my-weebery-is-always-greater)
|
|
|
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
|
|
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
|
|
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-loaded)
|
|
|
|
|
|
|
|
;; Themes
|
2024-02-02 09:28:35 +01:00
|
|
|
|
2024-03-11 11:07:35 +01:00
|
|
|
(use-package! org
|
|
|
|
:config
|
|
|
|
(setq ;; General
|
|
|
|
org-directory +user-org-path
|
2024-03-12 07:03:29 +01:00
|
|
|
org-log-into-drawer "LOGBOOK"
|
2024-03-11 11:07:35 +01:00
|
|
|
org-src-tab-acts-natively t
|
|
|
|
|
|
|
|
;; Org Export
|
|
|
|
org-export-exclude-tags '("toc")
|
|
|
|
|
|
|
|
;; Org Agenda
|
|
|
|
org-agenda-show-all-dates t
|
2024-03-18 16:46:04 +01:00
|
|
|
org-agenda-span 2
|
2024-03-11 11:07:35 +01:00
|
|
|
org-agenda-start-day "+0d"
|
|
|
|
org-agenda-tag-filter-preset '("-drill")
|
|
|
|
org-agenda-time-grid
|
|
|
|
'((daily today require-timed)
|
|
|
|
(800 1000 1200 1400 1600 1800 2000)
|
|
|
|
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
|
|
|
|
org-agenda-current-time-string
|
|
|
|
"◀── now ──────────────────────────────────────────────── \\o/"
|
|
|
|
org-agenda-block-separator ?─
|
|
|
|
;; Consider all org files part of the org-agenda
|
|
|
|
org-agenda-files (list +user-org-path)
|
|
|
|
;; org-agenda-spillover-skip-function '(org-agenda-skip-entry-if 'todo 'done)
|
|
|
|
|
|
|
|
;; Org Todo
|
|
|
|
org-todo-keywords
|
2024-03-18 16:46:04 +01:00
|
|
|
'((sequence "TODO(t)" "DOING(g)" "|" "DONE(d)" "CANCEL(c)")
|
2024-03-11 11:07:35 +01:00
|
|
|
(sequence "THIS(T)" "EXAMPLE"))
|
|
|
|
|
|
|
|
;; Org Capture
|
|
|
|
+org-capture-notes-file (org-path "Notes.org")
|
|
|
|
+org-capture-todo-file (org-path "Todo.org")
|
|
|
|
+org-capture-journal-file (org-path "Journal.org")
|
|
|
|
+org-capture-cooking-file (org-path "Cooking.org")
|
|
|
|
+org-capture-nepali-file (org-path "Nepali.org")
|
|
|
|
org-capture-templates
|
|
|
|
'(("t" "Personal Todo" entry
|
2024-03-18 10:03:13 +01:00
|
|
|
(file+headline +org-capture-todo-file "Todo")
|
2024-03-11 11:07:35 +01:00
|
|
|
"* TODO %?\n" :prepend t)
|
|
|
|
|
|
|
|
("r" "Recipe" entry
|
2024-02-28 19:57:03 +01:00
|
|
|
(file+headline +org-capture-cooking-file "Unsorted")
|
|
|
|
"* NEVERMADE %?
|
|
|
|
:PROPERTIES:
|
|
|
|
:Author:
|
|
|
|
:Source:
|
|
|
|
:Sent_by:
|
|
|
|
:Yield:
|
|
|
|
:Prep_Time:
|
|
|
|
:Cook_Time:
|
|
|
|
:Total_Time:
|
|
|
|
:Cost:
|
|
|
|
:Description:
|
|
|
|
:URL:
|
|
|
|
:Added: %u
|
|
|
|
:END:
|
|
|
|
|
|
|
|
- [ ] Ingredient 1
|
|
|
|
|
|
|
|
|
|
|
|
1. First Step")
|
|
|
|
|
2024-03-11 11:07:35 +01:00
|
|
|
("n" "Nepali")
|
|
|
|
|
|
|
|
("nw" "Nepali Word" entry
|
|
|
|
(file+headline +org-capture-nepali-file "Nepali Words")
|
|
|
|
"* %^{Nepali Word} :drill:\n%\\1\n** Answer\n%^{Translation}" :prepend t :immediate-finish t)
|
|
|
|
|
|
|
|
("j" "Daily Journal" entry
|
|
|
|
(file+olp+datetree +org-capture-journal-file)
|
|
|
|
"* %U %?\n" :prepend t)))
|
|
|
|
|
|
|
|
:hook (org-after-todo-state-change . org-habit-stats-update-properties)
|
|
|
|
:init
|
|
|
|
(add-to-list 'org-modules 'org-habit)
|
|
|
|
(add-hook 'org-export-before-processing-functions 'my-org-inline-css-hook))
|
2024-02-07 17:08:51 +01:00
|
|
|
|
2024-03-11 06:21:39 +01:00
|
|
|
(after! doom-modeline
|
|
|
|
(setq doom-modeline-battery t)
|
|
|
|
(setq doom-modeline-major-mode-icon t))
|
|
|
|
|
|
|
|
(add-hook 'doom-after-init-hook #'display-battery-mode)
|
|
|
|
(add-hook 'doom-after-init-hook #'display-time-mode)
|
|
|
|
|
2024-03-12 07:03:29 +01:00
|
|
|
(use-package! drag-stuff
|
|
|
|
:init (drag-stuff-global-mode t))
|
2024-03-11 06:21:39 +01:00
|
|
|
|
2024-03-12 07:03:29 +01:00
|
|
|
(use-package! elfeed
|
|
|
|
:config
|
|
|
|
(setq elfeed-feeds
|
|
|
|
'("https://www.giessen.de/media/rss/Presse.xml"
|
|
|
|
"https://adactio.com/journal/rss"
|
|
|
|
"https://andregarzia.com/feeds/all.atom.xml"
|
|
|
|
"https://ar.al/index.xml"
|
|
|
|
"https://archlinux.org/feeds/news/"
|
|
|
|
"https://ashfurrow.com//feed.xml"
|
|
|
|
"https://bachrauf.org/feed/"
|
|
|
|
"https://beko.famkos.net/feed/"
|
|
|
|
"https://blog.elementary.io/feed.xml"
|
|
|
|
"https://blog.gls.de/feed/"
|
|
|
|
"https://dasklima.podigee.io/feed/mp3"
|
|
|
|
"https://fed.brid.gy/web/inhji.de/feed?format=rss"
|
|
|
|
"https://forgefriends.org/index.xml"
|
|
|
|
"https://forgejo.org/rss.xml"
|
|
|
|
"https://giessen-direkt.de/giessen/de/flexPrjList/54365/feed"
|
2024-03-18 10:03:13 +01:00
|
|
|
("https://github.com/InfiniTimeOrg/InfiniTime/releases.atom" '(github release))
|
|
|
|
("https://github.com/actualbudget/actual/releases.atom" '(github release))
|
|
|
|
("https://github.com/ceciliamay/obsidianmd-theme-primary/releases.atom" '(github release))
|
|
|
|
("https://github.com/dani-garcia/vaultwarden/releases.atom" '(github release))
|
|
|
|
("https://github.com/extrawurst/gitui/releases.atom" '(github release))
|
|
|
|
("https://github.com/microg/GmsCore/releases.atom" '(github release))
|
|
|
|
("https://github.com/noatpad/obsidian-banners/releases.atom" '(github release))
|
|
|
|
("https://github.com/superseriousbusiness/gotosocial/releases.atom" '(github release))
|
2024-03-12 07:03:29 +01:00
|
|
|
"https://grimgrains.com/links/rss.xml"
|
|
|
|
"https://jlelse.blog/.rss"
|
|
|
|
"https://katapult-magazin.de/feed/rss"
|
|
|
|
"https://katja-diehl.de/feed/"
|
|
|
|
"https://kevquirk.com/feed"
|
|
|
|
"https://liamcooke.com/feed.xml"
|
|
|
|
"https://maudb.gitlab.io/dok/rss.xml"
|
|
|
|
"https://miniflux.app/feed.xml"
|
|
|
|
"https://mntre.com/reform_md.atom"
|
|
|
|
"https://nesslabs.com/feed"
|
|
|
|
"https://newsfeed.zeit.de/serie/die-kaenguru-comics"
|
|
|
|
"https://nicolevanderhoeven.com/index.xml"
|
|
|
|
"https://noyb.eu/en/rss"
|
2024-03-18 10:03:13 +01:00
|
|
|
"https://nullprogram.com/feed/"
|
2024-03-12 07:03:29 +01:00
|
|
|
"https://obsidian.md/feed.xml"
|
|
|
|
"https://ohhelloana.blog/feed.xml"
|
|
|
|
"https://pluralistic.net/feed/"
|
|
|
|
"https://shkspr.mobi/blog/feed/"
|
|
|
|
"https://smallstar.space/feed/"
|
|
|
|
"https://snikket.org/blog/index.xml"
|
|
|
|
"https://social.prepedia.org/@FediNINA_Giessen.rss"
|
|
|
|
"https://solar.lowtechmagazine.com/posts/index.xml"
|
|
|
|
"https://tarnkappe.info/feed"
|
|
|
|
"https://theoatmeal.com/feed/rss"
|
|
|
|
"https://victoria.dev/atom.xml"
|
|
|
|
"https://warandpeas.com/feed/"
|
|
|
|
"https://warnung.bund.de/api31/mowas/rss/065310000000.rss"
|
|
|
|
"https://webcomicname.com/rss"
|
|
|
|
"https://webdevlaw.uk/feed/"
|
|
|
|
"https://www.commitstrip.com/en/feed/"
|
|
|
|
"https://www.drugsandwires.fail/feed/"
|
|
|
|
"https://www.kuketz-blog.de/category/artikel/feed/"
|
|
|
|
"https://www.kuketz-blog.de/category/microblog/feed/"
|
|
|
|
"https://www.mein-nepal.de/feed/"
|
|
|
|
"https://www.oglaf.com/feeds/rss/"
|
|
|
|
"https://www.piratenpartei-hessen.de/feed/"
|
|
|
|
"https://www.schoenescheisse.de/feed/"
|
|
|
|
"https://www.smbc-comics.com/comic/rss"
|
|
|
|
"https://www.tomorrow.one/de-DE/feed.xml"
|
|
|
|
"https://www.volksverpetzer.de/feed/"
|
|
|
|
"https://www.wetell.de/feed/"
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UC0e3QhIYukixgh5VVpKHH9Q" youtube)
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCCJ-NJtqLQRxuaxHZA9q6zg" youtube)
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UClZbO3wehSIsPUKLx_X5caw" youtube)
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCtUbO6rBht0daVIOGML3c8w" youtube)
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCyNtlmLB73-7gtlBz00XOQQ" youtube)
|
|
|
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCzg5UMJ62uoKHTkq5bgkp5g" youtube)
|
|
|
|
"https://zerforschung.org/index.xml"
|
|
|
|
)))
|
2024-03-18 10:03:13 +01:00
|
|
|
|
|
|
|
(use-package! heaven-and-hell
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(setq heaven-and-hell-theme-type 'dark ;; Omit to use light by default
|
|
|
|
heaven-and-hell-themes
|
|
|
|
'((light . doom-nord-light)
|
|
|
|
(dark . doom-nord)) ;; Themes can be the list: (dark . (tsdh-dark wombat))
|
|
|
|
heaven-and-hell-load-theme-no-confirm t)
|
|
|
|
:hook (after-init . heaven-and-hell-init-hook)
|
|
|
|
:bind (("<f6>" . heaven-and-hell-toggle-theme)))
|
|
|
|
|
|
|
|
(use-package! hl-todo
|
|
|
|
:config
|
|
|
|
(setq hl-todo-keyword-faces
|
|
|
|
'(("TODO" warning bold)
|
|
|
|
("EXAMPLE" font-lock-keyword-face bold)
|
|
|
|
("HACK" font-lock-constant-face bold)
|
|
|
|
("DEPRECATED" font-lock-doc-face bold)
|
|
|
|
("NOTE" success bold)
|
|
|
|
("BUG" error bold)
|
|
|
|
("THIS" font-lock-constant-face bold)))
|
|
|
|
:hook (org-mode . hl-todo-mode))
|
|
|
|
|
|
|
|
(use-package! nov
|
|
|
|
:mode ("\\.epub\\'" . nov-mode)
|
|
|
|
:config
|
|
|
|
(setq nov-text-width 70))
|
|
|
|
|
|
|
|
(add-hook! 'nov-mode-hook '(olivetti-mode))
|
|
|
|
|
|
|
|
(use-package! olivetti
|
|
|
|
:init
|
|
|
|
(add-hook! 'nov-mode-hook 'olivetti-mode)
|
|
|
|
(add-hook! 'org-mode-hook
|
|
|
|
'(olivetti-mode
|
|
|
|
(lambda () (display-line-numbers-mode -1)))))
|
|
|
|
|
|
|
|
;; (after! olivetti (setq olivetti-body-width 70))
|
|
|
|
;; (add-hook! 'org-mode-hook '(olivetti-mode (lambda () (display-line-numbers-mode -1))))
|
|
|
|
|
|
|
|
(use-package! org-auto-tangle
|
|
|
|
:defer t
|
|
|
|
:config (setq org-auto-tangle-default nil)
|
|
|
|
:hook (org-mode . org-auto-tangle-mode))
|
|
|
|
|
2024-03-18 16:46:04 +01:00
|
|
|
;; URL of the caldav server
|
|
|
|
(setq org-caldav-url "https://my.green-cloud.at/remote.php/dav/calendars/johnnie@posteo.de")
|
|
|
|
|
|
|
|
;; calendar ID on server
|
|
|
|
(setq org-caldav-calendar-id "persnlich")
|
|
|
|
|
|
|
|
;; Org filename where new entries from calendar stored
|
|
|
|
(setq org-caldav-inbox (org-path "Calendar.org"))
|
|
|
|
|
|
|
|
;; Additional Org files to check for calendar events
|
|
|
|
(setq org-caldav-files nil)
|
|
|
|
|
|
|
|
;; Usually a good idea to set the timezone manually
|
|
|
|
(setq org-icalendar-timezone "Europe/Berlin")
|
|
|
|
|
2024-03-18 10:03:13 +01:00
|
|
|
(after! org-drill
|
|
|
|
(setq org-drill-scope 'agenda))
|
|
|
|
|
|
|
|
(after! org-noter
|
|
|
|
(setq org-noter-notes-search-path '("~/Notes/Org"))
|
|
|
|
(setq org-noter-always-create-frame nil)
|
|
|
|
(setq org-noter-doc-split-fraction '(0.75 . 0.75))
|
|
|
|
(setq org-noter-default-notes-file-names '()))
|
|
|
|
|
|
|
|
(use-package! org-roam
|
|
|
|
:config (setq org-roam-directory "~/Notes/Org/Roam"
|
|
|
|
org-roam-dailies-directory "Daily"))
|
|
|
|
|
|
|
|
;; (after! org-roam
|
|
|
|
;; (setq org-roam-directory "~/Notes/Org/Roam")
|
|
|
|
;; (setq org-roam-dailies-directory "Daily"))
|
2024-03-18 16:46:04 +01:00
|
|
|
|
|
|
|
(use-package! org-super-agenda
|
|
|
|
:config
|
|
|
|
(setq org-super-agenda-groups
|
|
|
|
'(;; Each group has an implicit boolean OR operator between its selectors.
|
|
|
|
(:name "Important"
|
|
|
|
;; Single arguments given alone
|
|
|
|
;;:tag "bills"
|
|
|
|
:priority "A")
|
|
|
|
(:name "Habits"
|
|
|
|
:habit t)
|
|
|
|
|
|
|
|
(:name "Appointments"
|
|
|
|
:file-path "Calendar\.org")
|
|
|
|
|
|
|
|
(:name "Shopping"
|
|
|
|
:tag "shopping")
|
|
|
|
;; Set order of multiple groups at once
|
|
|
|
(:priority<= "B"
|
|
|
|
;; Show this section after "Today" and "Important", because
|
|
|
|
;; their order is unspecified, defaulting to 0. Sections
|
|
|
|
;; are displayed lowest-number-first.
|
|
|
|
:order 1)
|
|
|
|
;; After the last group, the agenda will display items that didn't
|
|
|
|
;; match any of these groups, with the default order position of 99
|
|
|
|
))
|
|
|
|
:init
|
|
|
|
(org-super-agenda-mode t))
|