Org roam improvements (removes "Default" + auto categorizing for agenda)

This commit is contained in:
Emmet 2023-09-17 11:14:45 -05:00
parent d658bd1abd
commit 6e7e5a4cfb
4 changed files with 64 additions and 42 deletions

View file

@ -20,6 +20,7 @@
wmType = "wayland"; # x11 or wayland
browser = "librewolf"; # Default browser; must select one from ./user/app/browser/
editor = "emacsclient"; # Default editor;
defaultRoamDir = "Personal.p"; # Default org roam directory relative to ~/Org
term = "alacritty"; # Default terminal command;
font = "Inconsolata"; # Selected font
fontPkg = pkgs.inconsolata; # Font package
@ -61,6 +62,7 @@
inherit profile;
inherit email;
inherit dotfilesDir;
inherit defaultRoamDir;
inherit theme;
inherit font;
inherit fontPkg;

View file

@ -8,6 +8,7 @@
(load! "~/.emacs.d/system-vars.el")
;; custom variables include:
;; dotfiles-dir, absolute path to home directory
;; user-default-roam-dir, name of default org-roam directory for the machine (relative to ~/Org)
;; system-nix-profile, profile selected from my dotfiles ("personal" "work" "wsl" etc...)
;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work"
@ -506,8 +507,8 @@ same directory as the org-buffer and insert a link to this file."
(require 'org-roam)
(require 'org-roam-dailies)
(setq org-roam-directory "~/Org/Personal/Notes"
org-roam-db-location "~/Org/Personal/Notes/org-roam.db")
(setq org-roam-directory (concat "~/Org/" user-default-roam-dir "/Notes")
org-roam-db-location (concat "~/Org/" user-default-roam-dir "/Notes/org-roam.db"))
(setq org-roam-node-display-template
"${title:65}📝${tags:*}")
@ -521,8 +522,8 @@ same directory as the org-buffer and insert a link to this file."
(setq full-org-roam-db-list
(append (directory-files item t "\\.[p,s]$") full-org-roam-db-list)))
(setq org-roam-db-choice "Default")
(setq full-org-roam-db-list-pretty (list "Default"))
(setq org-roam-db-choice user-default-roam-dir)
(setq full-org-roam-db-list-pretty (list))
(dolist (item full-org-roam-db-list)
(setq full-org-roam-db-list-pretty
(append (list
@ -547,7 +548,7 @@ same directory as the org-buffer and insert a link to this file."
(setq full-org-roam-db-list
(append (directory-files item t "\\.[p,s]$") full-org-roam-db-list)))
(setq full-org-roam-db-list-pretty (list "Default"))
(setq full-org-roam-db-list-pretty (list))
(dolist (item full-org-roam-db-list)
(setq full-org-roam-db-list-pretty
(append (list
@ -558,13 +559,9 @@ same directory as the org-buffer and insert a link to this file."
(when arg
(setq org-roam-db-choice arg))
(if (string= org-roam-db-choice "Default")
(setq org-roam-directory (file-truename "~/Org/Personal/Notes")
org-roam-db-location (file-truename "~/Org/Personal/Notes/org-roam.db")
org-directory (file-truename"~/Org/Personal/Notes"))
(setq org-roam-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))
org-roam-db-location (file-truename (concat "~/Org/" org-roam-db-choice "/Notes/org-roam.db"))
org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))))
org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes")))
(when (not silent)
(org-roam-open-dashboard))
@ -574,7 +571,7 @@ same directory as the org-buffer and insert a link to this file."
(defun org-roam-default-overview ()
(interactive)
(org-roam-switch-db "Default"))
(org-roam-switch-db user-default-roam-dir))
(defun org-roam-switch-db-id-open (arg ID &optional switchpersist)
"Switch to another org-roam db and visit file with id arg"
@ -847,16 +844,27 @@ tasks."
(setq org-agenda-hide-tags-regexp ".*")
(setq org-agenda-category-icon-alist
`(("Teaching" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center)
("Family" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center)
("Producer" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center)
("Bard" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center)
("Story" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center)
("Author" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center)
("Gamedev" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center)
("Tech" ,(list (all-the-icons-faicon "laptop" :height 0.9)) nil nil :ascent center)
`(("Teaching.p" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center)
("Family.s" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center)
("Producer.p" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center)
("Bard.p" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center)
("Stories.s" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center)
("Author.p" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center)
("Gamedev.s" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center)
("Knowledge.p" ,(list (all-the-icons-faicon "database" :height 0.8)) nil nil :ascent center)
("Personal.p" ,(list (all-the-icons-material "person" :height 0.9)) nil nil :ascent center)
))
(defun org-categorize-by-roam-db-on-save ()
(interactive)
(when
(string-prefix-p (concat "/home/" user-username "/Org") (expand-file-name (buffer-file-name)))
(org-set-property "CATEGORY" (substring (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")) 0 (string-match "/" (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")))))
)
)
(add-hook 'after-save-hook 'org-categorize-by-roam-db-on-save)
;; Function to be run when org-agenda is opened
(defun org-agenda-open-hook ()
"Hook to be run when org-agenda is opened"

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, eaf, eaf-browser, org-nursery, phscroll, theme, font, name, username, email, dotfilesDir, profile, wmType, ... }:
{ config, lib, pkgs, eaf, eaf-browser, org-nursery, phscroll, theme, font, name, username, email, dotfilesDir, profile, wmType, defaultRoamDir, ... }:
let
themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+theme)+"/polarity.txt"));
dashboardLogo = ./. + "/nix-" + themePolarity + ".png";
@ -99,6 +99,7 @@ in
(setq user-username "''+username+''") ; username
(setq user-mail-address "''+email+''") ; email
(setq user-home-directory "/home/''+username+''") ; absolute path to home directory as string
(setq user-default-roam-dir "''+defaultRoamDir+''") ; absolute path to home directory as string
(setq system-nix-profile "''+profile+''") ; what profile am I using?
(setq system-wm-type "''+wmType+''") ; wayland or x11?
(setq doom-font (font-spec :family "''+font+''" :size 20)) ; import font

