about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--emacs/.emacs.d/wpc/keybindings.el36
-rw-r--r--emacs/.emacs.d/wpc/window-manager.el56
2 files changed, 37 insertions, 55 deletions
diff --git a/emacs/.emacs.d/wpc/keybindings.el b/emacs/.emacs.d/wpc/keybindings.el
index 9a9f35472fc6..2563b152359a 100644
--- a/emacs/.emacs.d/wpc/keybindings.el
+++ b/emacs/.emacs.d/wpc/keybindings.el
@@ -37,6 +37,7 @@
 (require 'fonts)
 (require 'bookmark)
 (require 'constants)
+(require 'window-manager)
 
 ;; Note: The following lines must be sorted this way.
 (setq evil-want-integration t)
@@ -147,6 +148,41 @@
 (keybindings-exwm (kbd-raw 'workspace "j") #'fonts-decrease-size)
 (keybindings-exwm (kbd-raw 'workspace "0") #'fonts-reset-size)
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Window sizing
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(keybindings-exwm "C-M-=" #'balance-windows)
+(keybindings-exwm "C-M-j" #'shrink-window)
+(keybindings-exwm "C-M-k" #'enlarge-window)
+(keybindings-exwm "C-M-h" #'shrink-window-horizontally)
+(keybindings-exwm "C-M-l" #'enlarge-window-horizontally)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Window Management
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(keybindings-exwm "M-h" #'windmove-left)
+(keybindings-exwm "M-j" #'windmove-down)
+(keybindings-exwm "M-k" #'windmove-up)
+(keybindings-exwm "M-l" #'windmove-right)
+(keybindings-exwm "M-\\" #'evil-window-vsplit)
+(keybindings-exwm "M--" #'evil-window-split)
+(keybindings-exwm "M-q" #'delete-window)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Miscellaneous
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(keybindings-exwm "M-:" #'eval-expression)
+(keybindings-exwm "M-SPC" #'ivy-helpers-run-external-command)
+(keybindings-exwm "M-x" #'counsel-M-x)
+(keybindings-exwm "<M-tab>" #'window-manager-next-workspace)
+(keybindings-exwm "<M-S-iso-lefttab>" #'window-manager-prev-workspace)
+(keybindings-exwm "C-M-\\" #'ivy-pass)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Workspaces
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(keybindings-exwm (kbd-raw 'workspace "l") #'window-manager-logout)
+
 (general-define-key
  :keymaps 'override
  "M-q" #'delete-window
diff --git a/emacs/.emacs.d/wpc/window-manager.el b/emacs/.emacs.d/wpc/window-manager.el
index 4da42d76efd5..000fca87a155 100644
--- a/emacs/.emacs.d/wpc/window-manager.el
+++ b/emacs/.emacs.d/wpc/window-manager.el
@@ -115,59 +115,7 @@
                              (list i (window-manager--named-workspace-display x))))
              -flatten))
   (evil-set-initial-state 'exwm-mode 'emacs)
-  (setq exwm-workspace-number
-        (list-length window-manager--named-workspaces))
-  (let ((kbds `(
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Window sizing
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key "C-M-=" :fn balance-windows)
-                ;; TODO: Make sure these don't interfere with LISP KBDs.
-                (:key "C-M-j" :fn shrink-window)
-                (:key "C-M-k" :fn enlarge-window)
-                (:key "C-M-h" :fn shrink-window-horizontally)
-                (:key "C-M-l" :fn enlarge-window-horizontally)
-
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Window traversing
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key "M-h" :fn windmove-left)
-                (:key "M-j" :fn windmove-down)
-                (:key "M-k" :fn windmove-up)
-                (:key "M-l" :fn windmove-right)
-
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Window splitting
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key "M-\\" :fn evil-window-vsplit)
-                (:key "M--"  :fn evil-window-split)
-
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Window deletion
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key "M-q" :fn delete-window)
-
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Miscellaneous
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key "M-:"               :fn eval-expression)
-                (:key "M-SPC"             :fn ivy-helpers-run-external-command)
-                (:key "M-x"               :fn counsel-M-x)
-                (:key "<M-tab>"           :fn window-manager-next-workspace)
-                (:key "<M-S-iso-lefttab>" :fn window-manager-prev-workspace)
-                (:key "<M-iso-lefttab>"   :fn window-manager-prev-workspace)
-                (:key "C-M-\\"            :fn ivy-pass)
-
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                ;; Workspaces
-                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-                (:key ,(kbd-raw 'workspace "l") :fn window-manager-logout))))
-
-    (setq exwm-input-global-keys
-          (->> kbds
-               (-map (lambda (plist)
-                       `(,(kbd (plist-get plist :key)) .
-                         ,(plist-get plist :fn)))))))
+  (setq exwm-workspace-number (list-length window-manager--named-workspaces))
   (setq exwm-input-simulation-keys
         ;; TODO: Consider supporting M-d and other readline style KBDs.
         '(([?\C-b] . [left])
@@ -184,8 +132,6 @@
           ([?\C-c] . [C-c])))
   (exwm-enable))
 
-;; TODO: Package workspace management in another module.
-
 ;; Here is the code required to allow EXWM to cycle workspaces.
 (defconst window-manager--workspaces
   (->> window-manager--named-workspaces