emacs: exwm: improve close/quit -related bindings
[~bandali/configs] / .emacs.d / init.el
index 93dd563..4102df0 100644 (file)
@@ -582,7 +582,7 @@ For disabling the behaviour for certain buffers and/or modes."
 
 (use-feature exwm-input
   :demand
-  :after exwm-workspace
+  :after exwm
   :config
   (defun b/exwm-ws-prev-index ()
     "Return the index for the previous EXWM workspace, wrapping
@@ -602,14 +602,16 @@ around if needed."
   ;; shorten 'C-c C-q' to 'C-q'
   (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key)
 
-  (setq exwm-input-global-keys
+  (setq exwm-workspace-number 4
+        exwm-input-global-keys
         `(([?\s-R] . exwm-reset)
           ([?\s-\\] . exwm-workspace-switch)
-          ([?\s-\s] . (lambda (command)
-                        (interactive
-                         (list (read-shell-command "➜ ")))
-                        (start-process-shell-command
-                         command nil command)))
+          ([?\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")))
@@ -654,10 +656,10 @@ around if needed."
                     (number-sequence 0 (1- exwm-workspace-number)))
           ([?\s-t] . exwm-floating-toggle-floating)
           ([?\s-f] . exwm-layout-toggle-fullscreen)
-          ([?\s-w] . (lambda ()
+          ([?\s-W] . (lambda ()
                        (interactive)
                        (kill-buffer (current-buffer))))
-          ([?\s-q] . (lambda ()
+          ([?\s-Q] . (lambda ()
                        (interactive)
                        (exwm-manage--kill-client)))
           ([?\s-\'] . (lambda ()
@@ -693,7 +695,9 @@ around if needed."
           ([XF86ScreenSaver] .
            (lambda ()
                     (interactive)
-                    (start-process "" nil "dm-tool" "lock")))))
+                    (start-process "" nil "dm-tool" "lock")))
+          ([\s-XF86Back] . previous-buffer)
+          ([\s-XF86Forward] . next-buffer)))
 
   ;; Line-editing shortcuts
   (setq exwm-input-simulation-keys
@@ -721,7 +725,10 @@ around if needed."
       ;; search
       ([?\C-s] . [?\C-f])
       ;; escape
-      ([?\C-g] . [escape]))))
+      ([?\C-g] . [escape])
+      ;; window
+      ([?\s-w] . [?\C-w])
+      ([?\s-q] . [?\C-q]))))
 
 (use-feature exwm-manage
   :demand
@@ -733,9 +740,7 @@ around if needed."
                              ((string= exwm-class-name "Abrowser")
                               (exwm-input-set-local-simulation-keys
                                `(,@exwm-input-simulation-keys
-                                 ([?\C-\S-d] . [?\C-d])
-                                 ([?\C-q] . [?\C-w])
-                                 ([?\s-q] . [?\C-q]))))
+                                 ([?\C-\S-d] . [?\C-d]))))
                              ((string= exwm-class-name "URxvt")
                               (exwm-input-set-local-simulation-keys
                                '(([?\C-c ?\C-c] . [?\C-c])
@@ -757,11 +762,7 @@ around if needed."
   :config
   (exwm-systemtray-enable))
 
-(use-feature exwm-workspace
-  :demand
-  :after exwm
-  :custom
-  (exwm-workspace-number 4))
+(use-feature exwm-workspace)
 
 (use-package exwm-edit
   :demand
@@ -1505,54 +1506,53 @@ This function is intended for use with `ivy-ignore-buffers'."
   :custom
   (doom-modeline-buffer-file-name-style 'relative-to-project))
 
-(use-package doom-themes
-  :disabled)
+(use-package doom-themes)
 
 (use-package solarized-theme
+  :disabled
+  :config
+  (load-theme 'solarized-light t))
+
+(use-package moody
   :demand
   :config
-  (load-theme 'solarized-light t)
+  (setq x-underline-at-descent-line t)
   (let ((line (face-attribute 'mode-line :underline)))
     (set-face-attribute 'mode-line          nil :overline   line)
     (set-face-attribute 'mode-line-inactive nil :overline   line)
     (set-face-attribute 'mode-line-inactive nil :underline  line)
     (set-face-attribute 'mode-line          nil :box        nil)
     (set-face-attribute 'mode-line-inactive nil :box        nil)
-    (set-face-attribute 'mode-line-inactive nil :background "#f9f2d9")))
-
-(use-package moody
-  :demand
-  :config
-  (setq x-underline-at-descent-line t)
+    (set-face-attribute 'mode-line-inactive nil :background "#eeeeee")) ; d3d7cf
   (moody-replace-mode-line-buffer-identification)
   (moody-replace-vc-mode))
 
 (defvar b/org-mode-font-lock-keywords
-  "For use with the `doom-tomorrow-night' theme."
   '(("[ \t]*\\(#\\+\\(BEGIN\\|END\\|begin\\|end\\)_\\(\\S-+\\)\\)[ \t]*\\([^\n:]*\\)"
       (1 '(:foreground "#5a5b5a" :background "#292b2b") t) ; directive
       (3 '(:foreground "#81a2be" :background "#292b2b") t) ; kind
-      (4 '(:foreground "#c5c8c6") t))))                    ; title
+      (4 '(:foreground "#c5c8c6") t)))                     ; title
+  "For use with the `doom-tomorrow-night' theme.")
 
 (defun b/lights-on ()
   "Enable my favourite light theme."
   (interactive)
   (mapc #'disable-theme custom-enabled-themes)
-  (load-theme 'solarized-light t)
+  (load-theme 'tangomod t)
   ;; (sml/apply-theme 'automatic)
-  ;; (font-lock-remove-keywords
-  ;;  'org-mode b/org-mode-font-lock-keywords)
-  (run-with-timer 0.01 nil 'exwm-systemtray--refresh))
+  (font-lock-remove-keywords
+   'org-mode b/org-mode-font-lock-keywords)
+  (exwm-systemtray--refresh))
 
 (defun b/lights-off ()
   "Go dark."
   (interactive)
   (mapc #'disable-theme custom-enabled-themes)
-  (load-theme 'solarized-dark t)
+  (load-theme 'doom-one t)
   ;; (sml/apply-theme 'automatic)
-  ;; (font-lock-add-keywords
-  ;;  'org-mode b/org-mode-font-lock-keywords t)
-  (run-with-timer 0.01 nil 'exwm-systemtray--refresh))
+  (font-lock-add-keywords
+   'org-mode b/org-mode-font-lock-keywords t)
+  (exwm-systemtray--refresh))
 
 (bind-keys
  ("C-c t d" . b/lights-off)
@@ -1935,9 +1935,7 @@ This function is intended for use with `ivy-ignore-buffers'."
   :config (minions-mode))
 
 (use-package dmenu
-  :disabled
   :custom
-  (dmenu-history-size 0)
   (dmenu-prompt-string "run: ")
   (dmenu-save-file (b/var "dmenu-items")))