View file

@ -69,6 +69,7 @@ Doom Emacs is traditionally installed by cloning the repository ([[https://githu
(load! "~/.emacs.d/system-vars.el")
;; custom variables include:
;; dotfiles-dir, absolute path to home directory
;; user-default-roam-dir, name of default org-roam directory for the machine (relative to ~/Org)
;; system-nix-profile, profile selected from my dotfiles ("personal" "work" "wsl" etc...)
;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work"
@ -625,8 +626,8 @@ exit
(require 'org-roam)
(require 'org-roam-dailies)
(setq org-roam-directory "~/Org/Personal/Notes"
org-roam-db-location "~/Org/Personal/Notes/org-roam.db")
(setq org-roam-directory (concat "~/Org/" user-default-roam-dir "/Notes")
org-roam-db-location (concat "~/Org/" user-default-roam-dir "/Notes/org-roam.db"))
(setq org-roam-node-display-template
"${title:65}📝${tags:*}")
@ -643,8 +644,8 @@ exit
(setq full-org-roam-db-list
(append (directory-files item t "\\.[p,s]$") full-org-roam-db-list)))
(setq org-roam-db-choice "Default")
(setq full-org-roam-db-list-pretty (list "Default"))
(setq org-roam-db-choice user-default-roam-dir)
(setq full-org-roam-db-list-pretty (list))
(dolist (item full-org-roam-db-list)
(setq full-org-roam-db-list-pretty
(append (list
@ -669,7 +670,7 @@ exit
(setq full-org-roam-db-list
(append (directory-files item t "\\.[p,s]$") full-org-roam-db-list)))
(setq full-org-roam-db-list-pretty (list "Default"))
(setq full-org-roam-db-list-pretty (list))
(dolist (item full-org-roam-db-list)
(setq full-org-roam-db-list-pretty
(append (list
@ -680,13 +681,9 @@ exit
(when arg
(setq org-roam-db-choice arg))
(if (string= org-roam-db-choice "Default")
(setq org-roam-directory (file-truename "~/Org/Personal/Notes")
org-roam-db-location (file-truename "~/Org/Personal/Notes/org-roam.db")
org-directory (file-truename"~/Org/Personal/Notes"))
(setq org-roam-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))
org-roam-db-location (file-truename (concat "~/Org/" org-roam-db-choice "/Notes/org-roam.db"))
org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))))
org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes")))
(when (not silent)
(org-roam-open-dashboard))
@ -696,7 +693,7 @@ exit
(defun org-roam-default-overview ()
(interactive)
(org-roam-switch-db "Default"))
(org-roam-switch-db user-default-roam-dir))
(defun org-roam-switch-db-id-open (arg ID &optional switchpersist)
"Switch to another org-roam db and visit file with id arg"
@ -960,7 +957,8 @@ On Wayland, EAF doesn't work.
#+END_SRC
** Org Agenda Configuration
*** Standard Org Agenda Configuration
*** TODO Standard Org Agenda Configuration
I need to automate categories being added to org roam agenda files.
#+BEGIN_SRC emacs-lisp :tangle config.el
;;;------ Org agenda configuration ------;;;
@ -999,16 +997,27 @@ On Wayland, EAF doesn't work.
(setq org-agenda-hide-tags-regexp ".*")
(setq org-agenda-category-icon-alist
`(("Teaching" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center)
("Family" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center)
("Producer" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center)
("Bard" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center)
("Story" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center)
("Author" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center)
("Gamedev" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center)
("Tech" ,(list (all-the-icons-faicon "laptop" :height 0.9)) nil nil :ascent center)
`(("Teaching.p" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center)
("Family.s" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center)
("Producer.p" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center)
("Bard.p" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center)
("Stories.s" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center)
("Author.p" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center)
("Gamedev.s" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center)
("Knowledge.p" ,(list (all-the-icons-faicon "database" :height 0.8)) nil nil :ascent center)
("Personal.p" ,(list (all-the-icons-material "person" :height 0.9)) nil nil :ascent center)
))
(defun org-categorize-by-roam-db-on-save ()
(interactive)
(when
(string-prefix-p (concat "/home/" user-username "/Org") (expand-file-name (buffer-file-name)))
(org-set-property "CATEGORY" (substring (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")) 0 (string-match "/" (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")))))
)
)
(add-hook 'after-save-hook 'org-categorize-by-roam-db-on-save)
;; Function to be run when org-agenda is opened
(defun org-agenda-open-hook ()
"Hook to be run when org-agenda is opened"
@ -1053,7 +1062,8 @@ On Wayland, EAF doesn't work.
:nvmeg "<return>" #'org-agenda-switch-with-roam)
#+END_SRC
*** Org Super Agenda Configuration
*** TODO Org Super Agenda Configuration
I need to fix =org-super-agenda-groups= to be more useful and less spread out.
#+BEGIN_SRC emacs-lisp :tangle config.el
(require 'org-super-agenda)
@ -1624,7 +1634,7 @@ Any git package can be configured for a particular commit or branch:
* Nix Integration
In order to have Nix load my Doom Emacs configuration [[./doom.nix][doom.nix]], which I source in the =imports= block of my [[../../../profiles/work/home.nix][home.nix]].
#+BEGIN_SRC nix :tangle doom.nix
{ config, lib, pkgs, eaf, eaf-browser, org-nursery, phscroll, theme, font, name, username, email, dotfilesDir, profile, wmType, ... }:
{ config, lib, pkgs, eaf, eaf-browser, org-nursery, phscroll, theme, font, name, username, email, dotfilesDir, profile, wmType, defaultRoamDir, ... }:
let
themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+theme)+"/polarity.txt"));
dashboardLogo = ./. + "/nix-" + themePolarity + ".png";
@ -1725,6 +1735,7 @@ in
(setq user-username "''+username+''") ; username
(setq user-mail-address "''+email+''") ; email
(setq user-home-directory "/home/''+username+''") ; absolute path to home directory as string
(setq user-default-roam-dir "''+defaultRoamDir+''") ; absolute path to home directory as string
(setq system-nix-profile "''+profile+''") ; what profile am I using?
(setq system-wm-type "''+wmType+''") ; wayland or x11?
(setq doom-font (font-spec :family "''+font+''" :size 20)) ; import font