diff options
-rw-r--r-- | init.el | 844 |
1 files changed, 424 insertions, 420 deletions
diff --git a/init.el b/init.el index eae172a..0d90141 100644 --- a/init.el +++ b/init.el | |||
@@ -1,420 +1,424 @@ | |||
1 | ;;; init.el ~ acdw -*- lexical-binding: t -*- | 1 | ;;; init.el ~ acdw -*- lexical-binding: t -*- |
2 | 2 | ||
3 | ;;; emacs configuration - general | 3 | ;;; emacs configuration - general |
4 | 4 | ||
5 | (use-package emacs | 5 | (use-package emacs |
6 | :init | 6 | :demand |
7 | (setq calendar-location-name "Baton Rouge, LA") | 7 | :init |
8 | (setq calendar-latitude 30.39) | 8 | (setq calendar-location-name "Baton Rouge, LA") |
9 | (setq calendar-longitude -91.83) | 9 | (setq calendar-latitude 30.39) |
10 | 10 | (setq calendar-longitude -91.83) | |
11 | (setq browse-url-browser-function 'browse-url-generic) | 11 | |
12 | (setq browse-url-generic-program "firefox")) | 12 | (setq browse-url-browser-function 'browse-url-generic) |
13 | 13 | (setq browse-url-generic-program "firefox")) | |
14 | (use-package auth-source | 14 | |
15 | :init | 15 | (use-package auth-source |
16 | (setq auth-sources '("~/.authinfo")) ;; TODO: gpg | 16 | :init |
17 | (setq user-full-name "Case Duckworth") | 17 | (setq auth-sources '("~/.authinfo")) ;; TODO: gpg |
18 | (setq user-mail-address "acdw@acdw.net")) | 18 | (setq user-full-name "Case Duckworth") |
19 | 19 | (setq user-mail-address "acdw@acdw.net")) | |
20 | (use-package better-defaults | 20 | |
21 | :config ; add other "better defaults" of my own | 21 | (use-package better-defaults |
22 | (when acdw/at-larry | 22 | :demand |
23 | (setq visible-bell nil)) | 23 | :config ; add other "better defaults" of my own |
24 | 24 | (when acdw/at-larry | |
25 | (setq version-control t) | 25 | (setq visible-bell nil)) |
26 | (setq delete-old-versions t) | 26 | |
27 | (setq kept-new-versions 6) | 27 | (setq version-control t) |
28 | (setq kept-old-versions 4) | 28 | (setq delete-old-versions t) |
29 | (setq create-lockfiles nil) | 29 | (setq kept-new-versions 6) |
30 | (setq auto-save-file-name-transforms | 30 | (setq kept-old-versions 4) |
31 | `((".*" ,(concat user-emacs-directory "backups/") t))) | 31 | (setq create-lockfiles nil) |
32 | (auto-save-mode) | 32 | (setq auto-save-file-name-transforms |
33 | 33 | `((".*" ,(concat user-emacs-directory "backups/") t))) | |
34 | (defun full-auto-save () | 34 | (auto-save-mode) |
35 | (interactive) | 35 | |
36 | (save-excursion | 36 | (defun full-auto-save () |
37 | (dolist (buf (buffer-list)) | 37 | (interactive) |
38 | (set-buffer buf) | 38 | (save-excursion |
39 | (if (and (buffer-file-name) (buffer-modified-p)) | 39 | (dolist (buf (buffer-list)) |
40 | (basic-save-buffer))))) | 40 | (set-buffer buf) |
41 | (add-hook 'auto-save-hook 'full-auto-save) | 41 | (if (and (buffer-file-name) (buffer-modified-p)) |
42 | (add-hook 'focus-out-hook 'full-auto-save) ; might be resource-intensive | 42 | (basic-save-buffer))))) |
43 | 43 | (add-hook 'auto-save-hook 'full-auto-save) | |
44 | ;; follow the split! | 44 | (add-hook 'focus-out-hook 'full-auto-save) ; might be resource-intensive |
45 | (defun split-and-follow-below () | 45 | |
46 | (interactive) | 46 | ;; follow the split! |
47 | (split-window-below) | 47 | (defun split-and-follow-below () |
48 | (balance-windows) | 48 | (interactive) |
49 | (other-window 1)) | 49 | (split-window-below) |
50 | 50 | (balance-windows) | |
51 | (defun split-and-follow-right () | 51 | (other-window 1)) |
52 | (interactive) | 52 | |
53 | (split-window-right) | 53 | (defun split-and-follow-right () |
54 | (balance-windows) | 54 | (interactive) |
55 | (other-window 1)) | 55 | (split-window-right) |
56 | 56 | (balance-windows) | |
57 | (setq save-place-file | 57 | (other-window 1)) |
58 | (expand-file-name "places" user-emacs-directory)) | 58 | |
59 | (save-place-mode) | 59 | (setq save-place-file |
60 | 60 | (expand-file-name "places" user-emacs-directory)) | |
61 | (set-language-environment "UTF-8") | 61 | (save-place-mode) |
62 | (prefer-coding-system 'utf-8) | 62 | |
63 | (set-default-coding-systems 'utf-8) | 63 | (set-language-environment "UTF-8") |
64 | (set-terminal-coding-system 'utf-8) | 64 | (prefer-coding-system 'utf-8) |
65 | (set-keyboard-coding-system 'utf-8) | 65 | (set-default-coding-systems 'utf-8) |
66 | (setq default-buffer-file-coding-system 'utf-8) | 66 | (set-terminal-coding-system 'utf-8) |
67 | 67 | (set-keyboard-coding-system 'utf-8) | |
68 | (fset 'yes-or-no-p 'y-or-n-p) | 68 | (setq default-buffer-file-coding-system 'utf-8) |
69 | 69 | ||
70 | (global-visual-line-mode) | 70 | (fset 'yes-or-no-p 'y-or-n-p) |
71 | (mouse-avoidance-mode 'jump) | 71 | |
72 | (setq show-paren-style 'mixed) | 72 | (global-visual-line-mode) |
73 | 73 | (mouse-avoidance-mode 'jump) | |
74 | ;; TODO figure out how to add this to the :hook block | 74 | (setq show-paren-style 'mixed) |
75 | (add-hook 'prog-mode-hook (if (and (fboundp 'display-line-numbers-mode) | 75 | |
76 | (display-graphic-p)) | 76 | ;; TODO figure out how to add this to the :hook block |
77 | #'display-line-numbers-mode | 77 | (add-hook 'prog-mode-hook (if (and (fboundp 'display-line-numbers-mode) |
78 | #'linum-mode)) | 78 | (display-graphic-p)) |
79 | 79 | #'display-line-numbers-mode | |
80 | (setq completion-ignore-case t) | 80 | #'linum-mode)) |
81 | (setq read-buffer-completion-ignore-case t) | 81 | |
82 | (setq read-file-name-completion-ignore-case t) | 82 | (setq completion-ignore-case t) |
83 | 83 | (setq read-buffer-completion-ignore-case t) | |
84 | ;; don't confirm death | 84 | (setq read-file-name-completion-ignore-case t) |
85 | (setq confirm-kill-processes nil) | 85 | |
86 | (setq confirm-kill-emacs nil) | 86 | ;; don't confirm death |
87 | 87 | (setq confirm-kill-processes nil) | |
88 | ;; cursor betterment | 88 | (setq confirm-kill-emacs nil) |
89 | (blink-cursor-mode 0) | 89 | |
90 | (setq cursor-type 'bar) | 90 | ;; cursor betterment |
91 | 91 | (blink-cursor-mode 0) | |
92 | :bind | 92 | (setq cursor-type 'bar) |
93 | ([remap split-window-below] . split-and-follow-below) | 93 | |
94 | ([remap split-window-right] . split-and-follow-right) | 94 | :bind |
95 | 95 | ([remap split-window-below] . split-and-follow-below) | |
96 | :hook | 96 | ([remap split-window-right] . split-and-follow-right) |
97 | (auto-save-hook . full-auto-save) | 97 | |
98 | (focus-out-hook . full-auto-save) | 98 | :hook |
99 | (before-save-hook . delete-trailing-whitespace)) | 99 | (auto-save-hook . full-auto-save) |
100 | 100 | (focus-out-hook . full-auto-save) | |
101 | (use-package auto-compile | 101 | (before-save-hook . delete-trailing-whitespace)) |
102 | :config | 102 | |
103 | (auto-compile-on-load-mode) | 103 | (use-package auto-compile |
104 | (setq load-prefer-newer t)) | 104 | :config |
105 | 105 | (auto-compile-on-load-mode) | |
106 | ;; start the server when at home | 106 | (setq load-prefer-newer t)) |
107 | 107 | ||
108 | (if (not acdw/at-work) | 108 | ;; start the server when at home |
109 | (server-start)) | 109 | |
110 | 110 | (if (not acdw/at-work) | |
111 | ;;; quality-of-life improvements | 111 | (server-start)) |
112 | 112 | ||
113 | (use-package diminish) | 113 | ;;; quality-of-life improvements |
114 | 114 | ||
115 | (use-package which-key | 115 | (use-package diminish) |
116 | :diminish which-key-mode | 116 | |
117 | :config | 117 | (use-package which-key |
118 | (which-key-mode)) | 118 | :diminish which-key-mode |
119 | 119 | :config | |
120 | (use-package recentf | 120 | (which-key-mode)) |
121 | :init | 121 | |
122 | (setq recentf-max-menu-items 100) | 122 | (use-package recentf |
123 | (setq recentf-max-saved-items 100) | 123 | :init |
124 | :config | 124 | (setq recentf-max-menu-items 100) |
125 | (recentf-mode)) | 125 | (setq recentf-max-saved-items 100) |
126 | 126 | :config | |
127 | (use-package savehist | 127 | (recentf-mode)) |
128 | :config | 128 | |
129 | (savehist-mode)) | 129 | (use-package savehist |
130 | 130 | :config | |
131 | (use-package restart-emacs) | 131 | (savehist-mode)) |
132 | 132 | ||
133 | (use-package ivy | 133 | (use-package restart-emacs) |
134 | :init | 134 | |
135 | (setq ivy-use-virtual-buffers t) | 135 | (use-package ivy |
136 | (setq ivy-wrap t) | 136 | :init |
137 | (setq ivy-count-format "(%d/%d) ") | 137 | (setq ivy-use-virtual-buffers t) |
138 | (setq enable-recursive-minibuffers t) | 138 | (setq ivy-wrap t) |
139 | (setq ivy-re-builders-alist | 139 | (setq ivy-count-format "(%d/%d) ") |
140 | '((read-file-name-internal . ivy--regex-fuzzy) | 140 | (setq enable-recursive-minibuffers t) |
141 | (t . ivy--regex-plus))) | 141 | (setq ivy-re-builders-alist |
142 | :bind | 142 | '((read-file-name-internal . ivy--regex-fuzzy) |
143 | ("C-x b" . ivy-switch-buffer) | 143 | (t . ivy--regex-plus))) |
144 | ("C-c v" . ivy-push-view) | 144 | :bind |
145 | ("C-c V" . ivy-pop-view) | 145 | ("C-x b" . ivy-switch-buffer) |
146 | ("C-c C-r" . ivy-resume) | 146 | ("C-c v" . ivy-push-view) |
147 | :config | 147 | ("C-c V" . ivy-pop-view) |
148 | (ivy-mode)) | 148 | ("C-c C-r" . ivy-resume) |
149 | 149 | :config | |
150 | (use-package swiper | 150 | (ivy-mode)) |
151 | :bind | 151 | |
152 | ("C-s" . swiper-isearch)) | 152 | (use-package swiper |
153 | 153 | :bind | |
154 | (use-package counsel ; includes ivy, counsel, swiper | 154 | ("C-s" . swiper-isearch)) |
155 | :bind | 155 | |
156 | ("M-x" . counsel-M-x) | 156 | (use-package counsel ; includes ivy, counsel, swiper |
157 | ("C-x C-f" . counsel-find-file) | 157 | :bind |
158 | ("M-y" . counsel-yank-pop) | 158 | ("M-x" . counsel-M-x) |
159 | ("<f1> f" . counsel-describe-function) | 159 | ("C-x C-f" . counsel-find-file) |
160 | ("<f1> v" . counsel-describe-variable) | 160 | ("M-y" . counsel-yank-pop) |
161 | ("<f1> l" . counsel-find-library) | 161 | ("<f1> f" . counsel-describe-function) |
162 | ("<f2> i" . counsel-info-lookup-symbol) | 162 | ("<f1> v" . counsel-describe-variable) |
163 | ("<f2> u" . counsel-unicode-char) | 163 | ("<f1> l" . counsel-find-library) |
164 | ("<f2> j" . counsel-set-variable) | 164 | ("<f2> i" . counsel-info-lookup-symbol) |
165 | ("C-c c" . counsel-compile) | 165 | ("<f2> u" . counsel-unicode-char) |
166 | ("C-c g" . counsel-git) | 166 | ("<f2> j" . counsel-set-variable) |
167 | ("C-c j" . counsel-git-grep) | 167 | ("C-c c" . counsel-compile) |
168 | ("C-c L" . counsel-git-log) | 168 | ("C-c g" . counsel-git) |
169 | ("C-c k" . counsel-rg) | 169 | ("C-c j" . counsel-git-grep) |
170 | ("C-c m" . counsel-linux-app) | 170 | ("C-c L" . counsel-git-log) |
171 | ("C-c n" . counsel-fzf) | 171 | ("C-c k" . counsel-rg) |
172 | ("C-x l" . counsel-locate) | 172 | ("C-c m" . counsel-linux-app) |
173 | ("C-c J" . counsel-file-jump) | 173 | ("C-c n" . counsel-fzf) |
174 | ("C-S-o" . counsel-rhythmbox) | 174 | ("C-x l" . counsel-locate) |
175 | ("C-c w" . counsel-wmctrl) | 175 | ("C-c J" . counsel-file-jump) |
176 | ("C-c b" . counsel-bookmark) | 176 | ("C-S-o" . counsel-rhythmbox) |
177 | ("C-c d" . counsel-descbinds) | 177 | ("C-c w" . counsel-wmctrl) |
178 | ("C-c g" . counsel-git) | 178 | ("C-c b" . counsel-bookmark) |
179 | ("C-c o" . counsel-outline) | 179 | ("C-c d" . counsel-descbinds) |
180 | ("C-c t" . counsel-load-theme) | 180 | ("C-c g" . counsel-git) |
181 | ("C-c F" . counsel-org-file)) | 181 | ("C-c o" . counsel-outline) |
182 | 182 | ("C-c t" . counsel-load-theme) | |
183 | (use-package ivy-rich | 183 | ("C-c F" . counsel-org-file)) |
184 | :after ivy | 184 | |
185 | :config | 185 | (use-package ivy-rich |
186 | (ivy-rich-mode) | 186 | :after ivy |
187 | (setcdr (assq t ivy-format-functions-alist) | 187 | :config |
188 | #'ivy-format-function-line)) | 188 | (ivy-rich-mode) |
189 | 189 | (setcdr (assq t ivy-format-functions-alist) | |
190 | (use-package avy | 190 | #'ivy-format-function-line)) |
191 | :bind | 191 | |
192 | ("M-s" . avy-goto-char-timer) | 192 | (use-package avy |
193 | :config | 193 | :bind |
194 | (use-package ivy-avy)) | 194 | ("M-s" . avy-goto-char-timer) |
195 | 195 | :config | |
196 | ;;; programming | 196 | (use-package ivy-avy)) |
197 | 197 | ||
198 | (use-package aggressive-indent | 198 | ;;; programming |
199 | :diminish aggressive-indent-mode | 199 | |
200 | :hook | 200 | (use-package aggressive-indent |
201 | (prog-mode-hook . aggressive-indent-mode)) | 201 | :diminish aggressive-indent-mode |
202 | 202 | :hook | |
203 | (use-package magit | 203 | (prog-mode-hook . aggressive-indent-mode)) |
204 | :if (not acdw/at-work) | 204 | |
205 | :bind | 205 | (use-package magit |
206 | ("C-x g" . magit)) | 206 | :if (not acdw/at-work) |
207 | 207 | :bind | |
208 | (use-package forge | 208 | ("C-x g" . magit)) |
209 | :if (not acdw/at-work) | 209 | |
210 | :after magit | 210 | (use-package forge |
211 | :custom | 211 | :if (not acdw/at-work) |
212 | (forge-owned-accounts '(("duckwork")))) | 212 | :after magit |
213 | 213 | :custom | |
214 | (use-package company | 214 | (forge-owned-accounts '(("duckwork")))) |
215 | :commands company-mode | 215 | |
216 | :init | 216 | (use-package company |
217 | (setq company-idle-delay 0.1) | 217 | :commands company-mode |
218 | :hook | 218 | :init |
219 | (prog-mode-hook . company-mode) | 219 | (setq company-idle-delay 0.1) |
220 | :bind (:map company-active-map | 220 | :hook |
221 | ("C-n" . company-select-next) | 221 | (prog-mode-hook . company-mode) |
222 | ("C-p" . company-select-previous)) | 222 | :bind (:map company-active-map |
223 | :config | 223 | ("C-n" . company-select-next) |
224 | (use-package company-quickhelp | 224 | ("C-p" . company-select-previous)) |
225 | :hook | 225 | :config |
226 | (company-mode . (lambda () | 226 | (use-package company-quickhelp |
227 | (company-quickhelp-local-mode))))) | 227 | :hook |
228 | 228 | (company-mode . (lambda () | |
229 | (use-package helpful | 229 | (company-quickhelp-local-mode))))) |
230 | :bind | 230 | |
231 | ("C-h f" . helpful-callable) | 231 | (use-package helpful |
232 | ("C-h v" . helpful-variable) | 232 | :bind |
233 | ("C-h k" . helpful-key) | 233 | ("C-h f" . helpful-callable) |
234 | ("C-c C-d" . helpful-at-point) | 234 | ("C-h v" . helpful-variable) |
235 | ("C-h F" . helpful-function) | 235 | ("C-h k" . helpful-key) |
236 | ("C-h C" . helpful-command) | 236 | ("C-c C-d" . helpful-at-point) |
237 | :custom | 237 | ("C-h F" . helpful-function) |
238 | (counsel-describe-function-function #'helpful-callable) | 238 | ("C-h C" . helpful-command) |
239 | (counsel-describe-variable-function #'helpful-variable)) | 239 | :custom |
240 | 240 | (counsel-describe-function-function #'helpful-callable) | |
241 | (unless acdw/at-work | 241 | (counsel-describe-variable-function #'helpful-variable)) |
242 | (use-package su | 242 | |
243 | :config | 243 | (unless acdw/at-work |
244 | (su-mode)) | 244 | (use-package su |
245 | 245 | :config | |
246 | (use-package trashed | 246 | (su-mode)) |
247 | :init | 247 | |
248 | (setq delete-by-moving-to-trash t))) | 248 | (use-package trashed |
249 | 249 | :init | |
250 | ;;; writing | 250 | (setq delete-by-moving-to-trash t))) |
251 | 251 | ||
252 | (use-package visual-fill-column | 252 | ;;; writing |
253 | :init | 253 | |
254 | (setq split-window-preferred-function 'visual-fill-column-split-window-sensibly) | 254 | (use-package visual-fill-column |
255 | (setq visual-fill-column-center-text t) | 255 | :init |
256 | :config | 256 | (setq split-window-preferred-function 'visual-fill-column-split-window-sensibly) |
257 | (advice-add 'text-scale-adjust | 257 | (setq visual-fill-column-center-text t) |
258 | :after #'visual-fill-column-adjust)) | 258 | :config |
259 | 259 | (advice-add 'text-scale-adjust | |
260 | ;;; window management | 260 | :after #'visual-fill-column-adjust)) |
261 | 261 | ||
262 | (use-package switch-window | 262 | ;;; window management |
263 | :init | 263 | |
264 | (setq switch-window-shortcut-style 'qwerty) | 264 | (use-package switch-window |
265 | :bind | 265 | :init |
266 | ([remap other-window] . switch-window) | 266 | (setq switch-window-shortcut-style 'qwerty) |
267 | ("s-o" . switch-window)) | 267 | :bind |
268 | 268 | ([remap other-window] . switch-window) | |
269 | ;;; theming and looks | 269 | ("s-o" . switch-window)) |
270 | 270 | ||
271 | (use-package doom-modeline | 271 | ;;; theming and looks |
272 | :init | 272 | |
273 | (setq doom-modeline-icon nil) | 273 | (use-package doom-modeline |
274 | (setq doom-modeline-enable-word-count t) | 274 | :init |
275 | (when acdw/at-larry | 275 | (setq doom-modeline-icon nil) |
276 | (setq display-time-format "%R") | 276 | (setq doom-modeline-enable-word-count t) |
277 | (display-time-mode)) | 277 | (when acdw/at-larry |
278 | :config | 278 | (setq display-time-format "%R") |
279 | (doom-modeline-mode)) | 279 | (display-time-mode)) |
280 | 280 | :config | |
281 | (when acdw/at-larry | 281 | (doom-modeline-mode)) |
282 | (use-package statusbar | 282 | |
283 | :straight (statusbar | 283 | (when acdw/at-larry |
284 | :host github | 284 | (use-package statusbar |
285 | :repo "dakra/statusbar.el") | 285 | :straight (statusbar |
286 | :hook | 286 | :host github |
287 | (exwm-init-hook . statusbar-mode))) | 287 | :repo "dakra/statusbar.el") |
288 | 288 | :hook | |
289 | ;; modus themes | 289 | (exwm-init-hook . statusbar-mode))) |
290 | 290 | ||
291 | (use-package modus-operandi-theme | 291 | ;; modus themes |
292 | :if window-system | 292 | |
293 | :config | 293 | (use-package modus-operandi-theme |
294 | (load-theme 'modus-operandi t t) | 294 | :if window-system |
295 | 295 | :config | |
296 | (defun acdw/sunrise () | 296 | (load-theme 'modus-operandi t t) |
297 | (enable-theme 'modus-operandi) | 297 | |
298 | (start-process-shell-command "light" nil "light -S 60")) | 298 | (defun acdw/sunrise () |
299 | 299 | (enable-theme 'modus-operandi) | |
300 | (if acdw/at-work | 300 | (start-process-shell-command "light" nil "light -S 60")) |
301 | (enable-theme 'modus-operandi) | 301 | |
302 | (run-at-time (nth 1 (split-string (sunrise-sunset))) | 302 | (if acdw/at-work |
303 | (* 60 60 24) #'acdw/sunrise))) | 303 | (enable-theme 'modus-operandi) |
304 | 304 | (run-at-time (nth 1 (split-string (sunrise-sunset))) | |
305 | (unless acdw/at-work | 305 | (* 60 60 24) #'acdw/sunrise))) |
306 | (use-package modus-vivendi-theme | 306 | |
307 | :if window-system | 307 | (unless acdw/at-work |
308 | :config | 308 | (use-package modus-vivendi-theme |
309 | (load-theme 'modus-vivendi t t) | 309 | :if window-system |
310 | 310 | :config | |
311 | (defun acdw/sunset () | 311 | (load-theme 'modus-vivendi t t) |
312 | (enable-theme 'modus-vivendi) | 312 | |
313 | (start-process-shell-command "light" nil "light -S 35")) | 313 | (defun acdw/sunset () |
314 | 314 | (enable-theme 'modus-vivendi) | |
315 | (run-at-time (nth 4 (split-string (sunrise-sunset))) | 315 | (start-process-shell-command "light" nil "light -S 35")) |
316 | (* 60 60 24) #'acdw/sunset) | 316 | |
317 | (run-at-time "12am" (* 60 60 24) #'acdw/sunset))) | 317 | (run-at-time (nth 4 (split-string (sunrise-sunset))) |
318 | 318 | (* 60 60 24) #'acdw/sunset) | |
319 | ;;; gemini/gopher | 319 | (run-at-time "12am" (* 60 60 24) #'acdw/sunset))) |
320 | (use-package elpher | 320 | |
321 | :straight (elpher | 321 | ;;; gemini/gopher |
322 | :repo "git://thelambdalab.xyz/elpher.git") | 322 | (use-package elpher |
323 | :bind (:map elpher-mode-map | 323 | :straight (elpher |
324 | ("n" . 'elpher-next-link) | 324 | :repo "git://thelambdalab.xyz/elpher.git") |
325 | ("p" . 'elpher-prev-link))) | 325 | :bind (:map elpher-mode-map |
326 | 326 | ("n" . 'elpher-next-link) | |
327 | (use-package gemini-mode | 327 | ("p" . 'elpher-prev-link))) |
328 | :straight (gemini-mode | 328 | |
329 | :repo "https://git.carcosa.net/jmcbray/gemini.el.git")) | 329 | (use-package gemini-mode |
330 | 330 | :straight (gemini-mode | |
331 | (use-package gemini-write | 331 | :repo "https://git.carcosa.net/jmcbray/gemini.el.git")) |
332 | :straight (gemini-write | 332 | |
333 | :repo "https://alexschroeder.ch/cgit/gemini-write")) | 333 | (use-package gemini-write |
334 | 334 | :straight (gemini-write | |
335 | ;;; exwm ~ Emacs X Window Manager | 335 | :repo "https://alexschroeder.ch/cgit/gemini-write")) |
336 | (when acdw/at-larry | 336 | |
337 | (use-package exwm | 337 | ;;; exwm ~ Emacs X Window Manager |
338 | :if window-system | 338 | (when acdw/at-larry |
339 | :demand | 339 | (use-package exwm |
340 | :custom | 340 | :if window-system |
341 | (exwm-layout-show-all-buffers t) | 341 | :demand |
342 | (exwm-workspace-warp-cursor t) | 342 | :custom |
343 | ;;(mouse-autoselect-window t) | 343 | (exwm-layout-show-all-buffers t) |
344 | (exwm-workspace-number 4) | 344 | (exwm-workspace-warp-cursor t) |
345 | (exwm-input-global-keys | 345 | ;;(mouse-autoselect-window t) |
346 | `( | 346 | (exwm-workspace-number 4) |
347 | ([?\s-r] . exwm-reset) | 347 | (exwm-input-global-keys |
348 | ([?\s-w] . exwm-workspace-switch) | 348 | `( |
349 | ([?\s-&] . (lambda (command) | 349 | ([?\s-r] . exwm-reset) |
350 | (interactive (list (read-shell-command "$ "))) | 350 | ([?\s-w] . exwm-workspace-switch) |
351 | (start-process-shell-command command nil command))) | 351 | ([?\s-&] . (lambda (command) |
352 | ,@(mapcar (lambda (i) | 352 | (interactive (list (read-shell-command "$ "))) |
353 | `(,(kbd (format "s-%d" i)) . | 353 | (start-process-shell-command command nil command))) |
354 | (lambda () | 354 | ,@(mapcar (lambda (i) |
355 | (interactive) | 355 | `(,(kbd (format "s-%d" i)) . |
356 | (exwm-workspace-switch-create ,i)))) | 356 | (lambda () |
357 | (number-sequence 0 9)))) | 357 | (interactive) |
358 | (exwm-input-simulation-keys | 358 | (exwm-workspace-switch-create ,i)))) |
359 | '(([?\C-b] . [left]) | 359 | (number-sequence 0 9)))) |
360 | ([?\M-b] . [C-left]) | 360 | (exwm-input-simulation-keys |
361 | ([?\C-f] . [right]) | 361 | '(([?\C-b] . [left]) |
362 | ([?\M-f] . [C-right]) | 362 | ([?\M-b] . [C-left]) |
363 | ([?\C-p] . [up]) | 363 | ([?\C-f] . [right]) |
364 | ([?\C-n] . [down]) | 364 | ([?\M-f] . [C-right]) |
365 | ([?\C-a] . [home]) | 365 | ([?\C-p] . [up]) |
366 | ([?\C-e] . [end]) | 366 | ([?\C-n] . [down]) |
367 | ([?\M-v] . [prior]) | 367 | ([?\C-a] . [home]) |
368 | ([?\C-v] . [next]) | 368 | ([?\C-e] . [end]) |
369 | ([?\C-d] . [delete]) | 369 | ([?\M-v] . [prior]) |
370 | ([?\C-k] . [S-end delete]) | 370 | ([?\C-v] . [next]) |
371 | ([?\C-s] . [?\C-f]) | 371 | ([?\C-d] . [delete]) |
372 | ([?\C-w] . [?\C-x]) | 372 | ([?\C-k] . [S-end delete]) |
373 | ([?\M-w] . [?\C-c]) | 373 | ([?\C-s] . [?\C-f]) |
374 | ([?\C-y] . [?\C-v]))) | 374 | ([?\C-w] . [?\C-x]) |
375 | :hook | 375 | ([?\M-w] . [?\C-c]) |
376 | ((exwm-update-class-hook . | 376 | ([?\C-y] . [?\C-v]))) |
377 | (lambda () "Rename buffer to window's class name" | 377 | :hook |
378 | (exwm-workspace-rename-buffer exwm-class-name))) | 378 | ((exwm-update-class-hook . |
379 | (exwm-update-title-hook . | 379 | (lambda () "Rename buffer to window's class name" |
380 | (lambda () "Update workspace name to window title" | 380 | (exwm-workspace-rename-buffer exwm-class-name))) |
381 | (when (not exwm-instance-name) | 381 | (exwm-update-title-hook . |
382 | (exwm-workspace-rename-buffer exwm-title)))) | 382 | (lambda () "Update workspace name to window title" |
383 | (exwm-init-hook . window-divider-mode) | 383 | (when (not exwm-instance-name) |
384 | (exwm-init-hook . | 384 | (exwm-workspace-rename-buffer exwm-title)))) |
385 | (lambda () "Autostart" | 385 | (exwm-init-hook . window-divider-mode) |
386 | (start-process-shell-command "cmst" nil "cmst -m -w 5") | 386 | (exwm-init-hook . |
387 | (start-process-shell-command "keepassxc" nil "keepassxc") | 387 | (lambda () "Autostart" |
388 | (start-process-shell-command | 388 | (start-process-shell-command "cmst" nil "cmst -m -w 5") |
389 | "pa-applet" nil | 389 | (start-process-shell-command "keepassxc" nil "keepassxc") |
390 | "pa-applet --disable-key-grabbing --disable-notifications") | 390 | (start-process-shell-command |
391 | (start-process-shell-command | 391 | "pa-applet" nil |
392 | "cbatticon" nil "cbatticon")))) | 392 | "pa-applet --disable-key-grabbing --disable-notifications") |
393 | :config | 393 | (start-process-shell-command |
394 | (require 'exwm) | 394 | "cbatticon" nil "cbatticon")))) |
395 | (exwm-enable) | 395 | :config |
396 | (require 'exwm-systemtray) | 396 | (require 'exwm) |
397 | (exwm-systemtray-enable)) | 397 | (exwm-enable) |
398 | 398 | (require 'exwm-systemtray) | |
399 | (use-package exwm-firefox-core | 399 | (exwm-systemtray-enable)) |
400 | :after exwm | 400 | |
401 | :straight (exwm-firefox-core | 401 | (use-package exwm-firefox-core |
402 | :type git | 402 | :after exwm |
403 | :host github | 403 | :straight (exwm-firefox-core |
404 | :repo "walseb/exwm-firefox-core")) | 404 | :type git |
405 | 405 | :host github | |
406 | (use-package exwm-firefox | 406 | :repo "walseb/exwm-firefox-core")) |
407 | :after exwm-firefox-core | 407 | |
408 | :straight (exwm-firefox | 408 | (use-package exwm-firefox |
409 | :type git | 409 | :after exwm-firefox-core |
410 | :host github | 410 | :straight (exwm-firefox |
411 | :repo "ieure/exwm-firefox") | 411 | :type git |
412 | :config | 412 | :host github |
413 | (exwm-firefox-mode)) | 413 | :repo "ieure/exwm-firefox") |
414 | 414 | :config | |
415 | (use-package exwm-mff | 415 | (exwm-firefox-mode)) |
416 | :straight (:repo "duckwork/exwm-mff") | 416 | |
417 | :after exwm | 417 | (use-package exwm-mff |
418 | :hook | 418 | :straight (exwm-mff |
419 | (exwm-init-hook . exwm-mff-mode)) | 419 | :host github |
420 | ) ;; end of acdw/at-larry block | 420 | :repo "duckwork/exwm-mff") |
421 | :after exwm | ||
422 | :hook | ||
423 | (exwm-init-hook . exwm-mff-mode)) | ||
424 | ) ;; end of acdw/at-larry block | ||