Add startup notification

Add better pdftools and ready player toggle
Add org-roam toggle based on directory location
Add paradox modding support
This commit is contained in:
Jakub 2025-11-14 12:03:45 +08:00
parent 5475803398
commit b8e9d592aa
4 changed files with 139 additions and 100 deletions

View file

@ -85,3 +85,7 @@
(load-directory (concat user-emacs-directory "workflows")) (load-directory (concat user-emacs-directory "workflows"))
;; Custom screens ;; Custom screens
(load-directory (concat user-emacs-directory "screens")) (load-directory (concat user-emacs-directory "screens"))
(unless (fboundp 'notifications-notify)
(require 'notifications))
(notifications-notify :title "Emacs Server Started" :app-name "Emacs")

View file

@ -51,27 +51,27 @@
:config :config
(add-hook 'dired-mode-hook 'all-the-icons-dired-mode)) (add-hook 'dired-mode-hook 'all-the-icons-dired-mode))
(defcustom theurgy-enable-pdf-tools-windows nil (defcustom theurgy-enable-pdf-tools (equal system-type 'gnu/linux)
"Whether `pdf-tools' should be enabled on Windows sytems." "Whether `pdf-tools' should be enabled on Windows sytems."
:type 'boolean :type 'boolean
:group 'theurgy :group 'theurgy
:group 'theurgy-compat) :group 'theurgy-compat)
(defcustom theurgy-enable-ready-player-windows nil (defcustom theurgy-enable-ready-player (equal system-type 'gnu/linux)
"Whether `ready-player' should be enabled on Windows sytems." "Whether `ready-player' should be enabled on Windows sytems."
:type 'boolean :type 'boolean
:group 'theurgy :group 'theurgy
:group 'theurgy-compat) :group 'theurgy-compat)
;; Multimedia and PDF viewing ;; Multimedia and PDF viewing
(when (or (equal system-type 'gnu/linux) theurgy-enable-ready-player-windows) (when theurgy-enable-ready-player-windows
(use-package ready-player (use-package ready-player
:ensure t :ensure t
:config :config
(setq ready-player-autoplay nil) (setq ready-player-autoplay nil)
(ready-player-mode 1))) (ready-player-mode 1)))
(when (or (equal system-type 'gnu/linux) theurgy-enable-pdf-tools-windows) (when theurgy-enable-pdf-tools-windows
(use-package pdf-tools (use-package pdf-tools
:config (pdf-loader-install))) :config (pdf-loader-install)))

View file

@ -543,112 +543,113 @@
(window-width . 0.2)))) (window-width . 0.2))))
;; Org roam ;; Org roam
(use-package org-roam (when (file-directory-p "~/.org/lore")
:straight nil (use-package org-roam
:ensure t :straight nil
:init :ensure t
(setq org-roam-v2-ack t) :init
:custom (setq org-roam-v2-ack t)
(org-roam-directory (file-truename "~/.org/lore/")) :custom
(org-roam-dailies-directory (file-truename "~/.org/lore/refined/journal/")) (org-roam-directory (file-truename "~/.org/lore/"))
(org-roam-file-exclude-regexp "\\.git/.*\\|logseq/.*$") (org-roam-dailies-directory (file-truename "~/.org/lore/refined/journal/"))
(org-roam-completion-everywhere) (org-roam-file-exclude-regexp "\\.git/.*\\|logseq/.*$")
(org-roam-capture-templates (org-roam-completion-everywhere)
'(("r" "Raw") (org-roam-capture-templates
("rr" "Note" plain '(("r" "Raw")
"%?" ("rr" "Note" plain
:target (file+head "raw/${slug}.org" "#+title: ${title}\n") "%?"
:unnarrowed t) :target (file+head "raw/${slug}.org" "#+title: ${title}\n")
("rq" "Question" plain :unnarrowed t)
"%?" ("rq" "Question" plain
:target (file+head "raw/${slug}.org" "#+title: ${title}\n#+filetags: :question:") "%?"
:unnarrowed t) :target (file+head "raw/${slug}.org" "#+title: ${title}\n#+filetags: :question:")
("i" "Index" plain :unnarrowed t)
"%?" ("i" "Index" plain
:target (file+head "raw/${slug}.org" "#+title: ${title} - Index\n#+filetags: :index:") "%?"
:unnarrowed t) :target (file+head "raw/${slug}.org" "#+title: ${title} - Index\n#+filetags: :index:")
("R" "Refined") :unnarrowed t)
("Rm" "Mini-essay" plain ("R" "Refined")
"%?" ("Rm" "Mini-essay" plain
:target (file+head "refined/wiki/${slug}.org" "#+title: ${title}\n#+author: Jakub Nowak\n#+filetags: :mini-essay:") "%?"
:unnarrowed t) :target (file+head "refined/wiki/${slug}.org" "#+title: ${title}\n#+author: Jakub Nowak\n#+filetags: :mini-essay:")
("Re" "Essay" plain :unnarrowed t)
"%?" ("Re" "Essay" plain
:target (file+head "refined/wiki/${slug}.org" "#+title: ${title}\n#+author: Jakub Nowak\n#+filetags: :essay:") "%?"
:unnarrowed t))) :target (file+head "refined/wiki/${slug}.org" "#+title: ${title}\n#+author: Jakub Nowak\n#+filetags: :essay:")
(org-roam-dailies-capture-templates :unnarrowed t)))
'(("d" "default" entry (org-roam-dailies-capture-templates
"* %?" '(("d" "default" entry
:target (file+head "%<%Y-%m-%d>.org" ;; format matches Logseq "* %?"
"#+title: %<%Y-%m-%d>\n")))) :target (file+head "%<%Y-%m-%d>.org" ;; format matches Logseq
:bind (("C-c n l" . org-roam-buffer-toggle) "#+title: %<%Y-%m-%d>\n"))))
("C-c n f" . org-roam-node-find) :bind (("C-c n l" . org-roam-buffer-toggle)
("C-c n g" . org-roam-graph) ("C-c n f" . org-roam-node-find)
("C-c n i" . org-roam-node-insert) ("C-c n g" . org-roam-graph)
("C-c n c" . org-roam-capture) ("C-c n i" . org-roam-node-insert)
:map org-roam-dailies-map ("C-c n c" . org-roam-capture)
("Y" . org-roam-dailies-capture-yesterday) :map org-roam-dailies-map
("T" . org-roam-dailies-capture-tomorrow)) ("Y" . org-roam-dailies-capture-yesterday)
:bind-keymap ("C-c n d" . org-roam-dailies-map) ("T" . org-roam-dailies-capture-tomorrow))
:config :bind-keymap ("C-c n d" . org-roam-dailies-map)
(require 'org-roam-dailies) ;; Ensure the keymap is available :config
(org-roam-db-autosync-mode)) (require 'org-roam-dailies) ;; Ensure the keymap is available
(org-roam-db-autosync-mode))
(defun org-roam-create-node-from-headline () (defun org-roam-create-node-from-headline ()
"Create an Org-roam note from the current headline and jump to it. "Create an Org-roam note from the current headline and jump to it.
Normally, insert the headlines title using the #title: file-level property Normally, insert the headlines title using the #title: file-level property
and delete the Org-mode headline. However, if the current headline has a and delete the Org-mode headline. However, if the current headline has a
Org-mode properties drawer already, keep the headline and dont insert Org-mode properties drawer already, keep the headline and dont insert
#+title:'. Org-roam can extract the title from both kinds of notes, but using #+title:'. Org-roam can extract the title from both kinds of notes, but using
#+title: is a bit cleaner for a short note, which Org-roam encourages." #+title: is a bit cleaner for a short note, which Org-roam encourages."
(interactive) (interactive)
(let ((title (nth 4 (org-heading-components))) (let ((title (nth 4 (org-heading-components)))
(has-properties (org-get-property-block))) (has-properties (org-get-property-block)))
(org-cut-subtree) (org-cut-subtree)
(org-roam-find-file title nil nil 'no-confirm) (org-roam-find-file title nil nil 'no-confirm)
(org-paste-subtree) (org-paste-subtree)
(unless has-properties (unless has-properties
(kill-line) (kill-line)
(while (outline-next-heading) (while (outline-next-heading)
(org-promote))) (org-promote)))
(goto-char (point-min)) (goto-char (point-min))
(when has-properties (when has-properties
(kill-line) (kill-line)
(kill-line)))) (kill-line))))
(use-package logseq-org-roam (use-package logseq-org-roam
:straight (:host github :straight (:host github
:repo "sbougerel/logseq-org-roam" :repo "sbougerel/logseq-org-roam"
:files ("*.el"))) :files ("*.el")))
(transient-define-prefix org-roam-menu () (transient-define-prefix org-roam-menu ()
"Transient menu for task management shortcuts." "Transient menu for task management shortcuts."
["Node" ("c" "Capture" org-roam-node-find) ["Node" ("c" "Capture" org-roam-node-find)
("i" "Insert" org-roam-node-insert) ("i" "Insert" org-roam-node-insert)
("r" "Refile" org-roam-create-node-from-headline) ("r" "Refile" org-roam-create-node-from-headline)
("f" "Find" org-roam-node-find) ] ("f" "Find" org-roam-node-find) ]
["Dailies" ("t" "Today" org-roam-dailies-capture-today) ["Dailies" ("t" "Today" org-roam-dailies-capture-today)
("y" "Yesterday" org-roam-dailies-capture-yesterday) ("y" "Yesterday" org-roam-dailies-capture-yesterday)
("n" "Tomorrow" org-roam-dailies-capture-tomorrow)] ("n" "Tomorrow" org-roam-dailies-capture-tomorrow)]
["Logseq" ("R" "Fix links" logseq-org-roam)] ["Logseq" ("R" "Fix links" logseq-org-roam)]
["Org Roam UI" ("U" "Enable org-roam-ui-mode" org-roam-ui-mode)]) ["Org Roam UI" ("U" "Enable org-roam-ui-mode" org-roam-ui-mode)])
(define-key global-map (kbd "C-c o n") #'org-roam-menu) (define-key global-map (kbd "C-c o n") #'org-roam-menu)
(use-package org-roam-ui (use-package org-roam-ui
:straight :straight
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out")) (:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out"))
:after org-roam :after org-roam
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have ;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
;; a hookable mode anymore, you're advised to pick something yourself ;; a hookable mode anymore, you're advised to pick something yourself
;; if you don't care about startup time, use ;; if you don't care about startup time, use
:hook (after-init . org-roam-ui-mode) :hook (after-init . org-roam-ui-mode)
:config :config
(setq org-roam-ui-sync-theme t (setq org-roam-ui-sync-theme t
org-roam-ui-follow t org-roam-ui-follow t
org-roam-ui-update-on-save t org-roam-ui-update-on-save t
org-roam-ui-open-on-start nil)) org-roam-ui-open-on-start nil)))
;; Bibliography stuff ;; Bibliography stuff
(setq bibtex-dialect 'biblatex) ;; Use biblatex instead of bibtex. (setq bibtex-dialect 'biblatex) ;; Use biblatex instead of bibtex.

View file

@ -0,0 +1,34 @@
;;; paradox-modding.el --- Tools for paradox game modding. -*- lexical-binding: t -*-
;; This file is not part of GNU Emacs
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; commentary
;;; Code:
(use-package jomini-mode
:straight (jomini-mode
:type git
:host nil
:repo "https://git.cyan.sh/BirDt/jomini.el.git"
:files ("*.el")))
(provide 'paradox-modding)
;;; paradox-modding.el ends here