switch to exwm
authorAmin Bandali <bandali@gnu.org>
Thu, 5 Sep 2019 12:30:15 +0000 (08:30 -0400)
committerAmin Bandali <bandali@gnu.org>
Thu, 5 Sep 2019 12:30:15 +0000 (08:30 -0400)
.emacs.d/init.el
.profile

index 21d175d..2abf0fa 100644 (file)
@@ -559,13 +559,13 @@ For disabling the behaviour for certain buffers and/or modes."
 ;;; Essential packages
 
 (use-package exwm
-  :disabled
   :demand
   :config
   (require 'exwm-config)
 
-  ;; Set the initial workspace number.
-  (setq exwm-workspace-number 4)
+  (setq
+   exwm-workspace-number 4
+   exwm-workspace-index-map (lambda (i) (number-to-string (1+ i))))
 
   ;; Make class name the buffer name, truncating beyond 50 characters
   (defun exwm-rename-buffer ()
@@ -577,6 +577,21 @@ For disabling the behaviour for certain buffers and/or modes."
   (add-hook 'exwm-update-class-hook 'exwm-rename-buffer)
   (add-hook 'exwm-update-title-hook 'exwm-rename-buffer)
 
+  (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)))
+
   ;; 's-R': Reset
   (exwm-input-set-key (kbd "s-R") #'exwm-reset)
   ;; 's-\': Switch workspace
@@ -587,7 +602,33 @@ For disabling the behaviour for certain buffers and/or modes."
      (kbd (format "s-%d" i))
      (lambda ()
        (interactive)
-       (exwm-workspace-switch-create i))))
+       (exwm-workspace-switch-create (1- i)))))
+  ;; 's-[': Switch to previous workspace
+  (defun b/exwm-ws-prev ()
+    "Switch to previous EXWM workspace, wrapping around if needed."
+    (interactive)
+    (exwm-workspace-switch-create (b/exwm-ws-prev-index)))
+  (exwm-input-set-key (kbd "s-[") #'b/exwm-ws-prev)
+  ;; 's-]': Switch to next workspace
+  (defun b/exwm-ws-next ()
+    "Switch to next EXWM workspace, wrapping around if needed."
+    (interactive)
+    (exwm-workspace-switch-create (b/exwm-ws-next-index)))
+  (exwm-input-set-key (kbd "s-]") #'b/exwm-ws-next)
+  ;; 's-{': Move window to previous workspace
+  (defun b/exwm-move-window-to-prev-ws ()
+    "Move window to previous EXWM workspace, wrapping around if
+needed."
+    (interactive)
+    (exwm-workspace-move-window (b/exwm-ws-prev-index)))
+  (exwm-input-set-key (kbd "s-{") #'b/exwm-move-window-to-prev-ws)
+  ;; 's-}': Move window to next workspace
+  (defun b/exwm-move-window-to-next-ws ()
+    "Move window to next EXWM workspace, wrapping around if
+needed."
+    (interactive)
+    (exwm-workspace-move-window (b/exwm-ws-next-index)))
+  (exwm-input-set-key (kbd "s-}") #'b/exwm-move-window-to-next-ws)
   ;; 's-SPC': Launch application
   ;; (exwm-input-set-key
   ;;  (kbd "s-SPC")
@@ -602,25 +643,25 @@ For disabling the behaviour for certain buffers and/or modes."
 
   ;; 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 delete])
-          ;; cut/copy/paste
-          ;; ([?\C-w] . [?\C-x])
-          ([?\M-w] . [?\C-c])
-          ([?\C-y] . [?\C-v])
-          ;; search
-          ([?\C-s] . [?\C-f])))
+    '(;; 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 delete])
+      ;; cut/copy/paste
+      ;; ([?\C-w] . [?\C-x])
+      ([?\M-w] . [?\C-c])
+      ([?\C-y] . [?\C-v])
+      ;; search
+      ([?\C-s] . [?\C-f])))
 
   ;; Enable EXWM
   (exwm-enable)
@@ -693,16 +734,26 @@ For disabling the behaviour for certain buffers and/or modes."
   ;;    (interactive)
   ;;    (start-process-shell-command "mpc" nil "mpv next")))
 
-  (defun b/exwm-pasystray ()
-    "A command used to start pasystray."
+  (comment
+    (defun b/exwm-pasystray ()
+      "A command used to start pasystray."
+      (interactive)
+      (if (executable-find "pasystray")
+          (progn
+            (message "EXWM: starting pasystray ...")
+            (start-process-shell-command "pasystray" nil "pasystray --notify=all"))
+        (message "EXWM: pasystray is not installed, abort!")))
+    (add-hook 'exwm-init-hook #'b/exwm-pasystray))
+
+  (defun b/exwm-nm-applet ()
+    "A command used to start nm-applet."
     (interactive)
-    (if (executable-find "pasystray")
-    (progn
-          (message "EXWM: starting pasystray ...")
-          (start-process-shell-command "pasystray" nil "pasystray --notify=all"))
-      (message "EXWM: pasystray is not installed, abort!")))
-
-  (add-hook 'exwm-init-hook #'b/exwm-pasystray)
+    (if (executable-find "nm-applet")
+        (progn
+          (message "EXWM: starting nm-applet ...")
+          (start-process-shell-command "nm-applet" nil "nm-applet"))
+      (message "EXWM: nm-applet is not installed, abort!")))
+  (add-hook 'exwm-init-hook #'b/exwm-nm-applet)
 
   (exwm-input-set-key
    (kbd "s-t")
index c812eb9..af4bb6b 100644 (file)
--- a/.profile
+++ b/.profile
@@ -71,6 +71,8 @@ setxkbmap \
 
 xmodmap -e "keysym Menu = Super_R"
 
+xset r rate 200 45
+
 xrdb -merge "$HOME/.Xresources"
 
 # footenote: when on a foreign distro and using Xfce, don't forget to