hey
This commit is contained in:
parent
87ad70fd1d
commit
605c4f0e5e
17 changed files with 999 additions and 268 deletions
|
@ -1,2 +1 @@
|
|||
(after! flyspell
|
||||
(setq flyspell-lazy-idle-seconds 2))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#+title: Phil's Doom Emacs Config
|
||||
#+Title: Phil's Doom Emacs Config
|
||||
#+STARTUP: indent
|
||||
|
||||
* Intro
|
||||
|
@ -66,14 +66,26 @@ This command only sets up the path to your java runtime binary.
|
|||
#+end_src
|
||||
**** Fonts
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t)
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t
|
||||
doom-font (font-spec :family "Iosevka" :size 14)
|
||||
doom-big-font (font-spec :family "Iosevka" :size 16)
|
||||
;; doom-variable-pitch-font (font-spec :family "Iosevka" :size 14)
|
||||
doom-unicode-font (font-spec :family "Iosevka"))
|
||||
;; doom-serif-font (font-spec :family "IBM Plex Mono" :size 10 :weight 'light))
|
||||
|
||||
;; (set-face-attribute 'default nil :family "Iosevka")
|
||||
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
|
||||
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: #<font-spec nil nil Iosevka nil nil nil nil nil nil nil nil nil nil>
|
||||
|
||||
|
||||
**** Font Family List
|
||||
This is a simple command that outputs the fonts you have available in Emacs.
|
||||
#+begin_src emacs-lisp :results value format: pp
|
||||
#+begin_src emacs-lisp :results value format: pp :tangle no
|
||||
(print (font-family-list))
|
||||
#+end_src
|
||||
|
||||
|
@ -117,7 +129,7 @@ This is a simple command that outputs the fonts you have available in Emacs.
|
|||
(setq column-number-mode t)
|
||||
#+end_src
|
||||
*** set start of week to Monday (not sunday) http://sunsite.univie.ac.at/textbooks/emacs/emacs_33.html
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq-default calendar-week-start-day 1)
|
||||
#+END_SRC
|
||||
|
||||
|
@ -134,6 +146,17 @@ Setting this here because I experiment with these occasionally and want them res
|
|||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq straight-repository-branch "develop")
|
||||
#+end_src
|
||||
*** [disabled] copilot.el
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
;; accept completion from copilot and fallback to company
|
||||
(use-package! copilot
|
||||
:hook (prog-mode . copilot-mode)
|
||||
:bind (:map copilot-completion-map
|
||||
("<tab>" . 'copilot-accept-completion)
|
||||
("TAB" . 'copilot-accept-completion)
|
||||
("C-TAB" . 'copilot-accept-completion-by-word)
|
||||
("C-<tab>" . 'copilot-accept-completion-by-word)))
|
||||
#+end_src
|
||||
*** pdf-tools
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(use-package! pdf-tools
|
||||
|
@ -165,6 +188,7 @@ Setting this here because I experiment with these occasionally and want them res
|
|||
If you use `org' and don't want your org files in the default location below, change `org-directory'. It must be set before org loads!
|
||||
Make .org file automatically open in org-mode.
|
||||
**** org
|
||||
|
||||
***** Basic settings
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-to-list 'auto-mode-alist
|
||||
|
@ -172,24 +196,21 @@ Make .org file automatically open in org-mode.
|
|||
|
||||
(setq org-image-actual-width nil)
|
||||
(setq org-enforce-todo-dependencies t)
|
||||
(setq org-insert-heading-respect-content nil)
|
||||
(setq org-reverse-note-order nil)
|
||||
(setq org-show-following-heading t)
|
||||
(setq org-show-hierarchy-above t)
|
||||
(setq org-deadline-warning-days 7)
|
||||
(setq org-blank-before-new-entry (quote ((heading . t)
|
||||
(plain-list-item . nil))))
|
||||
(setq org-num-mode t)
|
||||
(setq org-todo-repeat-to-state "LOOP")
|
||||
(setq org-remove-highlights-with-change nil)
|
||||
(setq org-read-date-prefer-future nil)
|
||||
(setq org-read-date-prefer-future t)
|
||||
(setq org-special-ctrl-a/e t)
|
||||
(setq org-special-ctrl-k t)
|
||||
(setq org-yank-adjusted-subtrees t)
|
||||
(setq org-M-RET-may-split-line t)
|
||||
(setq org-M-RET-may-split-line (quote (default . t)))
|
||||
(setq org-log-done (quote time))
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-catch-invisible-edits "smart")
|
||||
(setq org-completion-use-ido t)
|
||||
(setq org-use-property-inheritance nil)
|
||||
(setq org-duration-format 'h:mm)
|
||||
(setq org-hierarchical-todo-statistics t)
|
||||
|
@ -197,7 +218,6 @@ Make .org file automatically open in org-mode.
|
|||
|
||||
#+RESULTS:
|
||||
: t
|
||||
|
||||
***** my-org-tree-to-indirect-buffer
|
||||
#+begin_quote
|
||||
This beautiful piece of code was done by [[https://www.reddit.com/user/github-alphapapa][alphapapa]] and published on
|
||||
|
@ -250,7 +270,7 @@ Lucky me, I found the ready-to-use solution [[https://emacs.stackexchange.com/a/
|
|||
#+end_quote
|
||||
--Karl Voit
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(defun my-org-retrieve-url-from-point ()
|
||||
(interactive)
|
||||
(let* ((link-info (assoc :link (org-context)))
|
||||
|
@ -265,7 +285,7 @@ Lucky me, I found the ready-to-use solution [[https://emacs.stackexchange.com/a/
|
|||
(kill-new text))))
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(global-set-key (kbd "C-c o") 'my-org-retrieve-url-from-point)
|
||||
#+END_SRC
|
||||
***** org-element cache verification
|
||||
|
@ -297,20 +317,30 @@ https://www.emacswiki.org/emacs/TruncateLines =M-x toggle-truncate-lines=
|
|||
(setq org-src-fontify-natively t)
|
||||
(setq org-hide-leading-stars t)
|
||||
|
||||
;;disabled;(setq org-agenda-dim-blocked-tasks t)
|
||||
;;disabled 2020-07-07;; (setq org-agenda-dim-blocked-tasks 'invisible)
|
||||
(setq org-agenda-dim-blocked-tasks nil);; show blocked tasks
|
||||
|
||||
#+END_SRC
|
||||
|
||||
****** Set the width of inline images:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-image-actual-width '(600))
|
||||
#+END_SRC
|
||||
|
||||
****** org-modern
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(package-initialize)
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
;; (modus-themes-load-operandi)
|
||||
|
||||
;; Choose some fonts
|
||||
;; (set-face-attribute 'default nil :family "Iosevka")
|
||||
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
|
||||
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
|
||||
|
||||
;; Add frame borders and window dividers
|
||||
(modify-all-frames-parameters
|
||||
'((right-divider-width . 2)
|
||||
'((right-divider-width . 0)
|
||||
(internal-border-width . 0)))
|
||||
(dolist (face '(window-divider
|
||||
window-divider-first-pixel
|
||||
|
@ -324,12 +354,12 @@ https://www.emacswiki.org/emacs/TruncateLines =M-x toggle-truncate-lines=
|
|||
org-auto-align-tags nil
|
||||
org-tags-column 0
|
||||
org-catch-invisible-edits 'show-and-error
|
||||
org-special-ctrl-a/e t
|
||||
org-insert-heading-respect-content t
|
||||
|
||||
;; Org styling, hide markup etc.
|
||||
org-hide-emphasis-markers t
|
||||
org-pretty-entities t
|
||||
org-ellipsis "…"
|
||||
|
||||
;; Agenda styling
|
||||
org-agenda-tags-column 0
|
||||
|
@ -339,17 +369,83 @@ https://www.emacswiki.org/emacs/TruncateLines =M-x toggle-truncate-lines=
|
|||
(800 1000 1200 1400 1600 1800 2000)
|
||||
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
|
||||
org-agenda-current-time-string
|
||||
"⌚ now ─────────────────────────────────────────────────")
|
||||
"◀── now ─────────────────────────────────────────────────")
|
||||
|
||||
;; Ellipsis styling
|
||||
;; (setq org-ellipsis "…")
|
||||
;; (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
|
||||
|
||||
(global-org-modern-mode)
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: t
|
||||
****** Directory to org
|
||||
|
||||
#+begin_src elisp :tangle config.el
|
||||
(defun my-dir-to-org (dir org-file)
|
||||
"Create a file ORG-FILE which has all txt files in DIR as linked headlines
|
||||
and the contents of the files below the headlines."
|
||||
(interactive "DDirectory to convert: \nFFilename: ")
|
||||
(let ((files (directory-files
|
||||
dir t ".*\\.txt\\'")))
|
||||
(with-temp-file org-file
|
||||
(dolist (file files)
|
||||
(insert (concat "* " (file-name-nondirectory file) "\n\n"))
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-max))
|
||||
(insert "\n")))))
|
||||
|
||||
(defun my-dir-to-org-with-links (dir org-file)
|
||||
"Create a file ORG-FILE which has all txt files in DIR as linked headlines
|
||||
and the contents of the files below the headlines."
|
||||
(interactive "DDirectory to convert: \nFFilename: ")
|
||||
(let ((files (directory-files
|
||||
dir t ".*\\.txt\\'")))
|
||||
(with-temp-file org-file
|
||||
(dolist (file files)
|
||||
(insert (concat "* " "[[" file "][" (file-name-nondirectory file) "]]\n\n"))
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-max))
|
||||
(insert "\n")))))
|
||||
|
||||
|
||||
(defun my-mass-conversion (source-dir target-dir)
|
||||
"Create one org file per directory of SOURCE-DIR inside TARGET-DIR."
|
||||
(interactive "DDirectory to convert: \nDTarget Directory:")
|
||||
(let ((dirs-full
|
||||
(remove-if-not #'file-directory-p
|
||||
(directory-files
|
||||
source-dir t
|
||||
directory-files-no-dot-files-regexp))))
|
||||
|
||||
(mapc (lambda (dir)
|
||||
(my-dir-to-org dir
|
||||
(concat target-dir
|
||||
(file-name-base dir) ".org")))
|
||||
dirs-full)))
|
||||
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: my-mass-conversion
|
||||
|
||||
***** Dependencies
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq-default org-enforce-todo-dependencies t)
|
||||
(setq org-enforce-todo-checkbox-dependencies t)
|
||||
#+END_SRC
|
||||
***** org-auto-tangle
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(require 'org-auto-tangle)
|
||||
(add-hook 'org-mode-hook 'org-auto-tangle-mode)
|
||||
#+end_src
|
||||
***** auto-tangle-mode
|
||||
#+begin_src emacs-lisp :tangle yes
|
||||
|
||||
#+end_src
|
||||
**** Hooks
|
||||
***** append and update time-stamps for =Time-stamp: <>= in headers:
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
@ -365,6 +461,31 @@ https://www.emacswiki.org/emacs/TruncateLines =M-x toggle-truncate-lines=
|
|||
;; auto-fill mode on
|
||||
(auto-fill-mode 1)))
|
||||
#+end_src
|
||||
***** expand macros inline
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
||||
(add-to-list 'font-lock-extra-managed-props 'display)
|
||||
|
||||
(font-lock-add-keywords
|
||||
'org-mode
|
||||
'(("\\({{{[a-zA-Z#%)(_-+0-9]+}}}\\)" 0
|
||||
`(face nil display
|
||||
,(format "%s"
|
||||
(let* ((input-str (match-string 0))
|
||||
(el (with-temp-buffer
|
||||
(insert input-str)
|
||||
(goto-char (point-min))
|
||||
(org-element-context)))
|
||||
(text (org-macro-expand el org-macro-templates)))
|
||||
(if text
|
||||
text
|
||||
input-str)))))))
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
|
||||
**** Keybinds
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
@ -382,25 +503,53 @@ Inserts timestamps in the proper format. ~'(16)~ stands for two universal argume
|
|||
(org-time-stamp-inactive '(16))))
|
||||
#+end_src
|
||||
|
||||
***** Automated timestamps in headings
|
||||
I need this because hitting the above is tedious.
|
||||
|
||||
For the files whose paths match the strings in the function, it will advise the org-insert-heading function to insert an inactive timestamp into the new heading.
|
||||
|
||||
This turns making new entries from ~C-<return> C-i i~ into just ~C-<return>~. Much easier, and I don't have to think about this any more.
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-hook 'org-insert-heading-hook
|
||||
(lambda ()
|
||||
(if
|
||||
(or
|
||||
(string-match-p "journal.org" buffer-file-name)
|
||||
(string-match-p "money" buffer-file-name)
|
||||
(string-match-p "therapy.org" buffer-file-name))
|
||||
((lambda ()
|
||||
(interactive)
|
||||
(org-time-stamp-inactive '(16))
|
||||
(newline)))
|
||||
(setq org-insert-heading-hook nil)
|
||||
)))
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| lambda | nil | (if (or (string-match-p journal.org buffer-file-name) (string-match-p money buffer-file-name) (string-match-p therapy.org buffer-file-name)) ((lambda nil (interactive) (org-time-stamp-inactive '(16)) (newline))) (setq org-insert-heading-hook nil)) |
|
||||
|
||||
|
||||
**** Todo keywords
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-todo-keywords
|
||||
'((sequence
|
||||
"INBOX(i)"
|
||||
"TASK(t)" ; A task that needs doing & is ready to do
|
||||
"PROJ(p)" ; A project, which usually contains other tasks
|
||||
"LOOP(r)" ; A recurring task
|
||||
"WAIT(w)" ; Something external is holding up this task
|
||||
"HOLD(h)" ; This task is paused/on hold because of me
|
||||
"INBOX(i!)"
|
||||
"TASK(t!)" ; A task that needs doing & is ready to do
|
||||
"PROJ(p!)" ; A project, which usually contains other tasks
|
||||
"LOOP(r!)" ; A recurring task
|
||||
"WAIT(w!)" ; Something external is holding up this task
|
||||
"HOLD(h!)" ; This task is paused/on hold because of me
|
||||
"|"
|
||||
"DONE(d)" ; Task successfully completed
|
||||
"KILL(k)") ; Task was cancelled, aborted or is no longer applicable
|
||||
"DONE(d!@)" ; Task successfully completed
|
||||
"KILL(k!@)") ; Task was cancelled, aborted or is no longer applicable
|
||||
(sequence
|
||||
"DECIDE()" ; for making decisions
|
||||
"|"
|
||||
"OKAY(o)" ; okay as-is
|
||||
"YES(y)" ; take action
|
||||
"NO(n)")) ; don't take action
|
||||
"OKAY(o!)" ; okay as-is
|
||||
"YES(y!)" ; take action
|
||||
"NO(n!)")) ; don't take action
|
||||
org-todo-keyword-faces
|
||||
'(
|
||||
("INBOX" :foreground "cyan" :weight bold)
|
||||
|
@ -438,46 +587,17 @@ Change font for DONE tasks
|
|||
|
||||
|
||||
|
||||
**** Automated timestamps in headings
|
||||
I need this because hitting the above is tedious.
|
||||
|
||||
For the files whose paths match the strings in the function, it will advise the org-insert-heading function to insert an inactive timestamp into the new heading.
|
||||
|
||||
This turns making new entries from ~C-<return> C-i i~ into just ~C-<return>~. Much easier, and I don't have to think about this any more.
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-hook 'org-insert-heading-hook
|
||||
(lambda ()
|
||||
(if
|
||||
(or
|
||||
(string-match "journal.org" buffer-file-name)
|
||||
(string-match "money" buffer-file-name)
|
||||
(string-match "therapy.org" buffer-file-name))
|
||||
((lambda ()
|
||||
(interactive)
|
||||
(org-time-stamp-inactive '(16))
|
||||
(newline)))
|
||||
(setq org-insert-heading-hook nil)
|
||||
)))
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| lambda | nil | (if (or (string-match journal buffer-file-name) (string-match money buffer-file-name) (string-match therapy buffer-file-name)) ((lambda nil (interactive) (org-timestamp-inactive '(16)) (newline))) (setq 'org-insert-heading-hook nil)) |
|
||||
| lambda | nil | (if (or (string-match journal buffer-file-name) (string-match money buffer-file-name) (string-match therapy buffer-file-name)) (progn (org-timestamp-inactive '(16)) (newline)) (progn (signal 'wrong-type-argument (list 'symbolp ''org-insert-heading-hook)))) |
|
||||
|
||||
|
||||
**** Capture templates
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/agenda.org" "Inbox") "* %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/agenda.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/agenda.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "Sort")
|
||||
"* %(org-contacts-template-name)
|
||||
:PROPERTIES:
|
||||
:EMAIL: %(org-contacts-template-email)
|
||||
:PHONE: %(org-contacts-template-phone)
|
||||
:PHONE:
|
||||
:ALIAS:
|
||||
:NICKNAME:
|
||||
:IGNORE:
|
||||
|
@ -488,6 +608,11 @@ This turns making new entries from ~C-<return> C-i i~ into just ~C-<return>~. Mu
|
|||
:END:")))
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| t | inbox | entry | (file+headline ~/enc/org/agenda.org Inbox) | * %i%? |
|
||||
| i | idea | entry | (file+headline ~/enc/org/agenda.org Ideas) | * %? |
|
||||
| d | reminder | entry | (file+headline ~/enc/org/agenda.org Reminders) | * %i%? |
|
||||
|
||||
**** preserving all heading levels when archiving
|
||||
|
||||
Karl Voit:
|
||||
|
@ -496,7 +621,7 @@ Karl Voit:
|
|||
Preserve the hierarchy when archiving: [[https://fuco1.github.io/2017-04-20-Archive-subtrees-under-the-same-hierarchy-as-original-in-the-archive-files.html][blog article]], [[https://gist.github.com/Fuco1/e86fb5e0a5bb71ceafccedb5ca22fcfb][source code (GitHub gist)]]
|
||||
#+end_quote
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-archive-default-command #'org-archive-subtree-hierarchically)
|
||||
|
||||
(defun org-archive-subtree-hierarchically (&optional prefix)
|
||||
|
@ -563,7 +688,7 @@ This results in a list that gets added to the Org-mode buffer similar to:
|
|||
#+end_quote
|
||||
|
||||
|
||||
#+begin_src emacs-lisp :results none
|
||||
#+begin_src emacs-lisp :results none :tangle no
|
||||
(defun my-dired-insert-lfile-link-list-to-other-org-window (files)
|
||||
;; adapted by Karl Voit from https://emacs.stackexchange.com/a/60369
|
||||
(interactive
|
||||
|
@ -603,7 +728,7 @@ This results in a list that gets added to the Org-mode buffer similar to:
|
|||
#+end_quote
|
||||
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq my-linkcolor-org "wheat3")
|
||||
(setq my-linkcolor-file "MediumSeaGreen")
|
||||
(setq my-linkcolor-web "DeepSkyBlue")
|
||||
|
@ -715,20 +840,71 @@ This results in a list that gets added to the Org-mode buffer similar to:
|
|||
- Org links had: snow3
|
||||
- File links: DarkSeaGreen, wheat2
|
||||
- Web links: DeepSkyBlue
|
||||
*** org-edna
|
||||
https://www.nongnu.org/org-edna-el/
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
||||
** org-transclusion
|
||||
|
||||
#+end_src
|
||||
*** mu4e
|
||||
#+begin_src elisp :tangle config.el
|
||||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e/")
|
||||
|
||||
(setq mu4e-change-filenames-when-moving t)
|
||||
(setq mu4e-update-interval (* 10 60))
|
||||
(setq mu4e-get-mail-command "mbsync -a")
|
||||
(setq mu4e-maildir "~/enc/.mail")
|
||||
|
||||
(setq mu4e-drafts-folder "/Drafts")
|
||||
(setq mu4e-sent-folder "/Sent")
|
||||
(setq mu4e-refile-folder "/Refile")
|
||||
(setq mu4e-trash-folder "/Trash")
|
||||
|
||||
(mu4e t)
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
|
||||
|
||||
*** sly
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
;; (load (expand-file-name "~/.roswell/helper.el"))
|
||||
|
||||
(setq inferior-lisp-program "sbcl --dynamic-space-size 8192 -Q -l ~/.sbclrc")
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: sbcl --dynamic-space-size 8192 -Q -l ~/.sbclrc
|
||||
|
||||
*** multiple-cursors
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
|
||||
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
|
||||
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
|
||||
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: mc/mark-all-like-this
|
||||
|
||||
*** org-transclusion
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(use-package! org-transclusion
|
||||
:after org
|
||||
:init
|
||||
(map!
|
||||
:map global-map "<F12>" #'org-transclusion-add
|
||||
:map global-map "<f12>" #'org-transclusion-add
|
||||
:leader
|
||||
:prefix "n"
|
||||
:desc "Org Transclusion Mode" "t" #'org-transclusion-mode))
|
||||
#+end_src
|
||||
|
||||
** org-babel
|
||||
#+RESULTS:
|
||||
: org-transclusion
|
||||
|
||||
*** org-babel
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)
|
||||
#+end_src
|
||||
|
@ -741,7 +917,7 @@ When some code generates an image file, display it in the results:
|
|||
(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(add-hook 'org-babel-after-execute-hook
|
||||
(lambda ()
|
||||
(unless (eq this-command 'org-babel-tangle)
|
||||
|
@ -752,21 +928,54 @@ When some code generates an image file, display it in the results:
|
|||
#+END_SRC
|
||||
|
||||
|
||||
** org-export*** LaTeX
|
||||
*** org-export*** LaTeX
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(with-eval-after-load 'ox-latex
|
||||
(add-to-list 'org-latex-classes
|
||||
'("memoir"
|
||||
'("tufte-handout"
|
||||
"\\documentclass[nobib]{tufte-handout}
|
||||
\\usepackage{nicefrac}
|
||||
\\usepackage{units}
|
||||
[NO-DEFAULT-PACKAGES]
|
||||
[EXTRA]"
|
||||
("\\section{%s}" . "\\section*{%s}")
|
||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
|
||||
'("memoir"
|
||||
"\\documentclass{memoir}"
|
||||
("\\chapter{%s}" . "\\chapter*{%s}")
|
||||
("\\section{%s}" . "\\section*{%s}")
|
||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
|
||||
(print org-latex-classes)
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| memoir | \documentclass{memoir} | (\chapter{%s} . \chapter*{%s}) | (\section{%s} . \section*{%s}) | (\subsection{%s} . \subsection*{%s}) | (\subsubsection{%s} . \subsubsection*{%s}) | |
|
||||
| article | \documentclass[11pt]{article} | (\section{%s} . \section*{%s}) | (\subsection{%s} . \subsection*{%s}) | (\subsubsection{%s} . \subsubsection*{%s}) | (\paragraph{%s} . \paragraph*{%s}) | (\subparagraph{%s} . \subparagraph*{%s}) |
|
||||
| report | \documentclass[11pt]{report} | (\part{%s} . \part*{%s}) | (\chapter{%s} . \chapter*{%s}) | (\section{%s} . \section*{%s}) | (\subsection{%s} . \subsection*{%s}) | (\subsubsection{%s} . \subsubsection*{%s}) |
|
||||
| book | \documentclass[11pt]{book} | (\part{%s} . \part*{%s}) | (\chapter{%s} . \chapter*{%s}) | (\section{%s} . \section*{%s}) | (\subsection{%s} . \subsection*{%s}) | (\subsubsection{%s} . \subsubsection*{%s}) |
|
||||
| tufte-handout | \documentclass[nobib]{tufte-handout} | | | | | |
|
||||
|
||||
** org-super-links
|
||||
#+begin_src
|
||||
|
||||
|
||||
(setq org-latex-default-class "tufte-handout"
|
||||
org-latex-pdf-process '("latexmk -pdf -bibtex-cond -f -outdir=%o %f"))
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| latexmk -pdf -bibtex-cond -f -outdir=%o %f |
|
||||
|
||||
*** org-super-links
|
||||
|
||||
***** Quick related link function
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
@ -800,7 +1009,7 @@ Replace org-store-link and org-insert-link with org-super-links alternatives.
|
|||
#+RESULTS:
|
||||
: org-super-links-delete-link
|
||||
|
||||
** org-super-agenda
|
||||
*** org-super-agenda
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(org-super-agenda-mode)
|
||||
(setq super-agenda-groups
|
||||
|
@ -862,22 +1071,29 @@ Replace org-store-link and org-insert-link with org-super-links alternatives.
|
|||
|
||||
|
||||
|
||||
** Org-wild-notifier
|
||||
*** Org-wild-notifier
|
||||
This lets me get desktop notifications for TODO items.
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(org-wild-notifier-mode)
|
||||
|
||||
(setq org-wild-notifier-alert-time '(10))
|
||||
(setq org-wild-notifier-notification-title "Emacs org-mode agenda")
|
||||
(setq org-wild-notifier-keyword-whitelist '("TODO"))
|
||||
(org-wild-notifier-mode)
|
||||
(setq alert-default-style 'libnotify
|
||||
org-wild-notifier-alert-time '(0 5 15 60)
|
||||
org-wild-notifier-keyword-whitelist nil
|
||||
;; good for testing
|
||||
org-wild-notifier--alert-severity 'high
|
||||
alert-fade-time 50
|
||||
)
|
||||
#+end_src
|
||||
|
||||
** org-id
|
||||
*** my-id-get-or-generate
|
||||
#+RESULTS:
|
||||
: 50
|
||||
|
||||
*** org-id
|
||||
**** my-id-get-or-generate
|
||||
Straight from Karl Voit's config.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(defun my-id-get-or-generate()
|
||||
"Returns the ID property if set or generates and returns a new one if not set.
|
||||
The generated ID is stripped off potential progress indicator cookies and
|
||||
|
@ -918,7 +1134,7 @@ Straight from Karl Voit's config.
|
|||
|
||||
#+END_SRC
|
||||
|
||||
** Org-refile
|
||||
*** Org-refile
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-refile-targets '((nil :maxlevel . 9)
|
||||
|
@ -928,23 +1144,13 @@ Straight from Karl Voit's config.
|
|||
#+end_src
|
||||
|
||||
(setq find-file-visit-truename t)
|
||||
** org-contacts
|
||||
*** org-contacts
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-contacts-files '("~/enc/org/people.org"))
|
||||
#+end_src
|
||||
** org-roam
|
||||
|
||||
*** Keybinds
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(define-prefix-command 'org-roam-map)
|
||||
(global-set-key "\C-r" 'org-roam-map)
|
||||
(define-key org-roam-map "o" 'org-roam-buffer-toggle)
|
||||
(define-key org-roam-map "f" 'org-roam-node-find)
|
||||
(define-key org-roam-map "i" 'org-roam-node-insert)
|
||||
(define-key org-roam-map "n" 'org-roam-capture)
|
||||
#+end_src
|
||||
|
||||
*** org-roam
|
||||
|
||||
**** org-roam
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-roam-v2-ack t)
|
||||
(setq org-roam-completion-everywhere t)
|
||||
|
@ -971,8 +1177,18 @@ Straight from Karl Voit's config.
|
|||
:unnarrowed)))
|
||||
#+end_src
|
||||
|
||||
** org-agenda
|
||||
*** Keybinds
|
||||
**** Keybinds
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(define-prefix-command 'org-roam-map)
|
||||
(global-set-key "\C-r" 'org-roam-map)
|
||||
(define-key org-roam-map "o" 'org-roam-buffer-toggle)
|
||||
(define-key org-roam-map "f" 'org-roam-node-find)
|
||||
(define-key org-roam-map "i" 'org-roam-node-insert)
|
||||
(define-key org-roam-map "n" 'org-roam-capture)
|
||||
#+end_src
|
||||
|
||||
*** org-agenda
|
||||
**** Keybinds
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(global-set-key "\C-ca" 'org-agenda)
|
||||
(define-prefix-command 'org-agenda-map)
|
||||
|
@ -981,36 +1197,33 @@ Straight from Karl Voit's config.
|
|||
(define-key org-agenda-map "a" 'org-agenda)
|
||||
#+end_src
|
||||
|
||||
*** Settings
|
||||
**** Settings
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-agenda-start-day nil
|
||||
org-agenda-span '14
|
||||
org-agenda-dim-blocked-tasks 'invisible
|
||||
org-agenda-span 'day
|
||||
org-agenda-dim-blocked-tasks t
|
||||
org-agenda-sorting-strategy
|
||||
'((agenda habit-down time-up priority-down category-keep)
|
||||
(todo priority-down category-keep)
|
||||
(search category-keep))
|
||||
org-deadline-warning-days 3
|
||||
org-agenda-insert-diary-extract-time t
|
||||
'(time-up priority-up category-keep)
|
||||
org-deadline-warning-days 4
|
||||
org-log-into-drawer t
|
||||
org-treat-insert-todo-heading-as-state-change t
|
||||
org-clock-into-drawer t
|
||||
org-agenda-log-mode-items '(closed clock state)
|
||||
org-agenda-prefix-format "%l %i %c %s %t")
|
||||
org-agenda-prefix-format '((agenda . " %l %i %c %s %t")
|
||||
(todo . " %i %-12:c")
|
||||
(tags . " %i $-12:c")
|
||||
(search . " %i %-12:c"))
|
||||
org-agenda-compact-blocks nil
|
||||
org-agenda-use-tag-inheritance (quote (agenda));; agenda performance
|
||||
org-agenda-block-separator "---------")
|
||||
|
||||
(setq org-agenda-compact-blocks t)
|
||||
(setq org-agenda-use-tag-inheritance (quote (agenda)));; agenda performance
|
||||
(setq org-agenda-span 1)
|
||||
(add-hook 'org-agenda-mode-hook '(lambda () (hl-line-mode 1)))
|
||||
|
||||
(setq org-agenda-custom-commands
|
||||
(quote (("x" "Phil's view" agenda ""
|
||||
((org-agenda-prefix-format " %i %-12:c %s %t "))))))
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| x | Phil's view | agenda | | ((org-agenda-prefix-format %i %-12:c %s %t )) |
|
||||
| (lambda nil (hl-line-mode 1)) | +org-habit-resize-graph-h | org-fancy-priorities-mode |
|
||||
|
||||
**** From Karl Voit
|
||||
***** From Karl Voit
|
||||
Remove completed deadline tasks from the agenda view
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-agenda-skip-deadline-if-done t)
|
||||
|
@ -1060,12 +1273,18 @@ Show all agenda dates - even if they are empty
|
|||
Sorting order for tasks on the agenda
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-agenda-sorting-strategy
|
||||
(quote ((agenda habit-down time-up user-defined-up priority-down category-keep)
|
||||
(quote ((agenda time-up user-defined-up priority-down category-keep)
|
||||
(todo priority-down category-keep)
|
||||
(tags priority-down category-keep)
|
||||
(search category-keep))))
|
||||
#+END_SRC
|
||||
|
||||
#+RESULTS:
|
||||
| agenda | time-up | user-defined-up | priority-down | category-keep |
|
||||
| todo | priority-down | category-keep | | |
|
||||
| tags | priority-down | category-keep | | |
|
||||
| search | category-keep | | | |
|
||||
|
||||
Start the weekly agenda today
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-agenda-start-on-weekday nil)
|
||||
|
@ -1111,7 +1330,7 @@ Disabled 2020-01-03 because I usually see one single day only.
|
|||
#+END_SRC
|
||||
|
||||
|
||||
*** Exports
|
||||
**** Exports
|
||||
Export subtree (by default) instead of whole buffer:
|
||||
http://orgmode.org/manual/The-Export-Dispatcher.html
|
||||
|
||||
|
@ -1133,7 +1352,7 @@ part of the export result get broken because of a typo or similar.
|
|||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
(setq org-export-with-broken-links t)
|
||||
#+END_SRC
|
||||
**** Org-Reveal - generate nice presentations out of Org-mode
|
||||
***** Org-Reveal - generate nice presentations out of Org-mode
|
||||
https://github.com/yjwen/org-reveal
|
||||
#+BEGIN_QUOTE
|
||||
- =Reveal.js= is a tool for creating good-looking HTML presentations, authored by Hakim El Hattab.
|
||||
|
@ -1150,7 +1369,7 @@ https://github.com/yjwen/org-reveal
|
|||
:config)
|
||||
#+END_SRC
|
||||
|
||||
**** my-org-copy-region-as-markdown
|
||||
***** my-org-copy-region-as-markdown
|
||||
| 2022-05-03 | initial setup and disabled because of error |
|
||||
|
||||
I've found this nugget on http://mbork.pl/2021-05-02_Org-mode_to_Markdown_via_the_clipboard.
|
||||
|
@ -1184,11 +1403,45 @@ Debugging:
|
|||
(org-export-string-as region 'md t '(:with-toc nil))
|
||||
#+END_SRC
|
||||
|
||||
** yasnippets
|
||||
**** org-habits
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-to-list 'org-modules 'habit)
|
||||
(setq org-habit-following-days 2
|
||||
org-habit-preceding-days 7
|
||||
org-habit-show-all-today nil
|
||||
org-habit-show-habits-only-for-today t
|
||||
org-habit-show-habits t)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: t
|
||||
|
||||
**** org-habit-stats
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(define-key org-mode-map (kbd "C-c h") 'org-habit-stats-view-habit-at-point)
|
||||
(define-key org-agenda-mode-map (kbd "H") 'org-habit-stats-view-habit-at-point-agenda)
|
||||
(add-hook 'org-after-todo-state-change-hook 'org-habit-stats-update-properties)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
| org-habit-stats-update-properties |
|
||||
|
||||
**** org-download
|
||||
this is here as a reminder of the config options, so no tangling
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(setq-default org-download-image-dir "~/enc/org/.attach")
|
||||
;; can also set for the individual buffer
|
||||
;; -*- mode: Org; org-download-image-dir: "~/Pictures/foo"; -*-
|
||||
|
||||
#+end_src
|
||||
|
||||
|
||||
*** yasnippets
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq doom-snippets-enable-short-helpers t)
|
||||
|
||||
#+end_src
|
||||
** dired-open
|
||||
*** dired-open
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq dired-open-extensions '(("gif" . "sxiv")
|
||||
("jpg" . "sxiv")
|
||||
|
@ -1197,18 +1450,18 @@ Debugging:
|
|||
("mp4" . "mpv")))
|
||||
|
||||
#+end_src
|
||||
** mode-icons
|
||||
*** mode-icons
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(mode-icons-mode)
|
||||
(add-hook 'dired-mode-hook #'mode-icons--mode-disable) ;; with mode-icons, visiting a dir with dired takes up *lots* of CPU for =mode-icons-reset= (performance-issue)
|
||||
#+end_src
|
||||
** csv-mode
|
||||
*** csv-mode
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
|
||||
(autoload 'csv-mode "csv-mode"
|
||||
"Major mode for editing comma-separated value files." t)
|
||||
#+end_src
|
||||
** whisper.el (S2T; speech to text)
|
||||
*** whisper.el (S2T; speech to text)
|
||||
|
||||
- https://github.com/natrys/whisper.el
|
||||
|
||||
|
@ -1231,7 +1484,7 @@ Use =whisper-run= once to start recording and a second time for start
|
|||
the translation process which puts the text into the buffer. This
|
||||
works *offline* (without cloud or network) and amazingly well for English.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :results none
|
||||
#+BEGIN_SRC emacs-lisp :results none :tangle no
|
||||
(use-package whisper
|
||||
:load-path (lambda () (expand-file-name (concat my-user-emacs-directory "contrib/whisper.el/")))
|
||||
;; :bind ("C-H-r" . whisper-run)
|
||||
|
@ -1244,7 +1497,7 @@ works *offline* (without cloud or network) and amazingly well for English.
|
|||
)
|
||||
#+END_SRC
|
||||
|
||||
** hledger-mode
|
||||
*** hledger-mode
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
;; To open files with .journal extension in hledger-mode
|
||||
(add-to-list 'auto-mode-alist '("\\.journal\\'" . hledger-mode))
|
||||
|
@ -1258,10 +1511,52 @@ works *offline* (without cloud or network) and amazingly well for English.
|
|||
(add-to-list 'company-backends 'hledger-company)
|
||||
#+end_src
|
||||
|
||||
*** gptel
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(use-package! gptel
|
||||
:config
|
||||
(setq! gptel-api-key "your key")
|
||||
(setq! gptel-max-tokens 8192)
|
||||
(setq
|
||||
gptel-model "model"
|
||||
gptel-backend (gptel-make-openai "llama-cpp"
|
||||
:stream t
|
||||
:protocol "http"
|
||||
:host "localhost:5000"
|
||||
:models '("model"))))
|
||||
(gptel-make-openai "llama-cpp" ;Any name
|
||||
:stream t ;Stream responses
|
||||
:protocol "http"
|
||||
:host "localhost:5000" ;Llama.cpp server location
|
||||
:models '("model")) ;Any names, doesn't matter for Llama
|
||||
|
||||
(setq gptel--debug t)
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: t
|
||||
*** erc
|
||||
**** config
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
;; Set our nickname & real-name as constant variables
|
||||
(setq
|
||||
erc-nick "phil_bb" ; Our IRC nick
|
||||
erc-user-full-name "Phil B.") ; Our /whois name
|
||||
|
||||
;; Define a function to connect to a server
|
||||
(defun erc/libera ()
|
||||
(interactive)
|
||||
(erc :server "irc.libera.chat"
|
||||
:port "6667"))
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: erc/libera
|
||||
|
||||
* custom.el
|
||||
Custom variables. Note that this file is generally set up automatically by Emacs, so I'm not exporting this block. I'm keeping the default warning commants in just for completion here.
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(custom-set-variables
|
||||
(custom-set-variables)
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
|
@ -1300,7 +1595,7 @@ This is the state as of <2023-08-12 Sat>. I'm sure Doom Emacs will expand/ chang
|
|||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
(company +childframe) ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
|
@ -1402,7 +1697,7 @@ This is the state as of <2023-08-12 Sat>. I'm sure Doom Emacs will expand/ chang
|
|||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
|
@ -1421,7 +1716,7 @@ This is the state as of <2023-08-12 Sat>. I'm sure Doom Emacs will expand/ chang
|
|||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
|
||||
(julia +lsp) ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
|
@ -1457,7 +1752,7 @@ This is the state as of <2023-08-12 Sat>. I'm sure Doom Emacs will expand/ chang
|
|||
(zig +lsp) ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
|
@ -1531,9 +1826,7 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
(unpin! pinned-package)
|
||||
(unpin! pinned-package another-pinned-package)
|
||||
(unpin! t)
|
||||
#+end_#+begin_src
|
||||
|
||||
#+end_src
|
||||
#+end_src
|
||||
** Packages:
|
||||
*** Core
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
|
@ -1557,6 +1850,7 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
(package! battle-haxe)
|
||||
(package! fish-mode)
|
||||
(package! typescript-mode)
|
||||
(package! terraform-mode)
|
||||
(package! wc-mode)
|
||||
(package! plantuml-mode)
|
||||
(package! csv-mode)
|
||||
|
@ -1580,6 +1874,10 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
(package! org-auto-tangle)
|
||||
(package! ox-slack)
|
||||
(package! ox-tufte)
|
||||
(package! ox-gemini
|
||||
:recipe (
|
||||
:host sourcehut
|
||||
:repo "abrahms/ox-gemini"))
|
||||
(package! org-special-block-extras)
|
||||
(package! org-transclusion)
|
||||
(package! org-modern)
|
||||
|
@ -1594,9 +1892,15 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
(package! org-download)
|
||||
(package! org-cliplink)
|
||||
(package! org-roam)
|
||||
(package! org-super-agenda)
|
||||
;; (package! org-super-agenda)
|
||||
(package! org-wild-notifier)
|
||||
(package! org-habit-stats)
|
||||
#+end_src
|
||||
*** Yasnippet
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
|
||||
#+end_src
|
||||
|
||||
*** Org-depend
|
||||
Ensure task dependencies are met.
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
|
@ -1641,3 +1945,24 @@ Pretty Gantt chart for your agenda.
|
|||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! hledger-mode)
|
||||
#+end_src
|
||||
*** copilot.el
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(package! copilot
|
||||
:recipe (:host github :repo "zerolfx/copilot.el" :files ("*.el" "dist")))
|
||||
#+end_src
|
||||
*** elpher
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! elpher)
|
||||
#+end_src
|
||||
*** multiple-cursors
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! multiple-cursors)
|
||||
|
||||
#+end_src
|
||||
*** gptel
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! gptel
|
||||
:recipe (:host github
|
||||
:repo "karthink/gptel"
|
||||
:files ("*.el")))
|
||||
#+end_src
|
||||
|
|
|
@ -24,8 +24,17 @@
|
|||
(doom-themes-neotree-config)
|
||||
(doom-themes-org-config)
|
||||
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t)
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t
|
||||
doom-font (font-spec :family "Iosevka" :size 14)
|
||||
doom-big-font (font-spec :family "Iosevka" :size 16)
|
||||
;; doom-variable-pitch-font (font-spec :family "Iosevka" :size 14)
|
||||
doom-unicode-font (font-spec :family "Iosevka"))
|
||||
;; doom-serif-font (font-spec :family "IBM Plex Mono" :size 10 :weight 'light))
|
||||
|
||||
;; (set-face-attribute 'default nil :family "Iosevka")
|
||||
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
|
||||
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
|
||||
|
||||
(ligature-set-ligatures 't '("www"))
|
||||
;; Enable traditional ligature support in eww-mode, if the
|
||||
|
@ -58,6 +67,8 @@
|
|||
(setq x-stretch-cursor t)
|
||||
(setq column-number-mode t)
|
||||
|
||||
(setq-default calendar-week-start-day 1)
|
||||
|
||||
(global-set-key "\C-g" 'keyboard-quit)
|
||||
(global-set-key "\C-cu" 'browse-url-chrome)
|
||||
|
||||
|
@ -82,24 +93,21 @@
|
|||
|
||||
(setq org-image-actual-width nil)
|
||||
(setq org-enforce-todo-dependencies t)
|
||||
(setq org-insert-heading-respect-content nil)
|
||||
(setq org-reverse-note-order nil)
|
||||
(setq org-show-following-heading t)
|
||||
(setq org-show-hierarchy-above t)
|
||||
(setq org-deadline-warning-days 7)
|
||||
(setq org-blank-before-new-entry (quote ((heading . t)
|
||||
(plain-list-item . nil))))
|
||||
(setq org-num-mode t)
|
||||
(setq org-todo-repeat-to-state "LOOP")
|
||||
(setq org-remove-highlights-with-change nil)
|
||||
(setq org-read-date-prefer-future nil)
|
||||
(setq org-read-date-prefer-future t)
|
||||
(setq org-special-ctrl-a/e t)
|
||||
(setq org-special-ctrl-k t)
|
||||
(setq org-yank-adjusted-subtrees t)
|
||||
(setq org-M-RET-may-split-line t)
|
||||
(setq org-M-RET-may-split-line (quote (default . t)))
|
||||
(setq org-log-done (quote time))
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-catch-invisible-edits "smart")
|
||||
(setq org-completion-use-ido t)
|
||||
(setq org-use-property-inheritance nil)
|
||||
(setq org-duration-format 'h:mm)
|
||||
(setq org-hierarchical-todo-statistics t)
|
||||
|
@ -134,8 +142,22 @@ selected instead of creating a new buffer."
|
|||
|
||||
(setq org-element--cache-self-verify nil)
|
||||
|
||||
(setq org-image-actual-width '(600))
|
||||
|
||||
(package-initialize)
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
;; (modus-themes-load-operandi)
|
||||
|
||||
;; Choose some fonts
|
||||
;; (set-face-attribute 'default nil :family "Iosevka")
|
||||
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
|
||||
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
|
||||
|
||||
;; Add frame borders and window dividers
|
||||
(modify-all-frames-parameters
|
||||
'((right-divider-width . 2)
|
||||
'((right-divider-width . 0)
|
||||
(internal-border-width . 0)))
|
||||
(dolist (face '(window-divider
|
||||
window-divider-first-pixel
|
||||
|
@ -149,12 +171,12 @@ selected instead of creating a new buffer."
|
|||
org-auto-align-tags nil
|
||||
org-tags-column 0
|
||||
org-catch-invisible-edits 'show-and-error
|
||||
org-special-ctrl-a/e t
|
||||
org-insert-heading-respect-content t
|
||||
|
||||
;; Org styling, hide markup etc.
|
||||
org-hide-emphasis-markers t
|
||||
org-pretty-entities t
|
||||
org-ellipsis "…"
|
||||
|
||||
;; Agenda styling
|
||||
org-agenda-tags-column 0
|
||||
|
@ -164,13 +186,62 @@ selected instead of creating a new buffer."
|
|||
(800 1000 1200 1400 1600 1800 2000)
|
||||
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
|
||||
org-agenda-current-time-string
|
||||
"⌚ now ─────────────────────────────────────────────────")
|
||||
"◀── now ─────────────────────────────────────────────────")
|
||||
|
||||
;; Ellipsis styling
|
||||
;; (setq org-ellipsis "…")
|
||||
;; (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
|
||||
|
||||
(global-org-modern-mode)
|
||||
|
||||
(defun my-dir-to-org (dir org-file)
|
||||
"Create a file ORG-FILE which has all txt files in DIR as linked headlines
|
||||
and the contents of the files below the headlines."
|
||||
(interactive "DDirectory to convert: \nFFilename: ")
|
||||
(let ((files (directory-files
|
||||
dir t ".*\\.txt\\'")))
|
||||
(with-temp-file org-file
|
||||
(dolist (file files)
|
||||
(insert (concat "* " (file-name-nondirectory file) "\n\n"))
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-max))
|
||||
(insert "\n")))))
|
||||
|
||||
(defun my-dir-to-org-with-links (dir org-file)
|
||||
"Create a file ORG-FILE which has all txt files in DIR as linked headlines
|
||||
and the contents of the files below the headlines."
|
||||
(interactive "DDirectory to convert: \nFFilename: ")
|
||||
(let ((files (directory-files
|
||||
dir t ".*\\.txt\\'")))
|
||||
(with-temp-file org-file
|
||||
(dolist (file files)
|
||||
(insert (concat "* " "[[" file "][" (file-name-nondirectory file) "]]\n\n"))
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-max))
|
||||
(insert "\n")))))
|
||||
|
||||
|
||||
(defun my-mass-conversion (source-dir target-dir)
|
||||
"Create one org file per directory of SOURCE-DIR inside TARGET-DIR."
|
||||
(interactive "DDirectory to convert: \nDTarget Directory:")
|
||||
(let ((dirs-full
|
||||
(remove-if-not #'file-directory-p
|
||||
(directory-files
|
||||
source-dir t
|
||||
directory-files-no-dot-files-regexp))))
|
||||
|
||||
(mapc (lambda (dir)
|
||||
(my-dir-to-org dir
|
||||
(concat target-dir
|
||||
(file-name-base dir) ".org")))
|
||||
dirs-full)))
|
||||
|
||||
(setq-default org-enforce-todo-dependencies t)
|
||||
(setq org-enforce-todo-checkbox-dependencies t)
|
||||
|
||||
(require 'org-auto-tangle)
|
||||
(add-hook 'org-mode-hook 'org-auto-tangle-mode)
|
||||
|
||||
(add-hook 'write-file-hooks 'time-stamp)
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
|
@ -183,6 +254,23 @@ selected instead of creating a new buffer."
|
|||
;; auto-fill mode on
|
||||
(auto-fill-mode 1)))
|
||||
|
||||
(add-to-list 'font-lock-extra-managed-props 'display)
|
||||
|
||||
(font-lock-add-keywords
|
||||
'org-mode
|
||||
'(("\\({{{[a-zA-Z#%)(_-+0-9]+}}}\\)" 0
|
||||
`(face nil display
|
||||
,(format "%s"
|
||||
(let* ((input-str (match-string 0))
|
||||
(el (with-temp-buffer
|
||||
(insert input-str)
|
||||
(goto-char (point-min))
|
||||
(org-element-context)))
|
||||
(text (org-macro-expand el org-macro-templates)))
|
||||
(if text
|
||||
text
|
||||
input-str)))))))
|
||||
|
||||
(global-set-key "\C-cl" 'org-store-link)
|
||||
(global-set-key "\C-ch" 'counsel-org-link)
|
||||
(global-set-key "\C-cne" 'elgantt-open)
|
||||
|
@ -193,23 +281,37 @@ selected instead of creating a new buffer."
|
|||
(global-set-key "\C-cii" '(lambda () (interactive)
|
||||
(org-time-stamp-inactive '(16))))
|
||||
|
||||
(add-hook 'org-insert-heading-hook
|
||||
(lambda ()
|
||||
(if
|
||||
(or
|
||||
(string-match-p "journal.org" buffer-file-name)
|
||||
(string-match-p "money" buffer-file-name)
|
||||
(string-match-p "therapy.org" buffer-file-name))
|
||||
((lambda ()
|
||||
(interactive)
|
||||
(org-time-stamp-inactive '(16))
|
||||
(newline)))
|
||||
(setq org-insert-heading-hook nil)
|
||||
)))
|
||||
|
||||
(setq org-todo-keywords
|
||||
'((sequence
|
||||
"INBOX(i)"
|
||||
"TASK(t)" ; A task that needs doing & is ready to do
|
||||
"PROJ(p)" ; A project, which usually contains other tasks
|
||||
"LOOP(r)" ; A recurring task
|
||||
"WAIT(w)" ; Something external is holding up this task
|
||||
"HOLD(h)" ; This task is paused/on hold because of me
|
||||
"INBOX(i!)"
|
||||
"TASK(t!)" ; A task that needs doing & is ready to do
|
||||
"PROJ(p!)" ; A project, which usually contains other tasks
|
||||
"LOOP(r!)" ; A recurring task
|
||||
"WAIT(w!)" ; Something external is holding up this task
|
||||
"HOLD(h!)" ; This task is paused/on hold because of me
|
||||
"|"
|
||||
"DONE(d)" ; Task successfully completed
|
||||
"KILL(k)") ; Task was cancelled, aborted or is no longer applicable
|
||||
"DONE(d!@)" ; Task successfully completed
|
||||
"KILL(k!@)") ; Task was cancelled, aborted or is no longer applicable
|
||||
(sequence
|
||||
"DECIDE()" ; for making decisions
|
||||
"|"
|
||||
"OKAY(o)" ; okay as-is
|
||||
"YES(y)" ; take action
|
||||
"NO(n)")) ; don't take action
|
||||
"OKAY(o!)" ; okay as-is
|
||||
"YES(y!)" ; take action
|
||||
"NO(n!)")) ; don't take action
|
||||
org-todo-keyword-faces
|
||||
'(
|
||||
("INBOX" :foreground "cyan" :weight bold)
|
||||
|
@ -221,28 +323,14 @@ selected instead of creating a new buffer."
|
|||
("DONE" :foreground "green" :weight bold)
|
||||
("KILL" :foreground "grey" :weight bold)))
|
||||
|
||||
(add-hook 'org-insert-heading-hook
|
||||
(lambda ()
|
||||
(if
|
||||
(or
|
||||
(string-match "journal.org" buffer-file-name)
|
||||
(string-match "money" buffer-file-name)
|
||||
(string-match "therapy.org" buffer-file-name))
|
||||
((lambda ()
|
||||
(interactive)
|
||||
(org-time-stamp-inactive '(16))
|
||||
(newline)))
|
||||
(setq org-insert-heading-hook nil)
|
||||
)))
|
||||
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/agenda.org" "Inbox") "* %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/agenda.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/agenda.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "Sort")
|
||||
"* %(org-contacts-template-name)
|
||||
:PROPERTIES:
|
||||
:EMAIL: %(org-contacts-template-email)
|
||||
:PHONE: %(org-contacts-template-phone)
|
||||
:PHONE:
|
||||
:ALIAS:
|
||||
:NICKNAME:
|
||||
:IGNORE:
|
||||
|
@ -252,11 +340,166 @@ selected instead of creating a new buffer."
|
|||
:BIRTHDAY:
|
||||
:END:")))
|
||||
|
||||
(setq org-archive-default-command #'org-archive-subtree-hierarchically)
|
||||
|
||||
(defun org-archive-subtree-hierarchically (&optional prefix)
|
||||
(interactive "P")
|
||||
(let* ((fix-archive-p (and (not prefix)
|
||||
(not (use-region-p))))
|
||||
(afile (car (org-archive--compute-location
|
||||
(or (org-entry-get nil "ARCHIVE" 'inherit) org-archive-location))))
|
||||
(buffer (or (find-buffer-visiting afile) (find-file-noselect afile))))
|
||||
(org-archive-subtree prefix)
|
||||
(when fix-archive-p
|
||||
(with-current-buffer buffer
|
||||
(goto-char (point-max))
|
||||
(while (org-up-heading-safe))
|
||||
(let* ((olpath (org-entry-get (point) "ARCHIVE_OLPATH"))
|
||||
(path (and olpath (split-string olpath "/")))
|
||||
(level 1)
|
||||
tree-text)
|
||||
(when olpath
|
||||
(org-mark-subtree)
|
||||
(setq tree-text (buffer-substring (region-beginning) (region-end)))
|
||||
(let (this-command (inhibit-message t)) (org-cut-subtree)) ; we don’t want to see "Cut subtree" messages
|
||||
(goto-char (point-min))
|
||||
(save-restriction
|
||||
(widen)
|
||||
(-each path
|
||||
(lambda (heading)
|
||||
(if (re-search-forward
|
||||
(rx-to-string
|
||||
`(: bol (repeat ,level "*") (1+ " ") ,heading)) nil t)
|
||||
(org-narrow-to-subtree)
|
||||
(goto-char (point-max))
|
||||
(unless (looking-at "^")
|
||||
(insert "\n"))
|
||||
(insert (make-string level ?*)
|
||||
" "
|
||||
heading
|
||||
"\n"))
|
||||
(cl-incf level)))
|
||||
(widen)
|
||||
(org-end-of-subtree t t)
|
||||
(org-paste-subtree level tree-text))))))))
|
||||
|
||||
(setq my-linkcolor-org "wheat3")
|
||||
(setq my-linkcolor-file "MediumSeaGreen")
|
||||
(setq my-linkcolor-web "DeepSkyBlue")
|
||||
|
||||
(defun my-set-linkcolors ()
|
||||
"Defines the colors of various link colors"
|
||||
(interactive)
|
||||
|
||||
;; Org links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "id" :face `(:foreground ,my-linkcolor-org :underline t))
|
||||
(org-link-set-parameters "contact" :face `(:foreground ,my-linkcolor-org :underline t))
|
||||
|
||||
;; File links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "file" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
;; defined elsewhere;; (org-link-set-parameters "tsfile" :face '`(:foreground "DarkSeaGreen" :underline t))
|
||||
(org-link-set-parameters "pdf" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
|
||||
(org-link-set-parameters "EPA" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "EPAAFO" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "JAFO" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "DAKEPA" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "BMTSK" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "ISO" :face `(:foreground ,my-linkcolor-file :underline t))
|
||||
|
||||
(org-link-set-parameters "gemSpec_DS_Anbieter"
|
||||
:face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "gemSpec_Net"
|
||||
:face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "gemSpec_PKI"
|
||||
:face `(:foreground ,my-linkcolor-file :underline t))
|
||||
(org-link-set-parameters "gemSpec_IDP_Dienst"
|
||||
:face `(:foreground ,my-linkcolor-file :underline t))
|
||||
|
||||
(org-link-set-parameters "messageid"
|
||||
:face `(:foreground ,my-linkcolor-file :underline t))
|
||||
|
||||
;; Web links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "http" :face `(:foreground ,my-linkcolor-web :underline t))
|
||||
(org-link-set-parameters "https" :face `(:foreground ,my-linkcolor-web :underline t))
|
||||
|
||||
)
|
||||
|
||||
(defun my-set-linkcolors ()
|
||||
"Defines the colors of various link colors"
|
||||
(interactive)
|
||||
|
||||
;; Org links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "id" :face '(:foreground "wheat3" :underline t))
|
||||
(org-link-set-parameters "contact" :face '(:foreground "wheat3" :underline t))
|
||||
|
||||
;; File links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "file" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
;; defined elsewhere;; (org-link-set-parameters "tsfile" :face ''(:foreground "DarkSeaGreen" :underline t))
|
||||
(org-link-set-parameters "pdf" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
|
||||
(org-link-set-parameters "EPA" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "EPAAFO" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "JAFO" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "DAKEPA" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "BMTSK" :face '(:foreground "MediumSeaGreen" :underline t))
|
||||
|
||||
(org-link-set-parameters "gemSpec_DS_Anbieter"
|
||||
:face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "gemSpec_Net"
|
||||
:face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "gemSpec_PKI"
|
||||
:face '(:foreground "MediumSeaGreen" :underline t))
|
||||
(org-link-set-parameters "gemSpec_IDP_Dienst"
|
||||
:face '(:foreground "MediumSeaGreen" :underline t))
|
||||
|
||||
(org-link-set-parameters "messageid"
|
||||
:face '(:foreground "MediumSeaGreen" :underline t))
|
||||
|
||||
;; Web links --------------------------------------------------------------------------
|
||||
|
||||
(org-link-set-parameters "http" :face '(:foreground "DeepSkyBlue" :underline t))
|
||||
(org-link-set-parameters "https" :face '(:foreground "DeepSkyBlue" :underline t))
|
||||
|
||||
)
|
||||
|
||||
(my-set-linkcolors) ;; set colors when loading
|
||||
|
||||
|
||||
|
||||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e/")
|
||||
|
||||
(setq mu4e-change-filenames-when-moving t)
|
||||
(setq mu4e-update-interval (* 10 60))
|
||||
(setq mu4e-get-mail-command "mbsync -a")
|
||||
(setq mu4e-maildir "~/enc/.mail")
|
||||
|
||||
(setq mu4e-drafts-folder "/Drafts")
|
||||
(setq mu4e-sent-folder "/Sent")
|
||||
(setq mu4e-refile-folder "/Refile")
|
||||
(setq mu4e-trash-folder "/Trash")
|
||||
|
||||
(mu4e t)
|
||||
|
||||
;; (load (expand-file-name "~/.roswell/helper.el"))
|
||||
|
||||
(setq inferior-lisp-program "sbcl --dynamic-space-size 8192 -Q -l ~/.sbclrc")
|
||||
|
||||
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
|
||||
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
|
||||
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
|
||||
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
|
||||
|
||||
(use-package! org-transclusion
|
||||
:after org
|
||||
:init
|
||||
(map!
|
||||
:map global-map "<F12>" #'org-transclusion-add
|
||||
:map global-map "<f12>" #'org-transclusion-add
|
||||
:leader
|
||||
:prefix "n"
|
||||
:desc "Org Transclusion Mode" "t" #'org-transclusion-mode))
|
||||
|
@ -265,7 +508,18 @@ selected instead of creating a new buffer."
|
|||
|
||||
(with-eval-after-load 'ox-latex
|
||||
(add-to-list 'org-latex-classes
|
||||
'("memoir"
|
||||
'("tufte-handout"
|
||||
"\\documentclass[nobib]{tufte-handout}
|
||||
\\usepackage{nicefrac}
|
||||
\\usepackage{units}
|
||||
[NO-DEFAULT-PACKAGES]
|
||||
[EXTRA]"
|
||||
("\\section{%s}" . "\\section*{%s}")
|
||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
|
||||
'("memoir"
|
||||
"\\documentclass{memoir}"
|
||||
("\\chapter{%s}" . "\\chapter*{%s}")
|
||||
("\\section{%s}" . "\\section*{%s}")
|
||||
|
@ -290,11 +544,14 @@ selected instead of creating a new buffer."
|
|||
(global-set-key (kbd "C-c l r") 'org-super-links-quick-related)
|
||||
(global-set-key (kbd "C-c l d") 'org-super-links-delete-link)
|
||||
|
||||
(org-wild-notifier-mode)
|
||||
|
||||
(setq org-wild-notifier-alert-time '(10))
|
||||
(setq org-wild-notifier-notification-title "Emacs org-mode agenda")
|
||||
(setq org-wild-notifier-keyword-whitelist '("TODO"))
|
||||
(org-wild-notifier-mode)
|
||||
(setq alert-default-style 'libnotify
|
||||
org-wild-notifier-alert-time '(0 5 15 60)
|
||||
org-wild-notifier-keyword-whitelist nil
|
||||
;; good for testing
|
||||
org-wild-notifier--alert-severity 'high
|
||||
alert-fade-time 50
|
||||
)
|
||||
|
||||
(setq org-refile-targets '((nil :maxlevel . 9)
|
||||
(org-agenda-files :maxlevel . 9)))
|
||||
|
@ -303,13 +560,6 @@ selected instead of creating a new buffer."
|
|||
|
||||
(setq org-contacts-files '("~/enc/org/people.org"))
|
||||
|
||||
(define-prefix-command 'org-roam-map)
|
||||
(global-set-key "\C-r" 'org-roam-map)
|
||||
(define-key org-roam-map "o" 'org-roam-buffer-toggle)
|
||||
(define-key org-roam-map "f" 'org-roam-node-find)
|
||||
(define-key org-roam-map "i" 'org-roam-node-insert)
|
||||
(define-key org-roam-map "n" 'org-roam-capture)
|
||||
|
||||
(setq org-roam-v2-ack t)
|
||||
(setq org-roam-completion-everywhere t)
|
||||
(setq org-roam-directory
|
||||
|
@ -334,6 +584,13 @@ selected instead of creating a new buffer."
|
|||
:empty-lines 1
|
||||
:unnarrowed)))
|
||||
|
||||
(define-prefix-command 'org-roam-map)
|
||||
(global-set-key "\C-r" 'org-roam-map)
|
||||
(define-key org-roam-map "o" 'org-roam-buffer-toggle)
|
||||
(define-key org-roam-map "f" 'org-roam-node-find)
|
||||
(define-key org-roam-map "i" 'org-roam-node-insert)
|
||||
(define-key org-roam-map "n" 'org-roam-capture)
|
||||
|
||||
(global-set-key "\C-ca" 'org-agenda)
|
||||
(define-prefix-command 'org-agenda-map)
|
||||
(global-set-key "\C-a" 'org-agenda-map)
|
||||
|
@ -341,28 +598,25 @@ selected instead of creating a new buffer."
|
|||
(define-key org-agenda-map "a" 'org-agenda)
|
||||
|
||||
(setq org-agenda-start-day nil
|
||||
org-agenda-span '14
|
||||
org-agenda-dim-blocked-tasks 'invisible
|
||||
org-agenda-span 'day
|
||||
org-agenda-dim-blocked-tasks t
|
||||
org-agenda-sorting-strategy
|
||||
'((agenda habit-down time-up priority-down category-keep)
|
||||
(todo priority-down category-keep)
|
||||
(search category-keep))
|
||||
org-deadline-warning-days 3
|
||||
org-agenda-insert-diary-extract-time t
|
||||
'(time-up priority-up category-keep)
|
||||
org-deadline-warning-days 4
|
||||
org-log-into-drawer t
|
||||
org-treat-insert-todo-heading-as-state-change t
|
||||
org-clock-into-drawer t
|
||||
org-agenda-log-mode-items '(closed clock state)
|
||||
org-agenda-prefix-format "%l %i %c %s %t")
|
||||
org-agenda-prefix-format '((agenda . " %l %i %c %s %t")
|
||||
(todo . " %i %-12:c")
|
||||
(tags . " %i $-12:c")
|
||||
(search . " %i %-12:c"))
|
||||
org-agenda-compact-blocks nil
|
||||
org-agenda-use-tag-inheritance (quote (agenda));; agenda performance
|
||||
org-agenda-block-separator "---------")
|
||||
|
||||
(setq org-agenda-compact-blocks t)
|
||||
(setq org-agenda-use-tag-inheritance (quote (agenda)));; agenda performance
|
||||
(setq org-agenda-span 1)
|
||||
(add-hook 'org-agenda-mode-hook '(lambda () (hl-line-mode 1)))
|
||||
|
||||
(setq org-agenda-custom-commands
|
||||
(quote (("x" "Phil's view" agenda ""
|
||||
((org-agenda-prefix-format " %i %-12:c %s %t "))))))
|
||||
|
||||
(setq org-agenda-skip-deadline-if-done t)
|
||||
|
||||
(setq org-agenda-skip-scheduled-if-done t)
|
||||
|
@ -380,7 +634,7 @@ selected instead of creating a new buffer."
|
|||
(setq org-agenda-show-all-dates t)
|
||||
|
||||
(setq org-agenda-sorting-strategy
|
||||
(quote ((agenda habit-down time-up user-defined-up priority-down category-keep)
|
||||
(quote ((agenda time-up user-defined-up priority-down category-keep)
|
||||
(todo priority-down category-keep)
|
||||
(tags priority-down category-keep)
|
||||
(search category-keep))))
|
||||
|
@ -411,6 +665,17 @@ selected instead of creating a new buffer."
|
|||
(org-export-string-as region 'md t '(:with-toc nil))))
|
||||
(gui-set-selection 'CLIPBOARD markdown))))
|
||||
|
||||
(add-to-list 'org-modules 'habit)
|
||||
(setq org-habit-following-days 2
|
||||
org-habit-preceding-days 7
|
||||
org-habit-show-all-today nil
|
||||
org-habit-show-habits-only-for-today t
|
||||
org-habit-show-habits t)
|
||||
|
||||
(define-key org-mode-map (kbd "C-c h") 'org-habit-stats-view-habit-at-point)
|
||||
(define-key org-agenda-mode-map (kbd "H") 'org-habit-stats-view-habit-at-point-agenda)
|
||||
(add-hook 'org-after-todo-state-change-hook 'org-habit-stats-update-properties)
|
||||
|
||||
(setq doom-snippets-enable-short-helpers t)
|
||||
|
||||
(setq dired-open-extensions '(("gif" . "sxiv")
|
||||
|
@ -436,3 +701,33 @@ selected instead of creating a new buffer."
|
|||
;;; Auto-completion for account names
|
||||
;; For company-mode users,
|
||||
(add-to-list 'company-backends 'hledger-company)
|
||||
|
||||
(use-package! gptel
|
||||
:config
|
||||
(setq! gptel-api-key "your key")
|
||||
(setq! gptel-max-tokens 8192)
|
||||
(setq
|
||||
gptel-model "model"
|
||||
gptel-backend (gptel-make-openai "llama-cpp"
|
||||
:stream t
|
||||
:protocol "http"
|
||||
:host "localhost:5000"
|
||||
:models '("model"))))
|
||||
(gptel-make-openai "llama-cpp" ;Any name
|
||||
:stream t ;Stream responses
|
||||
:protocol "http"
|
||||
:host "localhost:5000" ;Llama.cpp server location
|
||||
:models '("model")) ;Any names, doesn't matter for Llama
|
||||
|
||||
(setq gptel--debug t)
|
||||
|
||||
;; Set our nickname & real-name as constant variables
|
||||
(setq
|
||||
erc-nick "phil_bb" ; Our IRC nick
|
||||
erc-user-full-name "Phil B.") ; Our /whois name
|
||||
|
||||
;; Define a function to connect to a server
|
||||
(defun erc/libera ()
|
||||
(interactive)
|
||||
(erc :server "irc.libera.chat"
|
||||
:port "6667"))
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(ignored-local-variable-values '((org-ql-ask-unsafe-queries)))
|
||||
'(magit-todos-insert-after '(bottom) nil nil "Changed by setter of obsolete option `magit-todos-insert-at'")
|
||||
'(org-safe-remote-resources
|
||||
'("\\`https://lvxnox\\.com/org-html-themes/org/theme-readtheorg\\.setup\\'" "\\`https://bajsicki\\.com/org-html-themes/org/theme-readtheorg\\.setup\\'")))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
||||
(put 'narrow-to-region 'disabled nil)
|
|
@ -21,7 +21,7 @@
|
|||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
(company +childframe) ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
|
@ -123,7 +123,7 @@
|
|||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
|
@ -142,7 +142,7 @@
|
|||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
|
||||
(julia +lsp) ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
|
@ -178,7 +178,7 @@
|
|||
(zig +lsp) ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
(package! battle-haxe)
|
||||
(package! fish-mode)
|
||||
(package! typescript-mode)
|
||||
(package! terraform-mode)
|
||||
(package! wc-mode)
|
||||
(package! plantuml-mode)
|
||||
(package! csv-mode)
|
||||
|
@ -28,6 +29,10 @@
|
|||
(package! org-auto-tangle)
|
||||
(package! ox-slack)
|
||||
(package! ox-tufte)
|
||||
(package! ox-gemini
|
||||
:recipe (
|
||||
:host sourcehut
|
||||
:repo "abrahms/ox-gemini"))
|
||||
(package! org-special-block-extras)
|
||||
(package! org-transclusion)
|
||||
(package! org-modern)
|
||||
|
@ -42,8 +47,11 @@
|
|||
(package! org-download)
|
||||
(package! org-cliplink)
|
||||
(package! org-roam)
|
||||
(package! org-super-agenda)
|
||||
;; (package! org-super-agenda)
|
||||
(package! org-wild-notifier)
|
||||
(package! org-habit-stats)
|
||||
|
||||
|
||||
|
||||
(package! org-edna)
|
||||
(package! org-super-links
|
||||
|
@ -62,3 +70,12 @@
|
|||
(package! qrencode)
|
||||
|
||||
(package! hledger-mode)
|
||||
|
||||
(package! elpher)
|
||||
|
||||
(package! multiple-cursors)
|
||||
|
||||
(package! gptel
|
||||
:recipe (:host github
|
||||
:repo "karthink/gptel"
|
||||
:files ("*.el")))
|
||||
|
|
|
@ -24,10 +24,10 @@
|
|||
# dynamic width from 0 to 300
|
||||
# width = (0, 300)
|
||||
# constant width of 300
|
||||
width = 300
|
||||
width = 200
|
||||
|
||||
# The maximum height of a single notification, excluding the frame.
|
||||
height = 300
|
||||
height = 200
|
||||
|
||||
# Position the notification in the top right corner
|
||||
origin = top-right
|
||||
|
@ -36,7 +36,7 @@
|
|||
offset = 10x50
|
||||
|
||||
# Scale factor. It is auto-detected if value is 0.
|
||||
scale = 2
|
||||
scale = 1
|
||||
|
||||
# Maximum number of notification (0 means no limit)
|
||||
notification_limit = 20
|
||||
|
@ -58,13 +58,13 @@
|
|||
progress_bar_min_width = 150
|
||||
|
||||
# Set the maximum width for the progress bar
|
||||
progress_bar_max_width = 300
|
||||
progress_bar_max_width = 180
|
||||
|
||||
# Corner radius for the progress bar. 0 disables rounded corners.
|
||||
progress_bar_corner_radius = 0
|
||||
|
||||
# Corner radius for the icon image.
|
||||
icon_corner_radius = 2
|
||||
icon_corner_radius = 0
|
||||
|
||||
# Show how many messages are currently hidden (because of
|
||||
# notification_limit).
|
||||
|
@ -123,7 +123,7 @@
|
|||
|
||||
### Text ###
|
||||
|
||||
font = Iosevka 24
|
||||
font = Iosevka 10
|
||||
|
||||
# The spacing between lines. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
|
|
|
@ -9,8 +9,11 @@ This is the fish config I use. It's largely a copy of [[https://gitlab.com/dwt1]
|
|||
First line removes the path; second line sets it. Without the first line, your path gets massive and fish becomes very slow.
|
||||
#+begin_src fish
|
||||
set -e fish_user_paths
|
||||
set -U fish_user_paths $HOME/.local/bin $HOME/Applications $HOME/.cabal/bin $HOME/.ghcup/bin $fish_user_paths
|
||||
set -U fish_user_paths $HOME/apps/bin $HOME/.local/bin $HOME/Applications $HOME/.cabal/bin $HOME/.ghcup/bin $HOME/.deno/bin $fish_user_paths
|
||||
|
||||
set -U EDITOR emacsclient -c --alternate-editor=''
|
||||
set -Ux PASSWORD_STORE_DIR $HOME/enc/keys/pass/
|
||||
set -U PLANTUML_LIMIT_SIZE 16384
|
||||
|
||||
set -e SSH_AGENT_PID
|
||||
if not set -q gnupg_SSH_AUTH_SOCK_by or test $gnupg_SSH_AUTH_SOCK_by -ne $fish_pid
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
set -e fish_user_paths
|
||||
set -U fish_user_paths $HOME/.local/bin $HOME/Applications $HOME/.cabal/bin $HOME/.ghcup/bin $fish_user_paths
|
||||
set -U fish_user_paths $HOME/apps/bin $HOME/.local/bin $HOME/Applications $HOME/.cabal/bin $HOME/.ghcup/bin $HOME/.deno/bin $fish_user_paths
|
||||
|
||||
set -U EDITOR emacsclient -c --alternate-editor=''
|
||||
set -Ux PASSWORD_STORE_DIR $HOME/enc/keys/pass/
|
||||
set -U PLANTUML_LIMIT_SIZE 16384
|
||||
|
||||
set -e SSH_AGENT_PID
|
||||
if not set -q gnupg_SSH_AUTH_SOCK_by or test $gnupg_SSH_AUTH_SOCK_by -ne $fish_pid
|
||||
|
|
|
@ -1,6 +1,19 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export EDITOR:emacsclient\x20\x2dt\x20\x2da\x20\x27\x27
|
||||
SETUVAR --export OPENAI_KEY:sk\x2dB0HWnLwlztPylJXMpiD2T3BlbkFJfVBvamToU5QseBlGju1s
|
||||
SETUVAR --export PASSWORD_STORE_DIR:/home/phil/enc/keys/pass/
|
||||
SETUVAR PLANTUML_LIMIT_SIZE:16384
|
||||
SETUVAR ZO_CMD:zo
|
||||
SETUVAR Z_CMD:z
|
||||
SETUVAR Z_DATA:/home/phil/\x2elocal/share/z/data
|
||||
SETUVAR Z_DATA_DIR:/home/phil/\x2elocal/share/z
|
||||
SETUVAR Z_EXCLUDE:\x5e/home/phil\x24
|
||||
SETUVAR __fish_initialized:3400
|
||||
SETUVAR _fisher_edc_2F_bass_files:\x7e/\x2econfig/fish/functions/__bass\x2epy\x1e\x7e/\x2econfig/fish/functions/bass\x2efish
|
||||
SETUVAR _fisher_jethrokuan_2F_z_files:\x7e/\x2econfig/fish/functions/__z\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_add\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_complete\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/z\x2efish
|
||||
SETUVAR _fisher_plugins:edc/bass\x1ejethrokuan/z
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_color_cancel:\x2dr
|
||||
SETUVAR fish_color_comment:red
|
||||
SETUVAR fish_color_cwd:green
|
||||
|
@ -24,4 +37,4 @@ SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
|
|||
SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||
SETUVAR fish_user_paths:/home/phil/\x2elocal/bin\x1e/home/phil/Applications\x1e/home/phil/\x2ecabal/bin\x1e/home/phil/\x2eghcup/bin
|
||||
SETUVAR fish_user_paths:/home/phil/apps/bin\x1e/home/phil/\x2elocal/bin\x1e/home/phil/Applications\x1e/home/phil/\x2ecabal/bin\x1e/home/phil/\x2eghcup/bin\x1e/home/phil/\x2edeno/bin
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# monitor=eDP-1, 1920x1080@60, 1920x0, 1
|
||||
monitor=eDP-2, 1920x1080@60, 1920x0, 1
|
||||
monitor=HDMI-A-1, 1920x1080@60, 0x0, 1
|
||||
monitor=eDP-1, 1920x1080@165, 1920x0, 1
|
||||
monitor=eDP-2, 1920x1080@165, 1920x0, 1
|
||||
monitor=DP-2, 1920x1080@60, 1920x1080, 1
|
||||
monitor=DP-1, 1920x1080@60, 3840x0, 1
|
||||
monitor=DP-2, 1920x1080@60, 1920x1080, 1
|
||||
|
||||
input {
|
||||
kb_layout = pl
|
||||
|
@ -15,12 +15,11 @@ input {
|
|||
}
|
||||
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_in = 10
|
||||
gaps_out = 20
|
||||
border_size = 2
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) -45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
layout = master
|
||||
}
|
||||
|
||||
|
@ -28,18 +27,18 @@ decoration {
|
|||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
rounding = 0
|
||||
blur {
|
||||
enabled = true
|
||||
enabled = false
|
||||
size = 3
|
||||
passes = 1
|
||||
}
|
||||
drop_shadow = yes
|
||||
drop_shadow = no
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes
|
||||
enabled = no
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
|
@ -57,7 +56,7 @@ dwindle {
|
|||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
new_is_master = true
|
||||
new_is_master = false
|
||||
inherit_fullscreen = true
|
||||
mfact = 0.65
|
||||
}
|
||||
|
@ -68,7 +67,26 @@ gestures {
|
|||
}
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRSHOT_DIR,"~/enc/pictures/screenshots"
|
||||
|
||||
env = GBM_BACKEND,nvidia-drm
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
env = __GL_VRR_ALLOWED,0
|
||||
|
||||
|
||||
env = GDK_BACKEND,wayland,x11,*
|
||||
env = SDL_VIDEODRIVER,wayland
|
||||
env = CLUTTER_BACKEND,wayland
|
||||
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = XDG_SESSION_DESKTOP,Hyprland
|
||||
|
||||
env = QT_QPA_PLATFORM,wayland;xcb
|
||||
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
||||
env = QT_QPA_PLATFORMTHEME,qt5ct
|
||||
|
||||
env = HYPRSHOT_DIR,enc/pictures/screenshots
|
||||
|
||||
$mainMod = SUPER
|
||||
bind = CTRL_SHIFT_ALT, Q, killactive,
|
||||
|
|
|
@ -43,11 +43,11 @@ Config {
|
|||
-- Ram used number and percent
|
||||
, Run Memory ["-t", "<fn=2>\xf233</fn> mem: <used>M <usedratio>%"] 20
|
||||
-- Disk space free
|
||||
, Run DiskU [("/", "<fn=2>\xf0c7</fn> hdd: <free> free")] [] 60
|
||||
, Run DiskU [("/", "<fn=2>\xf0c7</fn> /: <free> free")] [] 60
|
||||
-- Echos an "up arrow" icon in front of the uptime output.
|
||||
, Run Com "echo" ["<fn=2>\xf0aa</fn>"] "uparrow" 3600
|
||||
-- , Run Com "echo" ["<fn=2>\xf0aa</fn>"] "uparrow" 3600
|
||||
-- Uptime
|
||||
, Run Uptime ["-t", "uptime: <days>:<hours>:<minutes>"] 360
|
||||
-- , Run Uptime ["-t", "uptime: <days>:<hours>:<minutes>"] 360
|
||||
-- Echos a "bell" icon in front of the pacman updates.
|
||||
-- , Run Com "echo" ["<fn=2>\xf0f3</fn>"] "bell" 3600
|
||||
-- Check for pacman updates (script found in .local/bin)
|
||||
|
@ -64,4 +64,4 @@ Config {
|
|||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = "%UnsafeXMonadLog% }{ <box type=Bottom width=2 mb=2 color=#b5bd68><fc=#b5bd68>%cpu%</fc></box> <box type=Bottom width=2 mb=2 color=#e6c547><fc=#e6c547>%memory%</fc></box> <box type=Bottom width=2 mb=2 color=#81a2be><fc=#81a2be>%disku%</fc></box> <box type=Bottom width=2 mb=2 color=#b294bb><fc=#b294bb>%uparrow% %uptime%</fc></box> <box type=Bottom width=2 mb=2 color=#ff3334><fc=#ff3334>%baticon% %battery%</fc></box> <box type=Bottom width=2 mb=2 color=#9ec400><fc=#9ec400>%date%</fc></box> %trayerpad%"
|
||||
, template = "%UnsafeXMonadLog% }{ <box type=Bottom width=2 mb=2 color=#b5bd68><fc=#b5bd68>%cpu%</fc></box> <box type=Bottom width=2 mb=2 color=#e6c547><fc=#e6c547>%memory%</fc></box> <box type=Bottom width=2 mb=2 color=#81a2be><fc=#81a2be>%disku%</fc></box> <box type=Bottom width=2 mb=2 color=#ff3334><fc=#ff3334>%baticon% %battery%</fc></box> <box type=Bottom width=2 mb=2 color=#9ec400><fc=#9ec400>%date%</fc></box> %trayerpad%"
|
||||
|
|
67
.config/xmobar/tomorrow-night-xmobarrc-no-trayer
Normal file
67
.config/xmobar/tomorrow-night-xmobarrc-no-trayer
Normal file
|
@ -0,0 +1,67 @@
|
|||
-- Xmobar (http://projects.haskell.org/xmobar/)
|
||||
-- This is one of the xmobar configurations for DTOS.
|
||||
-- This config is packaged in the DTOS repo as 'dtos-xmobar'
|
||||
-- Color scheme: Tomorrow Night
|
||||
-- Dependencies:
|
||||
-- otf-font-awesome
|
||||
-- ttf-mononoki
|
||||
-- ttf-ubuntu-font-family
|
||||
-- htop
|
||||
-- emacs
|
||||
-- pacman (Arch Linux)
|
||||
-- trayer
|
||||
-- 'dtos-local-bin' (from dtos-core-repo)
|
||||
|
||||
Config {
|
||||
font = "xft:Iosevka-12"
|
||||
, additionalFonts = [ "xft:Mononoki:pixelsize=8:antialias=true:hinting=true"
|
||||
, "xft:Font Awesome 6 Free Solid:pixelsize=10"
|
||||
, "xft:Font Awesome 6 Brands:pixelsize=10"
|
||||
]
|
||||
, bgColor = "#1d1f21"
|
||||
, fgColor = "#ffffff"
|
||||
-- Position TopSize and BottomSize take 3 arguments:
|
||||
-- an alignment parameter (L/R/C) for Left, Right or Center.
|
||||
-- an integer for the percentage width, so 100 would be 100%.
|
||||
-- an integer for the minimum pixel height for xmobar, so 24 would force a height of at least 24 pixels.
|
||||
-- NOTE: The height should be the same as the trayer (system tray) height.
|
||||
, position = TopSize L 100 16
|
||||
, lowerOnStart = True
|
||||
, hideOnStart = False
|
||||
, allDesktops = True
|
||||
, persistent = True
|
||||
, iconRoot = ".config/xmonad/xpm/" -- default: "."
|
||||
, commands = [
|
||||
Run UnsafeXMonadLog
|
||||
, Run StdinReader
|
||||
-- Echos a "penguin" icon in front of the kernel output.
|
||||
-- Run Com "echo" ["<fn=3>\xf17c</fn>"] "penguin" 3600
|
||||
-- Get kernel version (script found in .local/bin)
|
||||
-- , Run Com ".local/bin/kernel" [] "kernel" 36000
|
||||
-- Cpu usage in percent
|
||||
, Run Cpu ["-t", "<fn=2>\xf108</fn> cpu: <total>%","-H","50","--high","red"] 20
|
||||
-- Ram used number and percent
|
||||
, Run Memory ["-t", "<fn=2>\xf233</fn> mem: <used>M <usedratio>%"] 20
|
||||
-- Disk space free
|
||||
, Run DiskU [("/", "<fn=2>\xf0c7</fn> /: <free> free")] [] 60
|
||||
-- Echos an "up arrow" icon in front of the uptime output.
|
||||
-- , Run Com "echo" ["<fn=2>\xf0aa</fn>"] "uparrow" 3600
|
||||
-- Uptime
|
||||
-- , Run Uptime ["-t", "uptime: <days>:<hours>:<minutes>"] 360
|
||||
-- Echos a "bell" icon in front of the pacman updates.
|
||||
-- , Run Com "echo" ["<fn=2>\xf0f3</fn>"] "bell" 3600
|
||||
-- Check for pacman updates (script found in .local/bin)
|
||||
-- , Run Com ".local/bin/pacupdate" [] "pacupdate" 36000
|
||||
-- Echos a "battery" icon in front of the pacman updates.
|
||||
, Run Com "echo" ["<fn=2>\xf242</fn>"] "baticon" 3600
|
||||
-- Battery
|
||||
, Run BatteryP ["BAT0"] ["-t", "<acstatus><watts> <left>%"] 360
|
||||
-- Time and date
|
||||
, Run Date "<fn=2>\xf017</fn>%d.%m.%Y %H:%M " "date" 50
|
||||
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
|
||||
--, Run Com ".config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
|
||||
-- Prints out the left side items such as workspaces, layout, etc.
|
||||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = "%UnsafeXMonadLog% }{ <box type=Bottom width=2 mb=2 color=#b5bd68><fc=#b5bd68>%cpu%</fc></box> <box type=Bottom width=2 mb=2 color=#e6c547><fc=#e6c547>%memory%</fc></box> <box type=Bottom width=2 mb=2 color=#81a2be><fc=#81a2be>%disku%</fc></box> <box type=Bottom width=2 mb=2 color=#ff3334><fc=#ff3334>%baticon% %battery%</fc></box> <box type=Bottom width=2 mb=2 color=#9ec400><fc=#9ec400>%date%</fc></box>"
|
1
.config/xmobar/xmobarrc-no-trayer
Symbolic link
1
.config/xmobar/xmobarrc-no-trayer
Symbolic link
|
@ -0,0 +1 @@
|
|||
tomorrow-night-xmobarrc-no-trayer
|
|
@ -265,8 +265,11 @@ I'm Polish, so I type on a Polish layout. I also extensively use the compose key
|
|||
**** Wallpaper
|
||||
Randomize wallpaper. Requires /feh/. You can change the path to any directory with wallpapers for consistent variety.
|
||||
#+begin_src haskell
|
||||
spawnOnce "feh --randomize --bg-fill /usr/share/backgrounds/archlinux/*"
|
||||
spawnOnce "feh --recursive --randomize --bg-fill /mnt/ext1/media/Images/Wallpapers/*"
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
|
||||
**** Trayer
|
||||
Trayer is a system tray, which works well with XMobar. This restarts it every time XMonad is reinitialized to avoid weirdness.
|
||||
#+begin_src haskell
|
||||
|
@ -343,8 +346,9 @@ myXmobarPP = def
|
|||
#+end_src
|
||||
#+begin_src haskell
|
||||
xmobar0 = statusBarProp "xmobar -x 0 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar1 = statusBarProp "xmobar -x 1 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar2 = statusBarProp "xmobar -x 2 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar1 = statusBarProp "xmobar -x 1 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
xmobar2 = statusBarProp "xmobar -x 2 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
xmobar3 = statusBarProp "xmobar -x 3 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
#+end_src
|
||||
* Main XMonad loop
|
||||
|
||||
|
@ -354,11 +358,12 @@ main = do
|
|||
#+end_src
|
||||
|
||||
** XMobar
|
||||
Launching three instances of xmobar on their monitors.
|
||||
Launching four instances of xmobar on their monitors.
|
||||
#+begin_src haskell :tangle no
|
||||
xmproc0 <- spawnPipe ("xmobar -x 0 $HOME/.config/xmobar/xmobarrc")
|
||||
xmproc1 <- spawnPipe ("xmobar -x 1 $HOME/.config/xmobar/xmobarrc")
|
||||
xmproc2 <- spawnPipe ("xmobar -x 2 $HOME/.config/xmobar/xmobarrc")
|
||||
xmproc1 <- spawnPipe ("xmobar -x 1 $HOME/.config/xmobar/xmobarrc-no-trayer")
|
||||
xmproc2 <- spawnPipe ("xmobar -x 2 $HOME/.config/xmobar/xmobarrc-no-trayer")
|
||||
xmproc3 <- spawnPipe ("xmobar -x 3 $HOME/.config/xmobar/xmobarrc-no-trayer")
|
||||
#+end_src
|
||||
|
||||
** XMonad & manageHook
|
||||
|
|
|
@ -139,7 +139,7 @@ myStartupHook = do
|
|||
|
||||
spawnOnce "gocryptfs ~/.bajsicki enc --extpass lxqt-openssh-askpass"
|
||||
|
||||
spawnOnce "feh --randomize --bg-fill /usr/share/backgrounds/archlinux/*"
|
||||
spawnOnce "feh --recursive --randomize --bg-fill /mnt/ext1/media/Images/Wallpapers/*"
|
||||
|
||||
spawn "killall trayer" -- kill current trayer on each
|
||||
spawn ("sleep 2 && trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 1 --transparent true --alpha 0 " ++ colorTrayer ++ " --height 20")
|
||||
|
@ -192,8 +192,9 @@ myXmobarPP = def
|
|||
lowWhite = xmobarColor "#bbbbbb" ""
|
||||
|
||||
xmobar0 = statusBarProp "xmobar -x 0 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar1 = statusBarProp "xmobar -x 1 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar2 = statusBarProp "xmobar -x 2 ~/.config/xmobar/xmobarrc" (pure myXmobarPP)
|
||||
xmobar1 = statusBarProp "xmobar -x 1 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
xmobar2 = statusBarProp "xmobar -x 2 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
xmobar3 = statusBarProp "xmobar -x 2 ~/.config/xmobar/xmobarrc-no-trayer" (pure myXmobarPP)
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
|
|
|
@ -11,8 +11,8 @@ export _JAVA_AWT_WM_NONREPARENTING=1
|
|||
export XCURSOR_SIZE=24
|
||||
export WLR_RENDERER=vulkan
|
||||
export PLANTUML_LIMIT_SIZE=16384
|
||||
|
||||
export XKB_DEFAULT_LAYOUT="pl"
|
||||
export XKB_DEFAULT_OPTIONS="compose:rctrl"
|
||||
|
||||
sway --unsupported-gpu &
|
||||
val=$(udevadm info -a -n /dev/dri/card1 | grep boot_vga | rev | cut -c 2)
|
||||
WLR_DRM_DEVICES="/dev/dri/card$val" sway
|
||||
|
|
Loading…
Reference in a new issue