This package implements Evil state compatibility for EXWM applications.
Add the following snippet to your packages.el
file:
(package! exwm-evil :recipe
(:host github :repo "LemonBreezes/exwm-evil"))
Then, use the following use-package
block:
(use-package! exwm-evil
:after exwm
:config
(add-hook 'exwm-manage-finish-hook #'enable-exwm-evil-mode)
(cl-pushnew 'escape exwm-input-prefix-keys)
;; We will disable `C-c' in insert state.
(define-key exwm-mode-map (kbd "C-c") nil)
(map! :map exwm-mode-map
:localleader
(:prefix ("d" . "debug")
:desc "Clear debug buffer" "l" #'xcb-debug:clear
:desc "Insert mark into the debug buffer" "m" #'xcb-debug:mark
:desc "Enable debug logging" "t" #'exwm-debug)
:desc "Toggle fullscreen" "f" #'exwm-layout-toggle-fullscreen
:desc "Hide floating window" "h" #'exwm-floating-hide
:desc "Send next key" "q" #'exwm-input-send-next-key
:desc "Toggle floating" "SPC" #'exwm-floating-toggle-floating
:desc "Send escape" "e" (cmd! (exwm-evil-send-key 1 'escape))
:desc "Toggle modeline" "m" #'exwm-layout-toggle-mode-line))
Keep in mind that when using the above configuration, the escape
key no longer
gets passed to the target application. To send escape, you must type
SPC m e
in normal state.
This package was heavily inspired by EXWM Firefox Evil but is much more barebones as it currently does not provide any motion nor selection commands for applications.
Implement some basic motion commands like ~exwm-evil-core-up~Implement visual state commands