mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 00:33:00 +00:00
feat(emacs-org): Add pomodoro and system notifications
This commit is contained in:
parent
87c237684b
commit
5d0dffd327
11 changed files with 155 additions and 74 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -34,3 +34,5 @@ common/fzfrc
|
|||
gitconfig
|
||||
|
||||
spacemacs/
|
||||
|
||||
lazy-lock.json
|
||||
|
|
|
|||
|
|
@ -23,9 +23,6 @@ pathadd() {
|
|||
fi
|
||||
}
|
||||
|
||||
pathadd "$HOME/.local/bin"
|
||||
pathadd "$HOME/.local/sbin"
|
||||
|
||||
|
||||
# Dynamically Add Path
|
||||
minimal_path=(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
// Paste this into surfingkeys advanced settings
|
||||
// or use:
|
||||
// Load settings from: https://raw.githubusercontent.com/js0ny/dotfiles/refs/heads/master/tools/browser/surfingkeys.js
|
||||
// Browse to Extension > Surfingkeys > Allow access to file URLs to enable local file access
|
||||
// Windows: file:///C:/Users/username/.dotfiles/tools/browser/surfingkeys.js
|
||||
// *nix: file:///home/username/.dotfiles/tools/browser/surfingkeys.js
|
||||
|
||||
// #region Example
|
||||
/** Examples
|
||||
|
|
@ -244,6 +247,8 @@ api.unmap("<space>"); // Leader Key
|
|||
|
||||
forwardFactory.pull(mapLists);
|
||||
vForwardFactory.pull(vMapLists);
|
||||
|
||||
api.map("gH", "g/");
|
||||
// #endregion
|
||||
|
||||
// #region Omnibar NOTE: Dosn't work
|
||||
|
|
@ -490,6 +495,34 @@ mapkey(",r", "Change model to regenerate last output", function () {
|
|||
}, { domain: /perplexity.ai/ });
|
||||
// #endregion
|
||||
|
||||
// #region pixiv.net
|
||||
// Use site-specific paging method
|
||||
unmap("[[", /pixiv.net/);
|
||||
unmap("]]", /pixiv.net/);
|
||||
mapkey("[[", "Previous Page", function () {
|
||||
const url = new URL(window.location.href);
|
||||
if (url.href === url.origin) {
|
||||
return;
|
||||
}
|
||||
const page = url.searchParams.get("p");
|
||||
const newPage = page ? parseInt(page) - 1 : 1;
|
||||
url.searchParams.set("p", newPage);
|
||||
window.location.href = url.href;
|
||||
}, { domain: /pixiv.net/ });
|
||||
|
||||
mapkey("]]", "Next Page", function () {
|
||||
const url = new URL(window.location.href);
|
||||
if (url.href === url.origin) {
|
||||
return;
|
||||
}
|
||||
const page = url.searchParams.get("p");
|
||||
const newPage = page ? parseInt(page) + 1 : 2;
|
||||
url.searchParams.set("p", newPage);
|
||||
window.location.href = url.href;
|
||||
}, { domain: /pixiv.net/ });
|
||||
// #endregion
|
||||
|
||||
|
||||
// #endregion
|
||||
|
||||
// #region ACE Editor
|
||||
|
|
|
|||
3
tools/emacs.d/.gitignore
vendored
3
tools/emacs.d/.gitignore
vendored
|
|
@ -4,6 +4,7 @@
|
|||
/eshell/
|
||||
/server/
|
||||
/url/
|
||||
transient/
|
||||
|
||||
# 临时文件
|
||||
tutorial
|
||||
|
|
@ -22,3 +23,5 @@ custom.el
|
|||
.org-id-locations
|
||||
bookmarks
|
||||
.cache
|
||||
eln-cache
|
||||
org-persist
|
||||
|
|
|
|||
|
|
@ -20,10 +20,31 @@
|
|||
(use-package catppuccin-theme
|
||||
:config
|
||||
(setq catppuccin-flavor 'mocha) ; This looks like shit in terminal mode
|
||||
(load-theme 'catppuccin t))
|
||||
;; (load-theme 'catppuccin t)
|
||||
)
|
||||
|
||||
(use-package doom-themes
|
||||
:ensure t
|
||||
:config
|
||||
;; Global settings (defaults)
|
||||
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
|
||||
doom-themes-enable-italic t) ; if nil, italics is universally disabled
|
||||
(load-theme 'doom-nord-aurora t)
|
||||
|
||||
;; Enable flashing mode-line on errors
|
||||
(doom-themes-visual-bell-config)
|
||||
|
||||
;; Enable custom neotree theme (nerd-icons must be installed!)
|
||||
;; (doom-themes-neotree-config)
|
||||
|
||||
;; or for treemacs users
|
||||
(setq doom-themes-treemacs-theme "doom-nord-aurora") ; use "doom-colors" for less minimal icon theme
|
||||
(doom-themes-treemacs-config)
|
||||
;; Corrects (and improves) org-mode's native fontification.
|
||||
(doom-themes-org-config))
|
||||
|
||||
|
||||
;; Better mode line, see (L7) Icon install
|
||||
;; Better mode line, see (L11) for Icon install
|
||||
;; M-x nerd-icons-install-fonts
|
||||
(use-package doom-modeline
|
||||
:ensure t
|
||||
|
|
@ -31,4 +52,6 @@
|
|||
|
||||
(global-tab-line-mode) ; bufferline
|
||||
|
||||
|
||||
|
||||
(provide 'init-appearance)
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@
|
|||
(prog-mode . display-line-numbers-mode))
|
||||
|
||||
|
||||
;; Auto input pairred brackets
|
||||
(electric-pair-mode 1)
|
||||
|
||||
;; https://book.emacs-china.org/#orgcfd105e Open with Emacs
|
||||
(server-mode 1)
|
||||
|
|
@ -25,10 +23,15 @@
|
|||
(require 'recentf)
|
||||
(recentf-mode 1)
|
||||
|
||||
;; Disable toobar and scrollbar
|
||||
;; Disable topbars
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(menu-bar-mode -1)
|
||||
|
||||
(use-package alert
|
||||
:commands (alert)
|
||||
:config
|
||||
(setq alert-default-style 'toast))
|
||||
|
||||
;; Export module
|
||||
(provide 'init-basic)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
;; Use UTF-8 & LF
|
||||
(setq-default buffer-file-coding-system 'utf-8-unix)
|
||||
|
||||
;; Auto input pairred brackets
|
||||
(electric-pair-mode 1)
|
||||
|
||||
;; Company - Complete Anything
|
||||
(use-package company
|
||||
:ensure t
|
||||
|
|
@ -25,12 +28,13 @@
|
|||
(marginalia-mode))
|
||||
|
||||
|
||||
;; (set-language-environment "UTF-8")
|
||||
(set-default-coding-systems 'utf-8)
|
||||
;; (prefer-coding-system 'utf-8)
|
||||
|
||||
;;; 设置语言环境为 UTF-8
|
||||
;(set-language-environment "UTF-8")
|
||||
;
|
||||
;;; 强制使用 UTF-8
|
||||
;(prefer-coding-system 'utf-8)
|
||||
;(set-default-coding-systems 'utf-8)
|
||||
;(set-terminal-coding-system 'utf-8)
|
||||
;(set-keyboard-coding-system 'utf-8)
|
||||
;
|
||||
|
|
@ -54,4 +58,11 @@
|
|||
|
||||
(setq-default buffer-file-coding-system 'utf-8-unix)
|
||||
|
||||
;; Avy - act like Vim Easymotion
|
||||
(use-package avy
|
||||
:config
|
||||
(evil-define-key '(normal) 'global (kbd "T") 'avy-goto-char)
|
||||
(evil-define-key '(normal) 'global (kbd "s") 'avy-goto-char-2)
|
||||
(evil-define-key '(normal) 'global (kbd "s") 'avy-goto-char-2-above))
|
||||
|
||||
(provide 'init-edit)
|
||||
|
|
|
|||
|
|
@ -53,5 +53,13 @@
|
|||
;; Treemacs mode specific binding
|
||||
(evil-define-key 'treemacs treemacs-mode-map (kbd "i") #'treemacs-RET-action))
|
||||
|
||||
;; magit - Git Client
|
||||
(use-package magit
|
||||
:ensure t
|
||||
:after (evil-leader)
|
||||
:config
|
||||
(evil-leader/set-key
|
||||
"g" 'magit-status)
|
||||
)
|
||||
|
||||
(provide 'init-file)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
;;; init-keymaps.el
|
||||
|
||||
;; Once this is defined, `M-x open-init-file` will open this file
|
||||
(defun open-init-file()
|
||||
(defun open-org-config()
|
||||
(interactive) ;; Mark function as `interactive` that allows user to access by M-x open-init-file RET
|
||||
(find-file "~/.emacs.d/init.el"))
|
||||
(defun reload-init()
|
||||
(interactive)
|
||||
(load-file "~/.emacs.d/init.el"))
|
||||
(find-file "~/.emacs.d/lisp/init-org.el"))
|
||||
|
||||
(provide 'init-keymaps)
|
||||
|
|
|
|||
|
|
@ -39,10 +39,8 @@
|
|||
("~" (org-code verbatim :background "deep sky blue" :foreground "MidnightBlue"))
|
||||
("+" (:strike-through t))))
|
||||
|
||||
(use-package org-bullets
|
||||
:after org
|
||||
:hook (org-mode . org-bullets-mode))
|
||||
|
||||
;; Better LaTeX preview
|
||||
(use-package org-fragtog
|
||||
:after org
|
||||
:hook (org-mode . org-fragtog-mode))
|
||||
|
|
@ -104,5 +102,66 @@
|
|||
(global-set-key (kbd "C-c b") (lambda () (interactive) (my/insert-emphasis-with-zws ?*)))
|
||||
(global-set-key (kbd "C-c i") (lambda () (interactive) (my/insert-emphasis-with-zws ?/)))
|
||||
|
||||
;; Pomodoro for org clock
|
||||
(use-package org-pomodoro)
|
||||
|
||||
;; Org Styles Integration
|
||||
(use-package org-modern
|
||||
:ensure t
|
||||
:after (org)
|
||||
:config
|
||||
(with-eval-after-load 'org (global-org-modern-mode))
|
||||
;; https://github.com/minad/org-modern/issues/232
|
||||
(setq org-modern-fold-stars
|
||||
'(("▶" . "▼")
|
||||
("▷" . "▽")
|
||||
;; ("⯈" . "⯆")
|
||||
("▷" . "▽")
|
||||
("▹" . "▿")
|
||||
("▸" . "▾"))
|
||||
)
|
||||
)
|
||||
|
||||
(use-package mixed-pitch
|
||||
:hook
|
||||
(text-mode . org-mode))
|
||||
|
||||
;; Integrate Emacs Timer with System Notifications
|
||||
;; 定义通知函数
|
||||
(defun my/org-clock-notification (title message &optional icon)
|
||||
"发送一个系统通知"
|
||||
(alert message
|
||||
:title title
|
||||
:icon icon
|
||||
:category 'org-clock))
|
||||
|
||||
;; 添加定时器检查函数
|
||||
(defun my/org-clock-check-timer ()
|
||||
"检查当前正在运行的 clock 是否到期"
|
||||
(when (org-clocking-p)
|
||||
(let* ((clocked-time (org-clock-get-clocked-time))
|
||||
(effort (org-duration-to-minutes
|
||||
(or (org-entry-get (org-clock-is-active) "Effort")
|
||||
"0")))
|
||||
(remaining (- effort clocked-time)))
|
||||
(when (and (> effort 0) (<= remaining 0))
|
||||
(my/org-clock-notification
|
||||
"Org Clock 提醒"
|
||||
(format "任务 '%s' 的预计时间已到!"
|
||||
(org-clock-get-clock-string)))))))
|
||||
|
||||
;; 设置定时器,每分钟检查一次
|
||||
(run-with-timer 0 60 #'my/org-clock-check-timer)
|
||||
|
||||
;; 在 org-clock-in-hook 中添加检查
|
||||
(add-hook 'org-clock-in-hook
|
||||
(lambda ()
|
||||
(let ((effort (org-entry-get (point) "Effort")))
|
||||
(when effort
|
||||
(my/org-clock-notification
|
||||
"开始计时"
|
||||
(format "开始计时任务: %s\n预计用时: %s"
|
||||
(org-get-heading t t t t)
|
||||
effort))))))
|
||||
|
||||
(provide 'init-org)
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
|
||||
"auto-session": { "branch": "main", "commit": "16016db7f79d942a1538eaafb15a39f033f7a359" },
|
||||
"betterTerm.nvim": { "branch": "main", "commit": "5d3f41d9e8b3553d49764906a14e45a08dbe2308" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"code_runner.nvim": { "branch": "main", "commit": "65218f8f646fe61e506090522df357539642ae83" },
|
||||
"conform.nvim": { "branch": "master", "commit": "363243c03102a531a8203311d4f2ae704c620d9b" },
|
||||
"copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" },
|
||||
"flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "d8918f06624dd53b9a82bd0e29c31bcfd541b40d" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "82a81e0b5638667893d0d89f232dbb510cc5ab14" },
|
||||
"hover.nvim": { "branch": "main", "commit": "140c4d0ae9397b76baa46b87c574f5377de09309" },
|
||||
"kanagawa.nvim": { "branch": "master", "commit": "988082eb00b845e4afbcaa4fd8e903da8a3ab3b9" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "a1b78b2ac6f978c72e76ea90ae92a94edf380cfc" },
|
||||
"lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
|
||||
"luasnip-latex-snippets.nvim": { "branch": "main", "commit": "cab134611eb755abe9ba95f5d86969f5cece448d" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" },
|
||||
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
|
||||
"mini.pairs": { "branch": "main", "commit": "7e834c5937d95364cc1740e20d673afe2d034cdb" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "1f941b3668151963fca3e1230922c433ea4b7b64" },
|
||||
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "2206739829518c9ea59dbdb9003e0147fdaf2d1c" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "bece284c5322ddf6946fa4bdc383a2bc033269d7" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "1c9136332840edee0c593f2f4f89598c8ed97f5f" },
|
||||
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||
"onedarkpro.nvim": { "branch": "main", "commit": "44775f8206ee43b692e7f3dc894ddc47996ee523" },
|
||||
"orgmode": { "branch": "master", "commit": "ac7821620462b69c32f237736996e67ab291058b" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" },
|
||||
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "ad055861d17afe058bd835e82292e14a64b51b1d" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "415af52339215926d705cccc08145f3782c4d132" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "50481f414bd3c1a40122c1d759d7e424d5fafe84" },
|
||||
"vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" },
|
||||
"vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" },
|
||||
"vim-just": { "branch": "main", "commit": "0f7d26de0c48e2620b733e51f4159aae13dc3bee" },
|
||||
"vim-visual-multi-colemak-hnei": { "branch": "master", "commit": "2cc37d77590d6569d991ebd8d96ab5867eb5a47a" },
|
||||
"vim-wakatime": { "branch": "master", "commit": "e46d7c4f98ee0f40782008dd60cb2a79c377fb1d" },
|
||||
"vimtex": { "branch": "master", "commit": "83e331dcad5ce28012e656eea3906b5b897db2ba" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "6cebd86917df559a88de0f806b2989799c6e6423" },
|
||||
"winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" },
|
||||
"yanky.nvim": { "branch": "main", "commit": "d2696b30e389dced94d5acab728f524a25f308d2" }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue