From c6cf0ef9d8efd1e855ed1e94354836da828fec61 Mon Sep 17 00:00:00 2001 From: andsy10 Date: Sat, 25 Apr 2026 07:14:09 +0800 Subject: [PATCH] Config: optimize exwm config. --- custom.el | 47 +++++++++++++++++++++++++++++ lisp/init-completion.el | 18 ++++++----- lisp/init-dired.el | 2 +- lisp/init-exwm.el | 67 +++++++++++++++++++++++++++++++++++------ lisp/init-kbd.el | 23 ++++++++------ lisp/init-org.el | 11 +++++++ lisp/init-package.el | 3 -- lisp/init-startup.el | 2 ++ lisp/init-window.el | 3 ++ 9 files changed, 145 insertions(+), 31 deletions(-) diff --git a/custom.el b/custom.el index 0f48c6a..dbb489b 100644 --- a/custom.el +++ b/custom.el @@ -4,6 +4,53 @@ ;; 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. + '(org-agenda-files + '("/home/trogloxene/org/my-org-note/20260422-guile小本本.org" + "/home/trogloxene/org/my-org-daily/2026-03-21.org" + "/home/trogloxene/org/my-org-daily/2026-03-22.org" + "/home/trogloxene/org/my-org-daily/2026-03-23.org" + "/home/trogloxene/org/my-org-daily/2026-03-24.org" + "/home/trogloxene/org/my-org-daily/2026-03-25.org" + "/home/trogloxene/org/my-org-daily/2026-03-26.org" + "/home/trogloxene/org/my-org-daily/2026-03-27.org" + "/home/trogloxene/org/my-org-daily/2026-03-28.org" + "/home/trogloxene/org/my-org-daily/2026-03-29.org" + "/home/trogloxene/org/my-org-daily/2026-03-30.org" + "/home/trogloxene/org/my-org-daily/2026-03-31.org" + "/home/trogloxene/org/my-org-daily/2026-04-01.org" + "/home/trogloxene/org/my-org-daily/2026-04-02.org" + "/home/trogloxene/org/my-org-daily/2026-04-03.org" + "/home/trogloxene/org/my-org-daily/2026-04-04.org" + "/home/trogloxene/org/my-org-daily/2026-04-05.org" + "/home/trogloxene/org/my-org-daily/2026-04-06.org" + "/home/trogloxene/org/my-org-daily/2026-04-07.org" + "/home/trogloxene/org/my-org-daily/2026-04-08.org" + "/home/trogloxene/org/my-org-daily/2026-04-09.org" + "/home/trogloxene/org/my-org-daily/2026-04-10.org" + "/home/trogloxene/org/my-org-daily/2026-04-11.org" + "/home/trogloxene/org/my-org-daily/2026-04-12.org" + "/home/trogloxene/org/my-org-daily/2026-04-13.org" + "/home/trogloxene/org/my-org-daily/2026-04-14.org" + "/home/trogloxene/org/my-org-daily/2026-04-15.org" + "/home/trogloxene/org/my-org-daily/2026-04-17.org" + "/home/trogloxene/org/my-org-daily/2026-04-18.org" + "/home/trogloxene/org/my-org-daily/2026-04-19.org" + "/home/trogloxene/org/my-org-daily/2026-04-20.org" + "/home/trogloxene/org/my-org-daily/2026-04-21.org" + "/home/trogloxene/org/my-org-daily/2026-04-22.org" + "/home/trogloxene/org/my-org-note/20260407-org-mode简明手册笔记.org" + "/home/trogloxene/org/my-org-note/20260408-怎么管理org-mode笔记.org" + "/home/trogloxene/org/my-org-note/20260408-成为emacs高手.org" + "/home/trogloxene/org/my-org-note/20260408-成为guix高手的第一天.org" + "/home/trogloxene/org/my-org-note/20260409-elisp小本本.org" + "/home/trogloxene/org/my-org-note/20260409-精选emacs package.org" + "/home/trogloxene/org/my-org-note/20260410-Interview with an Emacs Enthusiast excerpt.org" + "/home/trogloxene/org/my-org-note/20260412-steam备用码_记得加密.org" + "/home/trogloxene/org/my-org-note/20260414-怎样让git仓库使用ssh.org" + "/home/trogloxene/org/my-org-note/20260415-learn scheme in 15 minutes.org" + "/home/trogloxene/org/my-org-note/20260415-折腾guix干什么.org" + "/home/trogloxene/org/my-org-note/20260416-配置一下gptel.org" + "/home/trogloxene/org/my-org-note/20260421-成为exwm高手的第一天.org")) '(package-selected-packages '(ace-window benchmark-init cape cnfonts corfu crux drag-stuff eglot embark-consult everything exec-path-form-shell gcmh hungry-delete marginalia multiple-cursors orderless diff --git a/lisp/init-completion.el b/lisp/init-completion.el index 312971c..feb3e5b 100644 --- a/lisp/init-completion.el +++ b/lisp/init-completion.el @@ -107,14 +107,6 @@ (advice-add 'eglot-completion-at-point :around #'cape-wrap-nonexclusive) (advice-add 'pcomplete-completions-at-point :around #'cape-wrap-nonexclusive)) -;; lua -(use-package lua-ts-mode - :mode ("\\.lua\\'" . lua-ts-mode) - :config - (add-to-list 'auto-mode-alist '("\\.lua\\'" . lua-ts-mode))) - -(use-package ahk-mode) - ;; tree-sitter (use-package treesit-auto :demand t @@ -123,6 +115,16 @@ (global-treesit-auto-mode) (setq treesit-font-lock-level 4)) +;; lua +(use-package lua-ts-mode + :mode ("\\.lua\\'" . lua-ts-mode) + :config + (add-to-list 'auto-mode-alist '("\\.lua\\'" . lua-ts-mode))) + +;; ahk +(use-package ahk-mode) + +;; scheme (use-package geiser :config (with-eval-after-load 'geiser diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 71d9d5b..49658a2 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -51,7 +51,7 @@ ("s" "~/.config/guix/" "System config") ("p" "~/Pictures/" "Pictures") ("d" "~/downloads/" "Downloads") - ("v" "~/视频/" "Videos") + ("v" "~/Video/" "Videos") ("n" "~/org/my-org-note/" "Notes") ("g" "~/gptel/" "gptel sessions"))) (t nil)))) diff --git a/lisp/init-exwm.el b/lisp/init-exwm.el index 03c1085..c20889e 100644 --- a/lisp/init-exwm.el +++ b/lisp/init-exwm.el @@ -1,4 +1,4 @@ - ;;; init-exwm.el --- exwm config -*- lexical-binding: t -*- +;;; init-exwm.el --- exwm config -*- lexical-binding: t -*- ;;; Commentary: @@ -7,7 +7,7 @@ (when *is-linux* (use-package exwm :config - (setq exwm-workspace-number 5) + (setq exwm-workspace-number 1) (exwm-input-set-key (kbd "s-&") (lambda (command) (interactive (list (read-shell-command "$ "))) @@ -15,6 +15,32 @@ '((".*" . (display-buffer-no-window . nil))))) (async-shell-command command)))) + (defun my--exwm-switch-to-workspace (delta) + (let ((target + (mod (+ exwm-workspace-current-index delta) + (length exwm-workspace--list)))) + (exwm-workspace-switch target) + (if (= 1 (length exwm-workspace--list)) + (message "Single workspace active")))) + + (defun my-exwm-next-workspace () + "Switch to next exwm workspace." + (interactive) + (my--exwm-switch-to-workspace 1)) + + (defun my-exwm-previous-workspace () + "Switch to previous exwm workspace." + (interactive) + (my--exwm-switch-to-workspace -1)) + + (global-set-key (kbd "s-]") 'my-exwm-next-workspace) + (global-set-key (kbd "s-[") 'my-exwm-previous-workspace) + + (add-to-list 'global-mode-string + '(:eval (propertize (format " WS:%d " exwm-workspace-current-index) + 'face 'mode-line-emphasis)) + t) + (setq exwm-input-prefix-keys '(?\C-x ?\C-u @@ -22,12 +48,14 @@ ?\C-h ?\M-x ?\M-o - ?\M-] - ?\M-[ - XF86AudioLowerVolume - XF86AudioRaiseVolume - XF86AudioMute - )) + ?\M-[ + ?\M-] + ?\s-[ + ?\s-] + XF86AudioLowerVolume + XF86AudioRaiseVolume + XF86AudioMute + )) (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) @@ -40,6 +68,7 @@ ([?\s-S] . desktop-environment-screenshot) ([?\s-s] . desktop-environment-screenshot-part) ([?\s-w] . exwm-workspace-switch) + ([?\s-o] . other-window) ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) ,@(mapcar (lambda (i) `(,(kbd(format "s-%d" i)) . @@ -59,25 +88,43 @@ (exwm-wm-mode)) (use-package desktop-environment - :config + :init (desktop-environment-mode) + :config (advice-add 'desktop-environment-screenshot :after (lambda (&rest _) (message "Saved fullscreen screenshot."))) (advice-add 'desktop-environment-screenshot-part :after (lambda (&rest _) (message "Saved partial screenshot."))) + :custom (desktop-environment-screenshot-command "import -window root ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png") (desktop-environment-screenshot-partial-command "import ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png")) + (defun vscodium () + "Run VSCodium via shell command asynchronously." + (interactive) + (start-process-shell-command "vscodium" nil "flatpak run com.vscodium.codium")) + + (defun localsend () + "Run localsend via shell command asynchronously." + (interactive) + (start-process-shell-command "localsend" nil "flatpak run org.localsend.localsend_app")) + + (defun steam () + "Run Steam via shell command asynchronously." + (interactive) + (start-process-shell-command "steam" nil "flatpak run com.valvesoftware.Steam")) + (add-hook 'exwm-init-hook (lambda () (unless (zerop (shell-command "pgrep -x fcitx5")) (start-process-shell-command "fcitx5" nil "fcitx5 -d")) (unless (zerop (shell-command "pgrep -x mihomo")) (start-process-shell-command "mihomo" nil "mihomo -d ~/.config/mihomo/")) - (message "fcitx5 enable."))) + (start-process-shell-command "xrandr-refresh" nil "xrandr --output DP-4 --mode 2560x1440 --rate 165.00") + (start-process-shell-command "xinput" nil "xinput set-prop 12 'libinput Accel Speed' -0.45"))) ) (provide 'init-exwm) diff --git a/lisp/init-kbd.el b/lisp/init-kbd.el index 44e472c..e130038 100644 --- a/lisp/init-kbd.el +++ b/lisp/init-kbd.el @@ -94,11 +94,12 @@ ;; scratch buffer (if *is-mac* - (general-def "C-c " 'scratch-buffer) - (general-def "C-c " 'scratch-buffer)) + (general-def "C-c " 'persp-switch-to-scratch-buffer) + (general-def "C-c " 'persp-switch-to-scratch-buffer)) ;; dired (general-def (dired-mode-map dirvish-mode-map) + "s" 'dirvish-quicksort "h" 'dirvish-history-menu "M-," 'scroll-other-window-down "M-." 'scroll-other-window @@ -180,7 +181,6 @@ "C-x C-b" 'ibuffer-other-window "C-x K" 'crux-kill-other-buffers "C-x b" 'consult-buffer - "M-o" 'other-window ;; edit "M-c" 'capitalize-dwim @@ -189,7 +189,7 @@ "C-," 'duplicate-and-move-to-next-line "C-k" 'crux-smart-kill-line "C-" 'crux-kill-line-backwards - "C-o" 'crux-smart-open-line + "C-o" 'open-line "C-a" 'crux-move-beginning-of-line "M-y" 'consult-yank-from-kill-ring "C-c " 'hungry-delete-backward @@ -216,9 +216,10 @@ "M-" 'enlarge-window-horizontally "M-" 'shrink-window "M-" 'enlarge-window - "" 'esw/swap-two-windows "M-`" 'popper-toggle "C-M-=" 'popper-toggle-type-delete-other-window + "M-o" 'other-window + "" 'esw/swap-two-windows ;; other "C-x r b" 'consult-bookmark @@ -261,15 +262,19 @@ ------------------------------------------------------------------ _p_ : prev line _P_ : previous _c_ : edit lines _n_ : next line _N_ : next _._ : pop -_f_ : next symbol _q_ : quit -_b_ : prev symbol +_b_ : prev word _q_ : quit +_f_ : next word +_B_ : prev symbol +_F_ : next symbol _s_ : in region _a_ : all dwim " ("p" mc/mark-previous-like-this) ("n" mc/mark-next-like-this) - ("b" mc/mark-previous-like-this-symbol) - ("f" mc/mark-next-like-this-symbol) + ("b" mc/mark-previous-like-this-word) + ("f" mc/mark-next-like-this-word) + ("B" mc/mark-previous-like-this-symbol) + ("F" mc/mark-next-like-this-symbol) ("P" mc/unmark-previous-like-this) ("N" mc/unmark-next-like-this) ("a" mc/mark-all-dwim) diff --git a/lisp/init-org.el b/lisp/init-org.el index 4b66123..7203e8a 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -6,6 +6,15 @@ (use-package org) +;; org-babel scheme +(use-package ob-scheme + :straight (:type built-in) + :config + (add-to-list 'org-babel-load-languages '(scheme . t)) + (org-babel-do-load-languages + 'org-babel-load-languages + org-babel-load-languages)) + ;; org-contrib 和 org-checklist (use-package org-contrib :straight (org-contrib :type git :host github :repo "emacsmirror/org-contrib" @@ -244,12 +253,14 @@ (setq org-tag-alist '( ("scheme" . ?s) ("emacs" . ?e) + ("elisp" . ?E) ("org" . ?o) ("linux" . ?l) ("computer-stuff" . ?c) ("philosophy" . ?p) ("game" . ?g) ("gamestudies" . ?G) + ("masterpiece" . ?m) )) ;; (setq org-tags-exclude-from-inheritance '()) diff --git a/lisp/init-package.el b/lisp/init-package.el index 1d4dbe5..d77515c 100644 --- a/lisp/init-package.el +++ b/lisp/init-package.el @@ -286,9 +286,6 @@ targets." ;; general (use-package general) -;; popup -(use-package popup) - (provide 'init-package) ;;; init-package.el ends here diff --git a/lisp/init-startup.el b/lisp/init-startup.el index b29e90e..9374f10 100644 --- a/lisp/init-startup.el +++ b/lisp/init-startup.el @@ -74,6 +74,8 @@ ;; electirc-pair-mode (add-hook 'org-mode-hook 'electric-pair-local-mode) +(with-eval-after-load 'elec-pair + (add-to-list 'electric-pair-pairs '(?\~ . ?\~))) ;; ibuffer (setq ibuffer-default-sorting-mode 'filename) diff --git a/lisp/init-window.el b/lisp/init-window.el index b803027..585ec7b 100644 --- a/lisp/init-window.el +++ b/lisp/init-window.el @@ -102,6 +102,9 @@ (delete-window window))))) (advice-add #'keyboard-quit :before #'popper-close-window-hack))) +;; ace-window +;; (use-package ace-window) + ;; es-windos,快速管理窗口 (use-package es-windows)