Config: optimize exwm config.

This commit is contained in:
2026-04-25 07:14:09 +08:00
parent bc6eca261a
commit c6cf0ef9d8
9 changed files with 145 additions and 31 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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))))

View File

@@ -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,8 +48,10 @@
?\C-h
?\M-x
?\M-o
?\M-]
?\M-[
?\M-]
?\s-[
?\s-]
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86AudioMute
@@ -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)

View File

@@ -94,11 +94,12 @@
;; scratch buffer
(if *is-mac*
(general-def "C-c <f12>" 'scratch-buffer)
(general-def "C-c <delete>" 'scratch-buffer))
(general-def "C-c <f12>" 'persp-switch-to-scratch-buffer)
(general-def "C-c <delete>" '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-<backspace>" '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 <backspace>" 'hungry-delete-backward
@@ -216,9 +216,10 @@
"M-<right>" 'enlarge-window-horizontally
"M-<down>" 'shrink-window
"M-<up>" 'enlarge-window
"<f10>" 'esw/swap-two-windows
"M-`" 'popper-toggle
"C-M-=" 'popper-toggle-type-delete-other-window
"M-o" 'other-window
"<f10>" '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)

View File

@@ -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 '())

View File

@@ -286,9 +286,6 @@ targets."
;; general
(use-package general)
;; popup
(use-package popup)
(provide 'init-package)
;;; init-package.el ends here

View File

@@ -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)

View File

@@ -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)