emacs: exwm: rearrange and enable some bindings
[~bandali/configs] / .emacs.d / init.el
index 8802071..ccd55d2 100644 (file)
@@ -396,6 +396,7 @@ For disabling the behaviour for certain buffers and/or modes."
 
 ;; time and battery in mode-line
 (use-feature time
+  :demand
   :config
   (display-time-mode)
   :custom
@@ -403,10 +404,11 @@ For disabling the behaviour for certain buffers and/or modes."
   (display-time-format "%a %b %-e, %-l:%M%P"))
 
 (use-feature battery
+  :demand
   :config
   (display-battery-mode)
   :custom
-  (battery-mode-line-format " %b%p%% %t"))
+  (battery-mode-line-format " %p%% %t"))
 
 (use-feature fringe
   :demand
@@ -569,13 +571,13 @@ For disabling the behaviour for certain buffers and/or modes."
    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
+  ;; Make class name the buffer name, truncating beyond 60 characters
   (defun exwm-rename-buffer ()
     (interactive)
     (exwm-workspace-rename-buffer
      (concat exwm-class-name ":"
-             (if (<= (length exwm-title) 50) exwm-title
-               (concat (substring exwm-title 0 49) "...")))))
+             (if (<= (length exwm-title) 60) exwm-title
+               (concat (substring exwm-title 0 59) "...")))))
   (add-hook 'exwm-update-class-hook 'exwm-rename-buffer)
   (add-hook 'exwm-update-title-hook 'exwm-rename-buffer)
 
@@ -599,7 +601,7 @@ around if needed."
   ;; 's-\': Switch workspace
   (exwm-input-set-key (kbd "s-\\") #'exwm-workspace-switch)
   ;; 's-N': Switch to certain workspace
-  (dotimes (i 10)
+  (dotimes (i exwm-workspace-number)
     (exwm-input-set-key
      (kbd (format "s-%d" i))
      (lambda ()
@@ -640,47 +642,34 @@ needed."
 
   (exwm-input-set-key (kbd "M-s-SPC") #'counsel-linux-app)
 
-  ;; Shorten 'C-c C-q' to 'C-q'
-  (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key)
-
-  ;; 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])))
-
-  ;; Enable EXWM
-  (exwm-enable)
+  (exwm-input-set-key
+   (kbd "s-<return>") (lambda ()
+                        (interactive)
+                        (b/start-process "urxvt")))
 
-  (add-hook 'exwm-init-hook #'exwm-config--fix/ido-buffer-window-other-frame)
+  (exwm-input-set-key
+   (kbd "s-t")
+   (lambda ()
+     (interactive)
+     (exwm-floating-toggle-floating)))
 
-  (require 'exwm-systemtray)
-  (exwm-systemtray-enable)
+  (exwm-input-set-key
+   (kbd "s-f")
+   (lambda ()
+     (interactive)
+     (exwm-layout-toggle-fullscreen)))
 
-  (require 'exwm-randr)
-  (exwm-randr-enable)
+  (exwm-input-set-key
+   (kbd "s-w")
+   (lambda ()
+     (interactive)
+     (kill-buffer (current-buffer))))
 
-  ;; (exwm-input-set-key
-  ;;  (kbd "s-<return>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process "urxvt" nil "urxvt")))
+  (exwm-input-set-key
+   (kbd "s-q")
+   (lambda ()
+     (interactive)
+     (exwm-manage--kill-client)))
 
   ;; (exwm-input-set-key
   ;;  (kbd "s-SPC")  ;; rofi doesn't properly launch programs when started from emacs
@@ -700,86 +689,81 @@ needed."
   ;;    (interactive)
   ;;    (start-process "rofi-pass" nil "rofi-pass")))
 
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioMute>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "pamixer" nil "pamixer --toggle-mute")))
-
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioLowerVolume>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "pamixer" nil "pamixer --allow-boost --decrease 5")))
-
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioRaiseVolume>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "pamixer" nil "pamixer --allow-boost --increase 5")))
-
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioPlay>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "mpc" nil "mpc toggle")))
-
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioPrev>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "mpc" nil "mpc prev")))
-
-  ;; (exwm-input-set-key
-  ;;  (kbd "<XF86AudioNext>")
-  ;;  (lambda ()
-  ;;    (interactive)
-  ;;    (start-process-shell-command "mpc" nil "mpv next")))
+  (exwm-input-set-key
+   (kbd "<XF86AudioMute>")
+   (lambda ()
+     (interactive)
+     (start-process-shell-command "pamixer" nil "pamixer --toggle-mute")))
 
-  (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 "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 "<XF86AudioLowerVolume>")
+   (lambda ()
+     (interactive)
+     (start-process-shell-command "pamixer" nil "pamixer --allow-boost --decrease 5")))
 
   (exwm-input-set-key
-   (kbd "s-t")
+   (kbd "<XF86AudioRaiseVolume>")
    (lambda ()
      (interactive)
-     (exwm-floating-toggle-floating)))
+     (start-process-shell-command "pamixer" nil "pamixer --allow-boost --increase 5")))
 
   (exwm-input-set-key
-   (kbd "s-f")
+   (kbd "<XF86AudioPlay>")
    (lambda ()
      (interactive)
-     (exwm-layout-toggle-fullscreen)))
+     (start-process-shell-command "mpc" nil "mpc toggle")))
 
   (exwm-input-set-key
-   (kbd "s-w")
+   (kbd "<XF86AudioPrev>")
    (lambda ()
      (interactive)
-     (kill-buffer (current-buffer))))
+     (start-process-shell-command "mpc" nil "mpc prev")))
 
   (exwm-input-set-key
-   (kbd "s-q")
+   (kbd "<XF86AudioNext>")
    (lambda ()
      (interactive)
-     (exwm-manage--kill-client))))
+     (start-process-shell-command "mpc" nil "mpc next")))
+
+  ;; Shorten 'C-c C-q' to 'C-q'
+  (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key)
+
+  ;; 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])
+      ;; 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])
+      ;; search
+      ([?\C-s] . [?\C-f])
+      ;; escape
+      ([?\C-g] . [escape])))
+
+  ;; Enable EXWM
+  (exwm-enable)
+
+  (add-hook 'exwm-init-hook #'exwm-config--fix/ido-buffer-window-other-frame)
+
+  (require 'exwm-systemtray)
+  (exwm-systemtray-enable)
+
+  (require 'exwm-randr)
+  (exwm-randr-enable))
 
 ;; use the org-plus-contrib package to get the whole deal
 (use-package org-plus-contrib)
@@ -1084,10 +1068,11 @@ This function is intended for use with `ivy-ignore-buffers'."
        (or
         (name . "^\\*scratch\\*$")
         (name . "^\\*Messages\\*$")))
+      ("exwm" (mode . exwm-mode))
       ("erc" (mode . erc-mode)))))
   (ibuffer-formats
    '((mark modified read-only locked " "
-           (name 18 18 :left :elide)
+           (name 72 72 :left :elide)
            " "
            (size-h 9 -1 :right)
            " "
@@ -1332,7 +1317,6 @@ This function is intended for use with `ivy-ignore-buffers'."
 (use-feature elisp-mode
   :delight (emacs-lisp-mode "Elisp" :major))
 
-
 (use-package alloy-mode
   :straight (:host github :repo "dwwmmn/alloy-mode")
   :mode "\\.als\\'"