(beacon-mode 1) (map! :leader (:prefix ("b". "buffer") :desc "List bookmarks" "L" #'list-bookmarks :desc "Save current bookmarks to bookmark file" "w" #'bookmark-save)) (global-auto-revert-mode 1) (setq global-auto-revert-non-file-buffers t) (evil-define-key 'normal ibuffer-mode-map (kbd "f c") 'ibuffer-filter-by-content (kbd "f d") 'ibuffer-filter-by-directory (kbd "f f") 'ibuffer-filter-by-filename (kbd "f m") 'ibuffer-filter-by-mode (kbd "f n") 'ibuffer-filter-by-name (kbd "f x") 'ibuffer-filter-disable (kbd "g h") 'ibuffer-do-kill-lines (kbd "g H") 'ibuffer-update) ;; https://stackoverflow.com/questions/9547912/emacs-calendar-show-more-than-3-months (defun dt/year-calendar (&optional year) (interactive) (require 'calendar) (let* ( (current-year (number-to-string (nth 5 (decode-time (current-time))))) (month 0) (year (if year year (string-to-number (format-time-string "%Y" (current-time)))))) (switch-to-buffer (get-buffer-create calendar-buffer)) (when (not (eq major-mode 'calendar-mode)) (calendar-mode)) (setq displayed-month month) (setq displayed-year year) (setq buffer-read-only nil) (erase-buffer) ;; horizontal rows (dotimes (j 4) ;; vertical columns (dotimes (i 3) (calendar-generate-month (setq month (+ month 1)) year ;; indentation / spacing between months (+ 5 (* 25 i)))) (goto-char (point-max)) (insert (make-string (- 10 (count-lines (point-min) (point-max))) ?\n)) (widen) (goto-char (point-max)) (narrow-to-region (point-max) (point-max))) (widen) (goto-char (point-min)) (setq buffer-read-only t))) (defun dt/scroll-year-calendar-forward (&optional arg event) "Scroll the yearly calendar by year in a forward direction." (interactive (list (prefix-numeric-value current-prefix-arg) last-nonmenu-event)) (unless arg (setq arg 0)) (save-selected-window (if (setq event (event-start event)) (select-window (posn-window event))) (unless (zerop arg) (let* ( (year (+ displayed-year arg))) (dt/year-calendar year))) (goto-char (point-min)) (run-hooks 'calendar-move-hook))) (defun dt/scroll-year-calendar-backward (&optional arg event) "Scroll the yearly calendar by year in a backward direction." (interactive (list (prefix-numeric-value current-prefix-arg) last-nonmenu-event)) (dt/scroll-year-calendar-forward (- (or arg 1)) event)) (map! :leader :desc "Scroll year calendar backward" "" #'dt/scroll-year-calendar-backward :desc "Scroll year calendar forward" "" #'dt/scroll-year-calendar-forward) (defalias 'year-calendar 'dt/year-calendar) (use-package! calfw) (use-package! calfw-org) (setq centaur-tabs-set-bar 'over centaur-tabs-set-icons t centaur-tabs-gray-out-icons 'buffer centaur-tabs-height 24 centaur-tabs-set-modified-marker t centaur-tabs-style "bar" centaur-tabs-modified-marker "•") (map! :leader :desc "Toggle tabs globally" "t c" #'centaur-tabs-mode :desc "Toggle tabs local display" "t C" #'centaur-tabs-local-mode) (evil-define-key 'normal centaur-tabs-mode-map (kbd "g ") 'centaur-tabs-forward ; default Doom binding is 'g t' (kbd "g ") 'centaur-tabs-backward ; default Doom binding is 'g T' (kbd "g ") 'centaur-tabs-forward-group (kbd "g ") 'centaur-tabs-backward-group) (map! :leader (:prefix ("c h" . "Help info from Clippy") :desc "Clippy describes function under point" "f" #'clippy-describe-function :desc "Clippy describes variable under point" "v" #'clippy-describe-variable)) (map! :leader (:prefix ("d" . "dired") :desc "Open dired" "d" #'dired :desc "Dired jump to current" "j" #'dired-jump) (:after dired (:map dired-mode-map :desc "Peep-dired image previews" "d p" #'peep-dired :desc "Dired view file" "d v" #'dired-view-file))) (evil-define-key 'normal dired-mode-map (kbd "M-RET") 'dired-display-file (kbd "h") 'dired-up-directory (kbd "l") 'dired-open-file ; use dired-find-file instead of dired-open. (kbd "m") 'dired-mark (kbd "t") 'dired-toggle-marks (kbd "u") 'dired-unmark (kbd "C") 'dired-do-copy (kbd "D") 'dired-do-delete (kbd "J") 'dired-goto-file (kbd "M") 'dired-do-chmod (kbd "O") 'dired-do-chown (kbd "P") 'dired-do-print (kbd "R") 'dired-do-rename (kbd "T") 'dired-do-touch (kbd "Y") 'dired-copy-filenamecopy-filename-as-kill ; copies filename to kill ring. (kbd "Z") 'dired-do-compress (kbd "+") 'dired-create-directory (kbd "-") 'dired-do-kill-lines (kbd "% l") 'dired-downcase (kbd "% m") 'dired-mark-files-regexp (kbd "% u") 'dired-upcase (kbd "* %") 'dired-mark-files-regexp (kbd "* .") 'dired-mark-extension (kbd "* /") 'dired-mark-directories (kbd "; d") 'epa-dired-do-decrypt (kbd "; e") 'epa-dired-do-encrypt) ;; Get file icons in dired (add-hook 'dired-mode-hook 'all-the-icons-dired-mode) ;; With dired-open plugin, you can launch external programs for certain extensions ;; For example, I set all .png files to open in 'sxiv' and all .mp4 files to open in 'mpv' (setq dired-open-extensions '(("gif" . "sxiv") ("jpg" . "sxiv") ("png" . "sxiv") ("mkv" . "mpv") ("mp4" . "mpv"))) (evil-define-key 'normal peep-dired-mode-map (kbd "j") 'peep-dired-next-file (kbd "k") 'peep-dired-prev-file) (add-hook 'peep-dired-hook 'evil-normalize-keymaps) (setq delete-by-moving-to-trash t trash-directory "~/.local/share/Trash/files/") (setq doom-theme 'doom-one) (map! :leader :desc "Load new theme" "h t" #'counsel-load-theme) (ednc-mode 1) (defun show-notification-in-buffer (old new) (let ((name (format "Notification %d" (ednc-notification-id (or old new))))) (with-current-buffer (get-buffer-create name) (if new (let ((inhibit-read-only t)) (if old (erase-buffer) (ednc-view-mode)) (insert (ednc-format-notification new t)) (pop-to-buffer (current-buffer))) (kill-buffer))))) (add-hook 'ednc-notification-presentation-functions #'show-notification-in-buffer) (evil-define-key 'normal ednc-view-mode-map (kbd "d") 'ednc-dismiss-notification (kbd "RET") 'ednc-invoke-action (kbd "e") 'ednc-toggle-expanded-view) (setq elfeed-goodies/entry-pane-size 0.5) (evil-define-key 'normal elfeed-show-mode-map (kbd "J") 'elfeed-goodies/split-show-next (kbd "K") 'elfeed-goodies/split-show-prev) (evil-define-key 'normal elfeed-search-mode-map (kbd "J") 'elfeed-goodies/split-show-next (kbd "K") 'elfeed-goodies/split-show-prev) (setq elfeed-feeds (quote (("https://www.reddit.com/r/linux.rss" reddit linux) ("https://www.reddit.com/r/commandline.rss" reddit commandline) ("https://www.reddit.com/r/distrotube.rss" reddit distrotube) ("https://www.reddit.com/r/emacs.rss" reddit emacs) ("https://www.gamingonlinux.com/article_rss.php" gaming linux) ("https://hackaday.com/blog/feed/" hackaday linux) ("https://opensource.com/feed" opensource linux) ("https://linux.softpedia.com/backend.xml" softpedia linux) ("https://itsfoss.com/feed/" itsfoss linux) ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) ("https://www.phoronix.com/rss.php" phoronix linux) ("http://feeds.feedburner.com/d0od" omgubuntu linux) ("https://www.computerworld.com/index.rss" computerworld linux) ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) ("https://betanews.com/feed" betanews linux) ("http://lxer.com/module/newswire/headlines.rss" lxer linux)))) (emms-all) (emms-default-players) (emms-mode-line 1) (emms-playing-time 1) (setq emms-source-file-default-directory "~/Music/" emms-playlist-buffer-name "*Music*" emms-info-asynchronously t emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find) (map! :leader (:prefix ("a" . "EMMS audio player") :desc "Go to emms playlist" "a" #'emms-playlist-mode-go :desc "Emms pause track" "x" #'emms-pause :desc "Emms stop track" "s" #'emms-stop :desc "Emms play previous track" "p" #'emms-previous :desc "Emms play next track" "n" #'emms-next)) (use-package emojify :hook (after-init . global-emojify-mode)) (map! :leader (:prefix ("e". "evaluate/ERC/EWW") :desc "Launch ERC with TLS connection" "E" #'erc-tls)) (setq erc-prompt (lambda () (concat "[" (buffer-name) "]")) erc-server "irc.libera.chat" erc-nick "distrotube" erc-user-full-name "Derek Taylor" erc-track-shorten-start 24 erc-autojoin-channels-alist '(("irc.libera.chat" "#archlinux" "#linux" "#emacs")) erc-kill-buffer-on-part t erc-fill-column 100 erc-fill-function 'erc-fill-static erc-fill-static-center 20 ;; erc-auto-query 'bury ) (map! :leader (:prefix ("e". "evaluate/ERC/EWW") :desc "Evaluate elisp in buffer" "b" #'eval-buffer :desc "Evaluate defun" "d" #'eval-defun :desc "Evaluate elisp expression" "e" #'eval-expression :desc "Evaluate last sexpression" "l" #'eval-last-sexp :desc "Evaluate elisp in region" "r" #'eval-region)) (setq browse-url-browser-function 'eww-browse-url) (map! :leader :desc "Search web for text between BEG/END" "s w" #'eww-search-words (:prefix ("e" . "evaluate/ERC/EWW") :desc "Eww web browser" "w" #'eww :desc "Eww reload page" "R" #'eww-reload)) (autoload 'exwm-enable "exwm-config.el") (setq doom-font (font-spec :family "JetBrains Mono" :size 15) doom-variable-pitch-font (font-spec :family "Ubuntu" :size 15) doom-big-font (font-spec :family "JetBrains Mono" :size 24)) (after! doom-themes (setq doom-themes-enable-bold t doom-themes-enable-italic t)) (custom-set-faces! '(font-lock-comment-face :slant italic) '(font-lock-keyword-face :slant italic)) (defun dt/insert-todays-date (prefix) (interactive "P") (let ((format (cond ((not prefix) "%A, %B %d, %Y") ((equal prefix '(4)) "%m-%d-%Y") ((equal prefix '(16)) "%Y-%m-%d")))) (insert (format-time-string format)))) (require 'calendar) (defun dt/insert-any-date (date) "Insert DATE using the current locale." (interactive (list (calendar-read-date))) (insert (calendar-date-string date))) (map! :leader (:prefix ("i d" . "Insert date") :desc "Insert any date" "a" #'dt/insert-any-date :desc "Insert todays date" "t" #'dt/insert-todays-date)) (setq ivy-posframe-display-functions-alist '((swiper . ivy-posframe-display-at-point) (complete-symbol . ivy-posframe-display-at-point) (counsel-M-x . ivy-display-function-fallback) (counsel-esh-history . ivy-posframe-display-at-window-center) (counsel-describe-function . ivy-display-function-fallback) (counsel-describe-variable . ivy-display-function-fallback) (counsel-find-file . ivy-display-function-fallback) (counsel-recentf . ivy-display-function-fallback) (counsel-register . ivy-posframe-display-at-frame-bottom-window-center) (dmenu . ivy-posframe-display-at-frame-top-center) (nil . ivy-posframe-display)) ivy-posframe-height-alist '((swiper . 20) (dmenu . 20) (t . 10))) (ivy-posframe-mode 1) ; 1 enables posframe-mode, 0 disables it. (map! :leader (:prefix ("v" . "Ivy") :desc "Ivy push view" "v p" #'ivy-push-view :desc "Ivy switch view" "v s" #'ivy-switch-view)) (setq display-line-numbers-type t) (map! :leader :desc "Comment or uncomment lines" "TAB TAB" #'comment-line (:prefix ("t" . "toggle") :desc "Toggle line numbers" "l" #'doom/toggle-line-numbers :desc "Toggle line highlight in frame" "h" #'hl-line-mode :desc "Toggle line highlight globally" "H" #'global-hl-line-mode :desc "Toggle truncate lines" "t" #'toggle-truncate-lines)) (custom-set-faces '(markdown-header-face ((t (:inherit font-lock-function-name-face :weight bold :family "variable-pitch")))) '(markdown-header-face-1 ((t (:inherit markdown-header-face :height 1.7)))) '(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.6)))) '(markdown-header-face-3 ((t (:inherit markdown-header-face :height 1.5)))) '(markdown-header-face-4 ((t (:inherit markdown-header-face :height 1.4)))) '(markdown-header-face-5 ((t (:inherit markdown-header-face :height 1.3)))) '(markdown-header-face-6 ((t (:inherit markdown-header-face :height 1.2))))) (setq minimap-window-location 'right) (map! :leader (:prefix ("t" . "toggle") :desc "Toggle minimap-mode" "m" #'minimap-mode)) (set-face-attribute 'mode-line nil :font "Ubuntu Mono-13") (setq doom-modeline-height 30 ;; sets modeline height doom-modeline-bar-width 5 ;; sets right bar width doom-modeline-persp-name t ;; adds perspective name to modeline doom-modeline-persp-icon t) ;; adds folder icon next to persp name (xterm-mouse-mode 1) (after! neotree (setq neo-smart-open t neo-window-fixed-size nil)) (after! doom-themes (setq doom-neotree-enable-variable-pitch t)) (map! :leader :desc "Toggle neotree file viewer" "t n" #'neotree-toggle :desc "Open directory in neotree" "d n" #'neotree-dir) (map! :leader (:prefix ("=" . "open file") :desc "Edit agenda file" "=" #'(lambda () (interactive) (find-file "~/.config/doom/start.org")) :desc "Edit agenda file" "a" #'(lambda () (interactive) (find-file "~/nc/Org/agenda.org")) :desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org")) :desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el")) :desc "Edit doom packages.el" "p" #'(lambda () (interactive) (find-file "~/.config/doom/packages.el")))) (map! :leader (:prefix ("= e" . "open eshell files") :desc "Edit eshell aliases" "a" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/aliases")) :desc "Edit eshell profile" "p" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/profile")))) (map! :leader :desc "Org babel tangle" "m B" #'org-babel-tangle) (after! org (setq org-directory "~/nc/Org/" org-default-notes-file (expand-file-name "notes.org" org-directory) org-ellipsis " ▼ " org-superstar-headline-bullets-list '("◉" "●" "○" "◆" "●" "○" "◆") org-superstar-itembullet-alist '((?+ . ?➤) (?- . ?✦)) ; changes +/- symbols in item lists org-log-done 'time org-hide-emphasis-markers t ;; ex. of org-link-abbrev-alist in action ;; [[arch-wiki:Name_of_Page][Description]] org-link-abbrev-alist ; This overwrites the default Doom org-link-abbrev-list '(("google" . "http://www.google.com/search?q=") ("arch-wiki" . "https://wiki.archlinux.org/index.php/") ("ddg" . "https://duckduckgo.com/?q=") ("wiki" . "https://en.wikipedia.org/wiki/")) org-table-convert-region-max-lines 20000 org-todo-keywords ; This overwrites the default Doom org-todo-keywords '((sequence "TODO(t)" ; A task that is ready to be tackled "BLOG(b)" ; Blog writing assignments "GYM(g)" ; Things to accomplish at the gym "PROJ(p)" ; A project that contains other tasks "VIDEO(v)" ; Video assignments "WAIT(w)" ; Something is holding up this task "|" ; The pipe necessary to separate "active" states and "inactive" states "DONE(d)" ; Task has been completed "CANCELLED(c)" )))) ; Task has been cancelled (after! org (setq org-agenda-files '("~/nc/Org/agenda.org"))) (setq ;; org-fancy-priorities-list '("[A]" "[B]" "[C]") ;; org-fancy-priorities-list '("❗" "[B]" "[C]") org-fancy-priorities-list '("🟥" "🟧" "🟨") org-priority-faces '((?A :foreground "#ff6c6b" :weight bold) (?B :foreground "#98be65" :weight bold) (?C :foreground "#c678dd" :weight bold)) org-agenda-block-separator 8411) (setq org-agenda-custom-commands '(("v" "A better agenda view" ((tags "PRIORITY=\"A\"" ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) (org-agenda-overriding-header "High-priority unfinished tasks:"))) (tags "PRIORITY=\"B\"" ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) (org-agenda-overriding-header "Medium-priority unfinished tasks:"))) (tags "PRIORITY=\"C\"" ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) (org-agenda-overriding-header "Low-priority unfinished tasks:"))) (tags "customtag" ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) (org-agenda-overriding-header "Tasks marked with customtag:"))) (agenda "") (alltodo ""))))) (use-package! org-auto-tangle :defer t :hook (org-mode . org-auto-tangle-mode) :config (setq org-auto-tangle-default t)) (defun dt/insert-auto-tangle-tag () "Insert auto-tangle tag in a literate config." (interactive) (evil-org-open-below 1) (insert "#+auto_tangle: t ") (evil-force-normal-state)) (map! :leader :desc "Insert auto_tangle tag" "i a" #'dt/insert-auto-tangle-tag) (defun dt/org-colors-doom-one () "Enable Doom One colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#51afef" ultra-bold) (org-level-2 1.6 "#c678dd" extra-bold) (org-level-3 1.5 "#98be65" bold) (org-level-4 1.4 "#da8548" semi-bold) (org-level-5 1.3 "#5699af" normal) (org-level-6 1.2 "#a9a1e1" normal) (org-level-7 1.1 "#46d9ff" normal) (org-level-8 1.0 "#ff6c6b" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-dracula () "Enable Dracula colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#8be9fd" ultra-bold) (org-level-2 1.6 "#bd93f9" extra-bold) (org-level-3 1.5 "#50fa7b" bold) (org-level-4 1.4 "#ff79c6" semi-bold) (org-level-5 1.3 "#9aedfe" normal) (org-level-6 1.2 "#caa9fa" normal) (org-level-7 1.1 "#5af78e" normal) (org-level-8 1.0 "#ff92d0" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-gruvbox-dark () "Enable Gruvbox Dark colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#458588" ultra-bold) (org-level-2 1.6 "#b16286" extra-bold) (org-level-3 1.5 "#98971a" bold) (org-level-4 1.4 "#fb4934" semi-bold) (org-level-5 1.3 "#83a598" normal) (org-level-6 1.2 "#d3869b" normal) (org-level-7 1.1 "#d79921" normal) (org-level-8 1.0 "#8ec07c" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-monokai-pro () "Enable Monokai Pro colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#78dce8" ultra-bold) (org-level-2 1.6 "#ab9df2" extra-bold) (org-level-3 1.5 "#a9dc76" bold) (org-level-4 1.4 "#fc9867" semi-bold) (org-level-5 1.3 "#ff6188" normal) (org-level-6 1.2 "#ffd866" normal) (org-level-7 1.1 "#78dce8" normal) (org-level-8 1.0 "#ab9df2" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-nord () "Enable Nord colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#81a1c1" ultra-bold) (org-level-2 1.6 "#b48ead" extra-bold) (org-level-3 1.5 "#a3be8c" bold) (org-level-4 1.4 "#ebcb8b" semi-bold) (org-level-5 1.3 "#bf616a" normal) (org-level-6 1.2 "#88c0d0" normal) (org-level-7 1.1 "#81a1c1" normal) (org-level-8 1.0 "#b48ead" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-oceanic-next () "Enable Oceanic Next colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#6699cc" ultra-bold) (org-level-2 1.6 "#c594c5" extra-bold) (org-level-3 1.5 "#99c794" bold) (org-level-4 1.4 "#fac863" semi-bold) (org-level-5 1.3 "#5fb3b3" normal) (org-level-6 1.2 "#ec5f67" normal) (org-level-7 1.1 "#6699cc" normal) (org-level-8 1.0 "#c594c5" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-palenight () "Enable Palenight colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#82aaff" ultra-bold) (org-level-2 1.6 "#c792ea" extra-bold) (org-level-3 1.5 "#c3e88d" bold) (org-level-4 1.4 "#ffcb6b" semi-bold) (org-level-5 1.3 "#a3f7ff" normal) (org-level-6 1.2 "#e1acff" normal) (org-level-7 1.1 "#f07178" normal) (org-level-8 1.0 "#ddffa7" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-solarized-dark () "Enable Solarized Dark colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#268bd2" ultra-bold) (org-level-2 1.6 "#d33682" extra-bold) (org-level-3 1.5 "#859900" bold) (org-level-4 1.4 "#b58900" semi-bold) (org-level-5 1.3 "#cb4b16" normal) (org-level-6 1.2 "#6c71c4" normal) (org-level-7 1.1 "#2aa198" normal) (org-level-8 1.0 "#657b83" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-solarized-light () "Enable Solarized Light colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#268bd2" ultra-bold) (org-level-2 1.6 "#d33682" extra-bold) (org-level-3 1.5 "#859900" bold) (org-level-4 1.4 "#b58900" semi-bold) (org-level-5 1.3 "#cb4b16" normal) (org-level-6 1.2 "#6c71c4" normal) (org-level-7 1.1 "#2aa198" normal) (org-level-8 1.0 "#657b83" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) (defun dt/org-colors-tomorrow-night () "Enable Tomorrow Night colors for Org headers." (interactive) (dolist (face '((org-level-1 1.7 "#81a2be" ultra-bold) (org-level-2 1.6 "#b294bb" extra-bold) (org-level-3 1.5 "#b5bd68" bold) (org-level-4 1.4 "#e6c547" semi-bold) (org-level-5 1.3 "#cc6666" normal) (org-level-6 1.2 "#70c0ba" normal) (org-level-7 1.1 "#b77ee0" normal) (org-level-8 1.0 "#9ec400" normal))) (set-face-attribute (nth 0 face) nil :font doom-variable-pitch-font :weight (nth 3 face) :height (nth 1 face) :foreground (nth 2 face))) (set-face-attribute 'org-table nil :font doom-font :weight 'normal :height 1.0 :foreground "#bfafdf")) ;; Load our desired dt/org-colors-* theme on startup (dt/org-colors-doom-one) (use-package ox-man) (use-package ox-gemini) (setq org-journal-dir "~/nc/Org/journal/" org-journal-date-prefix "* " org-journal-time-prefix "** " org-journal-date-format "%B %d, %Y (%A) " org-journal-file-format "%Y-%m-%d.org") (setq org-publish-use-timestamps-flag nil) (setq org-export-with-broken-links t) (setq org-publish-project-alist '(("distro.tube without manpages" :base-directory "~/nc/gitlab-repos/distro.tube/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/" :recursive t :exclude "org-html-themes/.*\\|man-org/man*" :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man0p" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man0p/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man0p/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man1" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man1/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man1/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man1p" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man1p/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man1p/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man2" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man2/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man2/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man3" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man3/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man3/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man3p" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man3p/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man3p/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man4" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man4/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man4/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man5" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man5/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man5/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man6" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man6/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man6/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man7" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man7/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man7/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("man8" :base-directory "~/nc/gitlab-repos/distro.tube/man-org/man8/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/distro.tube/html/man-org/man8/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) ("org-static" :base-directory "~/Org/website" :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" :publishing-directory "~/public_html/" :recursive t :exclude ".*/org-html-themes/.*" :publishing-function org-publish-attachment) ("dtos.dev" :base-directory "~/nc/gitlab-repos/dtos.dev/" :base-extension "org" :publishing-directory "~/nc/gitlab-repos/dtos.dev/html/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :auto-preamble t) )) (after! org (setq org-roam-directory "~/nc/Org/roam/" org-roam-graph-viewer "/usr/bin/brave")) (map! :leader (:prefix ("n r" . "org-roam") :desc "Capture node" "c" #'org-roam-capture :desc "Find node" "f" #'org-roam-node-find :desc "Show graph" "g" #'org-roam-graph :desc "Insert node" "i" #'org-roam-node-insert :desc "Toggle roam buffer" "r" #'org-roam-buffer-toggle)) (use-package! password-store) (map! :leader :desc "Switch to perspective NAME" "DEL" #'persp-switch :desc "Switch to buffer in perspective" "," #'persp-switch-to-buffer :desc "Switch to next perspective" "]" #'persp-next :desc "Switch to previous perspective" "[" #'persp-prev :desc "Add a buffer current perspective" "+" #'persp-add-buffer :desc "Remove perspective by name" "-" #'persp-remove-by-name) (define-globalized-minor-mode global-rainbow-mode rainbow-mode (lambda () (when (not (memq major-mode (list 'org-agenda-mode))) (rainbow-mode 1)))) (global-rainbow-mode 1 ) (map! :leader (:prefix ("r" . "registers") :desc "Copy to register" "c" #'copy-to-register :desc "Frameset to register" "f" #'frameset-to-register :desc "Insert contents of register" "i" #'insert-register :desc "Jump to register" "j" #'jump-to-register :desc "List registers" "l" #'list-registers :desc "Number to register" "n" #'number-to-register :desc "Interactively choose a register" "r" #'counsel-register :desc "View a register" "v" #'view-register :desc "Window configuration to register" "w" #'window-configuration-to-register :desc "Increment register" "+" #'increment-register :desc "Point to register" "SPC" #'point-to-register)) (setq shell-file-name "/bin/fish" vterm-max-scrollback 5000) (setq eshell-rc-script "~/.config/doom/eshell/profile" eshell-aliases-file "~/.config/doom/eshell/aliases" eshell-history-size 5000 eshell-buffer-maximum-lines 5000 eshell-hist-ignoredups t eshell-scroll-to-bottom-on-input t eshell-destroy-buffer-when-process-dies t eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh")) (map! :leader :desc "Eshell" "e s" #'eshell :desc "Eshell popup toggle" "e t" #'+eshell/toggle :desc "Counsel eshell history" "e h" #'counsel-esh-history :desc "Vterm popup toggle" "v t" #'+vterm/toggle) (defun prefer-horizontal-split () (set-variable 'split-height-threshold nil t) (set-variable 'split-width-threshold 40 t)) ; make this as low as needed (add-hook 'markdown-mode-hook 'prefer-horizontal-split) (map! :leader :desc "Clone indirect buffer other window" "b c" #'clone-indirect-buffer-other-window) (setq initial-buffer-choice "~/.config/doom/start.org") (defun dt/open-config-org () (interactive) (find-file "~/.config/doom/config.org")) (defun dt/open-init-el () (interactive) (find-file "~/.config/doom/init.el")) (defun dt/open-packages-el () (interactive) (find-file "~/.config/doom/packages.el")) (defun dt/open-eshell-aliases () (interactive) (find-file "~/.config/doom/eshell/aliases.el")) (defun dt/open-eshell-profile () (interactive) (find-file "~/.config/doom/eshell/profile.el")) (define-minor-mode start-mode "Provide functions for custom start page." :lighter " start" :keymap (let ((map (make-sparse-keymap))) ;;(define-key map (kbd "M-z") 'eshell) (evil-define-key 'normal start-mode-map (kbd "1") '(lambda () (interactive) (find-file "~/.config/doom/config.org")) (kbd "2") '(lambda () (interactive) (find-file "~/.config/doom/init.el")) (kbd "3") '(lambda () (interactive) (find-file "~/.config/doom/packages.el")) (kbd "4") '(lambda () (interactive) (find-file "~/.config/doom/eshell/aliases")) (kbd "5") '(lambda () (interactive) (find-file "~/.config/doom/eshell/profile"))) ;; (kbd "1") 'dt/open-config-org ;; (kbd "2") 'dt/open-init-el ;; (kbd "3") 'dt/open-packages-el ;; (kbd "4") 'dt/open-eshell-aliases ;; (kbd "5") 'dt/open-eshell-profile) map)) (provide 'start-mode) (map! :leader (:prefix ("w" . "window") :desc "Winner redo" "" #'winner-redo :desc "Winner undo" "" #'winner-undo)) (map! :leader :desc "Zap to char" "z" #'zap-to-char :desc "Zap up to char" "Z" #'zap-up-to-char)