diff --git a/README.org b/README.org index d69558d..a2ccc34 100644 --- a/README.org +++ b/README.org @@ -2,6 +2,8 @@ #+AUTHOR: Christopher James Hayward #+EMAIL: chris@chrishayward.xyz +#+ROAM_KEY: https://github.com/chayward1/dotfiles + #+begin_example ^^ @@@@@@@@@ ^^ ^^ @@@@@@@@@@@@@@@ @@ -497,6 +499,58 @@ I am using [[https://orgmode.org][Org-mode]] extensively for writing projects fo :hook (org-mode . org-superstar-mode)) #+end_src +** Mail + +#+begin_src emacs-lisp +(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") +#+end_src + +#+begin_src emacs-lisp +(use-package mu4e + :config + (setq mu4e-change-filenames-when-moving t + mu4e-update-interval (* 5 60) ;; Every 5 minutes. + mu4e-get-mail-command "mbsync -a" + mu4e-maildir "~/.cache/mail" + mu4e-compose-signature + (concat "Chris Hayward\n" + "https://chrishayward.xyz\n")) + + ;; Ensure plain text scales for all devices. + (setq mu4e-compose-format-flowed t) + + ;; GPG signing key for outbound mail. + (setq mml-secure-openpgp-signers '("37AB1CB72B741E478CA026D43025DCBD46F81C0F")) + (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime) + + (setq message-send-mail-function 'smtpmail-send-it) + + ;; Configure mail account(s). + (setq mu4e-contexts + (list + ;; Main + ;; chris@chrishayward.xyz + (make-mu4e-context + :name "Main" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/Main" (mu4e-message-field msg :maildir)))) + :vars + '((user-full-name . "Christopher James Hayward") + (user-mail-address . "chris@chrishayward.xyz") + (smtpmail-smtp-server . "mail.chrishayward.xyz") + (smtpmail-smtp-service . 587) + (smtpmail-stream-type . starttls)))))) +#+end_src + +#+begin_src emacs-lisp +(dotfiles/leader + "m" '(mu4e :which-key "Mail")) +#+end_src + +** Brain + [[https://github.com/org-roam/org-roam][Org-roam]] is a rudimentary roam replica built on =Org mode=. #+begin_src emacs-lisp @@ -552,56 +606,6 @@ Configure the default capture template for daily entries. :head "#+TITLE: %<%Y-%m-%d>\n"))) #+end_src -** Mail - -#+begin_src emacs-lisp -(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") -#+end_src - -#+begin_src emacs-lisp -(use-package mu4e - :config - (setq mu4e-change-filenames-when-moving t - mu4e-update-interval (* 5 60) ;; Every 5 minutes. - mu4e-get-mail-command "mbsync -a" - mu4e-maildir "~/.cache/mail" - mu4e-compose-signature - (concat "Chris Hayward\n" - "https://chrishayward.xyz\n")) - - ;; Ensure plain text scales for all devices. - (setq mu4e-compose-format-flowed t) - - ;; GPG signing key for outbound mail. - (setq mml-secure-openpgp-signers '("37AB1CB72B741E478CA026D43025DCBD46F81C0F")) - (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime) - - (setq message-send-mail-function 'smtpmail-send-it) - - ;; Configure mail account(s). - (setq mu4e-contexts - (list - ;; Main - ;; chris@chrishayward.xyz - (make-mu4e-context - :name "Main" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/Main" (mu4e-message-field msg :maildir)))) - :vars - '((user-full-name . "Christopher James Hayward") - (user-mail-address . "chris@chrishayward.xyz") - (smtpmail-smtp-server . "mail.chrishayward.xyz") - (smtpmail-smtp-service . 587) - (smtpmail-stream-type . starttls)))))) -#+end_src - -#+begin_src emacs-lisp -(dotfiles/leader - "m" '(mu4e :which-key "Mail")) -#+end_src - ** Agenda Configure agenda sources. @@ -641,6 +645,33 @@ Creaate a capture template for blog posts in the =posts= sub directory. :head "#+TITLE: ${title}\n#+HUGO_BASE_DIR: ../\n#+HUGO_SECTION: ./\n")) #+end_src +** Screencasts + +Create screencasts with =one-frame-per-action= GIF recording via [[https://github.com/takaxp/emacs-gif-screencast][emacs-gif-screencast]]. + ++ Can be paused / resumed ++ High quality images ++ Optimized size + +It requires the installation of ~scrot~ and ~convert~ from the =ImageMagick= library. + +#+begin_src emacs-lisp +(use-package gif-screencast + :custom + (gif-screencast-output-directory "~/.local/source/brain/screen/")) +#+end_src + +Screencast controls behind =SPC p=. ++ Start / stop with =s= ++ Pause with =p= + +#+begin_src emacs-lisp +(dotfiles/leader + "p" '(:ignore t :which-key "Screencast") + "ps" '(gif-screencast-start-or-stop :which-key "Start / Stop") + "pp" '(gif-screencast-toggle-pause :which-key "Pause")) +#+end_src + ** Presentations Produce high quality presentations that work anywhere with =HTML/JS= and the [[https://revealjs.com][Reveal.js]] package. diff --git a/init.el b/init.el index a4fadf1..915cb49 100644 --- a/init.el +++ b/init.el @@ -191,37 +191,6 @@ (use-package org-superstar :hook (org-mode . org-superstar-mode)) -(use-package org-roam - :hook (after-init . org-roam-mode) - :custom (org-roam-directory "~/.local/source/brain")) - -(use-package org-roam-server - :hook (org-roam-mode . org-roam-server-mode)) - -(dotfiles/leader - "r" '(:ignore t :which-key "Roam") - "rf" '(org-roam-find-file :which-key "Find") - "rb" '(org-roam-buffer-toggle-display :which-key "Buffer") - "rc" '(org-roam-capture :which-key "Capture") - "rd" '(:ignore t :which-key "Dailies") - "rdd" '(org-roam-dailies-find-date :which-key "Date") - "rdt" '(org-roam-dailies-find-today :which-key "Today") - "rdm" '(org-roam-dailies-find-tomorrow :which-key "Tomorrow") - "rdy" '(org-roam-dailies-find-yesterday :which-key "Yesterday")) - -(setq org-roam-capture-templates - '(("d" "Default" plain (function org-roam-capture--get-point) - "%?" - :file-name "${slug}" - :head "#+TITLE: ${title}\n" - :unnarrowed t))) - -(setq org-roam-dailies-capture-templates - '(("d" "Default" entry (function org-roam-capture--get-point) - "* %?" - :file-name "daily/%<%Y-%m-%d>" - :head "#+TITLE: %<%Y-%m-%d>\n"))) - (add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") (use-package mu4e @@ -264,6 +233,37 @@ (dotfiles/leader "m" '(mu4e :which-key "Mail")) +(use-package org-roam + :hook (after-init . org-roam-mode) + :custom (org-roam-directory "~/.local/source/brain")) + +(use-package org-roam-server + :hook (org-roam-mode . org-roam-server-mode)) + +(dotfiles/leader + "r" '(:ignore t :which-key "Roam") + "rf" '(org-roam-find-file :which-key "Find") + "rb" '(org-roam-buffer-toggle-display :which-key "Buffer") + "rc" '(org-roam-capture :which-key "Capture") + "rd" '(:ignore t :which-key "Dailies") + "rdd" '(org-roam-dailies-find-date :which-key "Date") + "rdt" '(org-roam-dailies-find-today :which-key "Today") + "rdm" '(org-roam-dailies-find-tomorrow :which-key "Tomorrow") + "rdy" '(org-roam-dailies-find-yesterday :which-key "Yesterday")) + +(setq org-roam-capture-templates + '(("d" "Default" plain (function org-roam-capture--get-point) + "%?" + :file-name "${slug}" + :head "#+TITLE: ${title}\n" + :unnarrowed t))) + +(setq org-roam-dailies-capture-templates + '(("d" "Default" entry (function org-roam-capture--get-point) + "* %?" + :file-name "daily/%<%Y-%m-%d>" + :head "#+TITLE: %<%Y-%m-%d>\n"))) + (setq org-agenda-files '("~/.local/source/brain/daily/" "~/.local/source/secrets/org/")) @@ -279,6 +279,15 @@ :file-name "posts/${slug}" :head "#+TITLE: ${title}\n#+HUGO_BASE_DIR: ../\n#+HUGO_SECTION: ./\n")) +(use-package gif-screencast + :custom + (gif-screencast-output-directory "~/.local/source/brain/screen/")) + +(dotfiles/leader + "p" '(:ignore t :which-key "Screencast") + "ps" '(gif-screencast-start-or-stop :which-key "Start / Stop") + "pp" '(gif-screencast-toggle-pause :which-key "Pause")) + (use-package ox-reveal :after ox :custom (org-reveal-root "https://cdn.jsdelivr.net/reveal.js/3.9.2/"))