diff options
Diffstat (limited to '')
| -rw-r--r-- | .gitmodules | 46 | ||||
| -rw-r--r-- | init.el | 243 | ||||
| m--------- | lib/amx | 0 | ||||
| m--------- | lib/async | 0 | ||||
| m--------- | lib/dash | 0 | ||||
| m--------- | lib/ivy | 0 | ||||
| m--------- | lib/libgit | 0 | ||||
| m--------- | lib/magit | 0 | ||||
| m--------- | lib/no-littering | 0 | ||||
| m--------- | lib/org | 0 | ||||
| m--------- | lib/s | 0 | ||||
| m--------- | lib/transient | 0 | ||||
| m--------- | lib/with-editor | 0 | ||||
| -rw-r--r-- | lisp/bandali-exwm.el | 212 | 
14 files changed, 275 insertions, 226 deletions
diff --git a/.gitmodules b/.gitmodules index 61b63fa..003c015 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,58 @@ +[submodule "amx"] +	path = lib/amx +	url = https://github.com/DarwinAwardWinner/amx.git +[submodule "async"] +	path = lib/async +	url = https://github.com/jwiegley/emacs-async.git  [submodule "auto-compile"]  	path = lib/auto-compile  	url = https://github.com/emacscollective/auto-compile.git  [submodule "borg"]  	path = lib/borg  	url = https://github.com/emacscollective/borg.git +[submodule "dash"] +	path = lib/dash +	url = https://github.com/magnars/dash.el.git +    no-makeinfo = dash-template.texi +	# dash creates a `dir' dash info file, which makes git think +	# that the submodule is dirty. so, let's ignore the untracked +	# files of dash's submodule +	ignore = untracked +[submodule "ivy"] +	path = lib/ivy +	url = https://github.com/abo-abo/swiper.git +    info-path = doc +[submodule "libgit"] +	path = lib/libgit +	url = https://github.com/magit/libegit2.git +    build-step = make +[submodule "magit"] +	path = lib/magit +	url = https://github.com/magit/magit.git +    recursive-byte-compile = true +	info-path = Documentation +[submodule "no-littering"] +	path = lib/no-littering +	url = https://github.com/emacscollective/no-littering.git +[submodule "org"] +	path = lib/org +	url = https://code.orgmode.org/bzg/org-mode.git +    build-step = make +	load-path = lisp +	load-path = contrib/lisp +	info-path = doc  [submodule "packed"]  	path = lib/packed  	url = https://github.com/emacscollective/packed.git +[submodule "s"] +	path = lib/s +	url = https://github.com/magnars/s.el.git +[submodule "transient"] +	path = lib/transient +	url = https://github.com/magit/transient.git  [submodule "use-package"]  	path = lib/use-package  	url = https://github.com/jwiegley/use-package.git +[submodule "with-editor"] +	path = lib/with-editor +	url = https://github.com/magit/with-editor.git @@ -42,6 +42,8 @@    "Value of `current-time' when Emacs begins loading `user-init-file'.")  (defvar b/emacs-initialized nil    "Whether Emacs has been initialized.") +(defvar b/exwm-p (string= (system-name) "chaman") +  "Whether or not we will be using `exwm'.")  (when (not (bound-and-true-p b/emacs-initialized))    (message "Loading Emacs...done (%.3fs)" @@ -67,15 +69,16 @@          gc-cons-threshold       b/gc-cons-threshold          gc-cons-percentage      b/gc-cons-percentage          file-name-handler-alist b/file-name-handler-alist) -  (with-eval-after-load 'exwm-workspace -    (setq-default -     mode-line-format -     (append -      mode-line-format -      '((:eval -         (format -          "[%s]" (number-to-string -                  exwm-workspace-current-index)))))))) +  (when b/exwm-p +    (with-eval-after-load 'exwm-workspace +      (setq-default +       mode-line-format +       (append +        mode-line-format +        '((:eval +           (format +            "[%s]" (number-to-string +                    exwm-workspace-current-index)))))))))  (add-hook 'after-init-hook #'b/post-init)  ;; increase number of lines kept in *Messages* log @@ -138,9 +141,6 @@  ;;; Initial setup -(defvar b/exwm-p (string= (system-name) "chaman") -  "Whether or not we will be using `exwm'.") -  ;; keep ~/.emacs.d clean  (use-package no-littering    :demand @@ -483,6 +483,7 @@ For disabling the behaviour for certain buffers and/or modes."    :after epg-config)  (use-package pinentry +  :disabled    :demand    :after (epa epg server)    :config @@ -542,222 +543,10 @@ For disabling the behaviour for certain buffers and/or modes."  ;;; Essential packages -(use-package exwm -  :if b/exwm-p -  :demand -  :config -  ;; make class name the buffer name, truncating beyond 60 characters -  (defun b/exwm-rename-buffer () -    (interactive) -    (exwm-workspace-rename-buffer -     (concat exwm-class-name ":" -             (if (<= (length exwm-title) 60) exwm-title -               (concat (substring exwm-title 0 59) "..."))))) -  ;; Enable EXWM -  (exwm-enable) -  :hook ((exwm-update-class . b/exwm-rename-buffer) -         (exwm-update-title . b/exwm-rename-buffer))) - -(use-package exwm-config -  :demand -  :after exwm -  :hook (exwm-init . exwm-config--fix/ido-buffer-window-other-frame)) - -(use-package exwm-input -  :demand -  :after exwm -  :config -  (defun b/exwm-ws-prev-index () -    "Return the index for the previous EXWM workspace, wrapping -around if needed." -    (if (= exwm-workspace-current-index 0) -        (1- exwm-workspace-number) -      (1- exwm-workspace-current-index))) - -  (defun b/exwm-ws-next-index () -    "Return the index for the next EXWM workspace, wrapping -around if needed." -    (if (= exwm-workspace-current-index -           (1- exwm-workspace-number)) -        0 -      (1+ exwm-workspace-current-index))) - -  ;; shorten 'C-c C-q' to 'C-q' -  (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key) - -  (setq exwm-workspace-number 4 -        exwm-input-global-keys -        `(([?\s-R] . exwm-reset) -          ([?\s-\\] . exwm-workspace-switch) -          ([?\s-\s] . dmenu) -          ([?\S-\s-\s] . (lambda (command) -                              (interactive -                               (list (read-shell-command "➜ "))) -                              (start-process-shell-command -                               command nil command))) -          ([s-return] . (lambda () -                          (interactive) -                          (start-process "" nil "urxvt"))) -          ([?\C-\s-\s] . counsel-linux-app) -          ([?\M-\s-\s] . (lambda () -                           (interactive) -                           (start-process-shell-command -                            "rofi-pass" nil "rofi-pass"))) -          ([?\s-h] . windmove-left) -          ([?\s-j] . windmove-down) -          ([?\s-k] . windmove-up) -          ([?\s-l] . windmove-right) -          ([?\s-H] . windmove-swap-states-left) -          ([?\s-J] . windmove-swap-states-down) -          ([?\s-K] . windmove-swap-states-up) -          ([?\s-L] . windmove-swap-states-right) -          ([?\M-\s-h] . shrink-window-horizontally) -          ([?\M-\s-l] . enlarge-window-horizontally) -          ([?\M-\s-k] . shrink-window) -          ([?\M-\s-j] . enlarge-window) -          ([?\s-\[] . (lambda () -                        (interactive) -                        (exwm-workspace-switch-create -                         (b/exwm-ws-prev-index)))) -          ([?\s-\]] . (lambda () -                        (interactive) -                        (exwm-workspace-switch-create -                         (b/exwm-ws-next-index)))) -          ([?\s-{] . (lambda () -                       (interactive) -                       (exwm-workspace-move-window -                        (b/exwm-ws-prev-index)))) -          ([?\s-}] . (lambda () -                       (interactive) -                       (exwm-workspace-move-window -                        (b/exwm-ws-next-index)))) -          ,@(mapcar (lambda (i) -                      `(,(kbd (format "s-%d" i)) . -                        (lambda () -                          (interactive) -                          (exwm-workspace-switch-create ,i)))) -                    (number-sequence 0 (1- exwm-workspace-number))) -          ([?\s-t] . exwm-floating-toggle-floating) -          ([?\s-f] . exwm-layout-toggle-fullscreen) -          ([?\s-W] . (lambda () -                       (interactive) -                       (kill-buffer (current-buffer)))) -          ([?\s-Q] . (lambda () -                       (interactive) -                       (exwm-manage--kill-client))) -          ([?\s-\'] . (lambda () -                        (interactive) -                        (start-process-shell-command -                         "rofi-light" nil "rofi-light"))) -          ([XF86AudioMute] . -           (lambda () -             (interactive) -             (start-process "" nil "amixer" "set" "'Master',0" "toggle"))) -          ([XF86AudioLowerVolume] . -           (lambda () -             (interactive) -             (start-process -              "" nil "amixer" "set" "'Master',0" "5%-"))) -          ([XF86AudioRaiseVolume] . -           (lambda () -             (interactive) -             (start-process -              "" nil "amixer" "set" "'Master',0" "5%+"))) -          ([XF86AudioPlay] . -           (lambda () -             (interactive) -             (start-process "" nil "mpc" "toggle"))) -          ([XF86AudioPrev] . -           (lambda () -             (interactive) -             (start-process "" nil "mpc" "prev"))) -          ([XF86AudioNext] . -           (lambda () -             (interactive) -             (start-process "" nil "mpc" "next"))) -          ([XF86ScreenSaver] . -           (lambda () -		     (interactive) -		     (start-process "" nil "dm-tool" "lock"))) -          ([\s-XF86Back] . previous-buffer) -          ([\s-XF86Forward] . next-buffer))) - -  ;; Line-editing shortcuts -  (setq exwm-input-simulation-keys -    '(;; movement -      ([?\C-b] . [left]) -      ([?\M-b] . [C-left]) -      ([?\C-f] . [right]) -      ([?\M-f] . [C-right]) -      ([?\C-p] . [up]) -      ([?\C-n] . [down]) -      ([?\C-a] . [home]) -      ([?\C-e] . [end]) -      ([?\M-v] . [prior]) -      ([?\C-v] . [next]) -      ([?\C-d] . [delete]) -      ([?\C-k] . [S-end ?\C-x]) -      ([?\M-<] . C-home) -      ([?\M->] . C-end) -      ;; cut/copy/paste -      ([?\C-w] . [?\C-x]) -      ([?\M-w] . [?\C-c]) -      ([?\C-y] . [?\C-v]) -      ([?\M-d] . [C-S-right ?\C-x]) -      ([?\M-\d] . [C-S-left ?\C-x]) -      ;; window -      ([?\s-w] . [?\C-w]) -      ([?\s-q] . [?\C-q]) -      ;; misc -      ([?\C-s] . [?\C-f]) -      ([?\s-s] . [?\C-s]) -      ([?\C-g] . [escape])))) - -(use-package exwm-manage -  :demand -  :after exwm -  :hook -  (exwm-manage-finish . (lambda () -                          (when exwm-class-name -                            (cond -                             ((string= exwm-class-name "IceCat") -                              (exwm-input-set-local-simulation-keys -                               `(,@exwm-input-simulation-keys -                                 ([?\C-\S-d] . [?\C-d])))) -                             ((string= exwm-class-name "URxvt") -                              (exwm-input-set-local-simulation-keys -                               '(([?\C-c ?\C-c] . [?\C-c]) -                                 ([?\C-c ?\C-u] . [?\C-u])))) -                             ((string= exwm-class-name "Zathura") -                              (exwm-input-set-local-simulation-keys -                               '(([?\C-p] . [C-up]) -                                 ([?\C-n] . [C-down]))))))))) - -(use-package exwm-randr -  :demand -  :after exwm -  :config -  (exwm-randr-enable) -  :custom -  (exwm-randr-workspace-monitor-plist '(1 "VGA-1"))) - -(use-package exwm-systemtray -  :demand -  :after exwm -  :config -  (exwm-systemtray-enable)) - -(use-package exwm-workspace) - -(use-package exwm-edit -  :demand -  :after exwm) - -;; use the org-plus-contrib package to get the whole deal -(use-package org-plus-contrib) +(when b/exwm-p +  (require 'bandali-exwm))  (use-package org -  :defer 0.5    :config    (setq org-src-tab-acts-natively t          org-src-preserve-indentation nil @@ -1007,6 +796,7 @@ This function is intended for use with `ivy-ignore-buffers'."    (counsel-mode 1)    (defalias 'locate #'counsel-locate)) +(comment  (use-package eshell    :defer 0.5    :commands eshell @@ -2569,6 +2359,7 @@ https://csclub.uwaterloo.ca/~abandali")  ;;; Post initialization +)  (message "Loading %s...done (%.3fs)" user-init-file           (float-time (time-subtract (current-time)                                      b/before-user-init-time))) diff --git a/lib/amx b/lib/amx new file mode 160000 +Subproject e512e74e8368f9b1cf83bee16dd2522f3b1dbee diff --git a/lib/async b/lib/async new file mode 160000 +Subproject 86aef2c38e7d35e8509b7feeee3e989d825eba9 diff --git a/lib/dash b/lib/dash new file mode 160000 +Subproject 721436b04da4e2795387cb48a98ac6de37ece0f diff --git a/lib/ivy b/lib/ivy new file mode 160000 +Subproject 64f05f4735bba8b708bc12cfc2cbfb7fb770678 diff --git a/lib/libgit b/lib/libgit new file mode 160000 +Subproject 6c3b89276a149b2d009882f756a9edf866671f0 diff --git a/lib/magit b/lib/magit new file mode 160000 +Subproject 0f1234e785747b2865eb8aa5205f4e4eafceeb8 diff --git a/lib/no-littering b/lib/no-littering new file mode 160000 +Subproject 92661bc9b33af1e9d405d23f226c1fc80c0c9c0 diff --git a/lib/org b/lib/org new file mode 160000 +Subproject 32d8f2f32e5fb0cd597d240b4976cb83cab44ed diff --git a/lib/s b/lib/s new file mode 160000 +Subproject 43ba8b563bee3426cead0e6d4ddc09398e1a349 diff --git a/lib/transient b/lib/transient new file mode 160000 +Subproject afa0c2f98453b9ffd9d8160831debc7e36cdb87 diff --git a/lib/with-editor b/lib/with-editor new file mode 160000 +Subproject 4fe66d4d55c8eacebda53a13cc38e01d32bdaaa diff --git a/lisp/bandali-exwm.el b/lisp/bandali-exwm.el new file mode 100644 index 0000000..d9be901 --- /dev/null +++ b/lisp/bandali-exwm.el @@ -0,0 +1,212 @@ +(use-package exwm +  :if b/exwm-p +  :demand +  :config +  ;; make class name the buffer name, truncating beyond 60 characters +  (defun b/exwm-rename-buffer () +    (interactive) +    (exwm-workspace-rename-buffer +     (concat exwm-class-name ":" +             (if (<= (length exwm-title) 60) exwm-title +               (concat (substring exwm-title 0 59) "..."))))) +  ;; Enable EXWM +  (exwm-enable) +  :hook ((exwm-update-class . b/exwm-rename-buffer) +         (exwm-update-title . b/exwm-rename-buffer))) + +(use-package exwm-config +  :demand +  :after exwm +  :hook (exwm-init . exwm-config--fix/ido-buffer-window-other-frame)) + +(use-package exwm-input +  :demand +  :after exwm +  :config +  (defun b/exwm-ws-prev-index () +    "Return the index for the previous EXWM workspace, wrapping +around if needed." +    (if (= exwm-workspace-current-index 0) +        (1- exwm-workspace-number) +      (1- exwm-workspace-current-index))) + +  (defun b/exwm-ws-next-index () +    "Return the index for the next EXWM workspace, wrapping +around if needed." +    (if (= exwm-workspace-current-index +           (1- exwm-workspace-number)) +        0 +      (1+ exwm-workspace-current-index))) + +  ;; shorten 'C-c C-q' to 'C-q' +  (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key) + +  (setq exwm-workspace-number 4 +        exwm-input-global-keys +        `(([?\s-R] . exwm-reset) +          ([?\s-\\] . exwm-workspace-switch) +          ([?\s-\s] . dmenu) +          ([?\S-\s-\s] . (lambda (command) +                              (interactive +                               (list (read-shell-command "➜ "))) +                              (start-process-shell-command +                               command nil command))) +          ([s-return] . (lambda () +                          (interactive) +                          (start-process "" nil "urxvt"))) +          ([?\C-\s-\s] . counsel-linux-app) +          ([?\M-\s-\s] . (lambda () +                           (interactive) +                           (start-process-shell-command +                            "rofi-pass" nil "rofi-pass"))) +          ([?\s-h] . windmove-left) +          ([?\s-j] . windmove-down) +          ([?\s-k] . windmove-up) +          ([?\s-l] . windmove-right) +          ([?\s-H] . windmove-swap-states-left) +          ([?\s-J] . windmove-swap-states-down) +          ([?\s-K] . windmove-swap-states-up) +          ([?\s-L] . windmove-swap-states-right) +          ([?\M-\s-h] . shrink-window-horizontally) +          ([?\M-\s-l] . enlarge-window-horizontally) +          ([?\M-\s-k] . shrink-window) +          ([?\M-\s-j] . enlarge-window) +          ([?\s-\[] . (lambda () +                        (interactive) +                        (exwm-workspace-switch-create +                         (b/exwm-ws-prev-index)))) +          ([?\s-\]] . (lambda () +                        (interactive) +                        (exwm-workspace-switch-create +                         (b/exwm-ws-next-index)))) +          ([?\s-{] . (lambda () +                       (interactive) +                       (exwm-workspace-move-window +                        (b/exwm-ws-prev-index)))) +          ([?\s-}] . (lambda () +                       (interactive) +                       (exwm-workspace-move-window +                        (b/exwm-ws-next-index)))) +          ,@(mapcar (lambda (i) +                      `(,(kbd (format "s-%d" i)) . +                        (lambda () +                          (interactive) +                          (exwm-workspace-switch-create ,i)))) +                    (number-sequence 0 (1- exwm-workspace-number))) +          ([?\s-t] . exwm-floating-toggle-floating) +          ([?\s-f] . exwm-layout-toggle-fullscreen) +          ([?\s-W] . (lambda () +                       (interactive) +                       (kill-buffer (current-buffer)))) +          ([?\s-Q] . (lambda () +                       (interactive) +                       (exwm-manage--kill-client))) +          ([?\s-\'] . (lambda () +                        (interactive) +                        (start-process-shell-command +                         "rofi-light" nil "rofi-light"))) +          ([XF86AudioMute] . +           (lambda () +             (interactive) +             (start-process "" nil "amixer" "set" "'Master',0" "toggle"))) +          ([XF86AudioLowerVolume] . +           (lambda () +             (interactive) +             (start-process +              "" nil "amixer" "set" "'Master',0" "5%-"))) +          ([XF86AudioRaiseVolume] . +           (lambda () +             (interactive) +             (start-process +              "" nil "amixer" "set" "'Master',0" "5%+"))) +          ([XF86AudioPlay] . +           (lambda () +             (interactive) +             (start-process "" nil "mpc" "toggle"))) +          ([XF86AudioPrev] . +           (lambda () +             (interactive) +             (start-process "" nil "mpc" "prev"))) +          ([XF86AudioNext] . +           (lambda () +             (interactive) +             (start-process "" nil "mpc" "next"))) +          ([XF86ScreenSaver] . +           (lambda () +		     (interactive) +		     (start-process "" nil "dm-tool" "lock"))) +          ([\s-XF86Back] . previous-buffer) +          ([\s-XF86Forward] . next-buffer))) + +  ;; Line-editing shortcuts +  (setq exwm-input-simulation-keys +    '(;; movement +      ([?\C-b] . [left]) +      ([?\M-b] . [C-left]) +      ([?\C-f] . [right]) +      ([?\M-f] . [C-right]) +      ([?\C-p] . [up]) +      ([?\C-n] . [down]) +      ([?\C-a] . [home]) +      ([?\C-e] . [end]) +      ([?\M-v] . [prior]) +      ([?\C-v] . [next]) +      ([?\C-d] . [delete]) +      ([?\C-k] . [S-end ?\C-x]) +      ([?\M-<] . C-home) +      ([?\M->] . C-end) +      ;; cut/copy/paste +      ([?\C-w] . [?\C-x]) +      ([?\M-w] . [?\C-c]) +      ([?\C-y] . [?\C-v]) +      ([?\M-d] . [C-S-right ?\C-x]) +      ([?\M-\d] . [C-S-left ?\C-x]) +      ;; window +      ([?\s-w] . [?\C-w]) +      ([?\s-q] . [?\C-q]) +      ;; misc +      ([?\C-s] . [?\C-f]) +      ([?\s-s] . [?\C-s]) +      ([?\C-g] . [escape])))) + +(use-package exwm-manage +  :demand +  :after exwm +  :hook +  (exwm-manage-finish . (lambda () +                          (when exwm-class-name +                            (cond +                             ((string= exwm-class-name "IceCat") +                              (exwm-input-set-local-simulation-keys +                               `(,@exwm-input-simulation-keys +                                 ([?\C-\S-d] . [?\C-d])))) +                             ((string= exwm-class-name "URxvt") +                              (exwm-input-set-local-simulation-keys +                               '(([?\C-c ?\C-c] . [?\C-c]) +                                 ([?\C-c ?\C-u] . [?\C-u])))) +                             ((string= exwm-class-name "Zathura") +                              (exwm-input-set-local-simulation-keys +                               '(([?\C-p] . [C-up]) +                                 ([?\C-n] . [C-down]))))))))) + +(use-package exwm-randr +  :demand +  :after exwm +  :config +  (exwm-randr-enable) +  :custom +  (exwm-randr-workspace-monitor-plist '(1 "VGA-1"))) + +(use-package exwm-systemtray +  :demand +  :after exwm +  :config +  (exwm-systemtray-enable)) + +(use-package exwm-workspace) + +(use-package exwm-edit +  :demand +  :after exwm) + +(provide 'bandali-exwm)  | 
