(require 'exwm) ;; Hide minibuffer (setq exwm-workspace-minibuffer-position 'bottom) (setq exwm-workspace-display-echo-area-timeout 5) ;; Based on the default config ;; Set the initial workspace number. (unless (get 'exwm-workspace-number 'saved-value) (setq exwm-workspace-number 4)) ;; Make class name the buffer name (add-hook 'exwm-update-class-hook (lambda () (exwm-workspace-rename-buffer exwm-class-name))) ;; Global keybindings. (unless (get 'exwm-input-global-keys 'saved-value) (setq exwm-input-global-keys `( ;; 's-r': Reset (to line-mode). ([?\s-r] . exwm-reset) ;; 's-w': Switch workspace. ([?\s-w] . exwm-workspace-switch) ;; 's-&': Launch application. ([?\s-&] . (lambda (command) (interactive (list (read-shell-command "$ "))) (start-process-shell-command command nil command))) ;; 's-N': Switch to certain workspace. ,@(mapcar (lambda (i) `(,(kbd (format "s-%d" i)) . (lambda () (interactive) (exwm-workspace-switch-create ,i)))) (number-sequence 0 9))))) ;; Line-editing shortcuts (unless (get 'exwm-input-simulation-keys 'saved-value) (setq exwm-input-simulation-keys '(([?\C-b] . [left]) ([?\C-f] . [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])))) ;; Enable EXWM (exwm-enable)