diff options
Diffstat (limited to 'emacs/inits/00-exwm.el')
| -rw-r--r-- | emacs/inits/00-exwm.el | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/emacs/inits/00-exwm.el b/emacs/inits/00-exwm.el new file mode 100644 index 0000000..381f54e --- /dev/null +++ b/emacs/inits/00-exwm.el @@ -0,0 +1,153 @@ +;; Time-stamp: <2019-09-11 14:35:00 (tslil@basingstoke)> + +(defun adjust-volume (mixer adjust) + (let ((tail " | tail -n 1") + (sed (concat " | sed 's/.*\\[\\([0-9]*.\\)\\] " + "\\[.*dB\\] \\[\\(.*\\)\\]$/" + mixer + " \\1 \\2/'"))) + (shell-command + (concat + (cond ((string-equal "+" adjust) (concat "amixer set " mixer " 2%+")) + ((string-equal "-" adjust) (concat "amixer set " mixer " 2%-")) + (t (concat "amixer set " mixer " toggle"))) + tail + sed)))) + +(defun banish-rat () + (interactive) + (shell-command "xdotool mousemove 1366 768") + (message "Rat banished.")) + +(use-package exwm + :if (window-system) + :ensure t + :demand + :config + + (setq exwm-workspace-number 1 + exwm-workspace-switch-create-limit 5 + exwm-workspace-show-all-buffers nil) + + (add-hook 'exwm-update-class-hook + (lambda () + (exwm-workspace-rename-buffer exwm-class-name))) + + ;; ------------------------------------------------------------------- + ;; Global key binds + + (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-s] . [C-f]) + ;;([?\C-d] . [delete]) + ;;([?\C-k] . [S-end delete]) + )) + + ;; reset + (exwm-input-set-key (kbd "s-r") 'exwm-reset) + + ;; workspaces + (exwm-input-set-key (kbd "s-e") 'exwm-workspace-switch) + + (dotimes (i 10) + (exwm-input-set-key (kbd (format "s-%d" i)) + `(lambda () + (interactive) + (exwm-workspace-switch-create ,i)))) + + ;; buffer and window management + (exwm-input-set-key (kbd "s-<tab>") 'next-buffer) + + (defvar exwm-last-workspace-index 0) + (defun exwm-last-workspace () + (interactive) + (let ((temp exwm-workspace-current-index)) + (exwm-workspace-switch exwm-last-workspace-index) + (setq exwm-last-workspace-index temp))) + + (exwm-input-set-key (kbd "s-n") 'ivy-switch-buffer) + (exwm-input-set-key (kbd "s-o") 'switch-window) + (exwm-input-set-key (kbd "s-\\") 'exwm-last-workspace) + + (exwm-input-set-key (kbd "s-b") 'banish-rat) + + ;; run command + (exwm-input-set-key (kbd "s-c") (lambda () + (interactive) + (start-process "" nil "st"))) + (exwm-input-set-key (kbd "s-q") (lambda () + (interactive) + (start-process "" nil "firefox-esr"))) + (exwm-input-set-key (kbd "s-<f2>") (lambda () + (interactive) + (start-process "" nil "lock"))) + (exwm-input-set-key (kbd "s-p") (lambda (command) + (interactive (list (read-shell-command "$ "))) + (start-process-shell-command command nil command))) + ;; Volume + (exwm-input-set-key (kbd "s-<f10>") + (lambda () + (interactive) + (adjust-volume "Speaker" "+"))) + + (exwm-input-set-key (kbd "s-<f9>") + (lambda () + (interactive) + (adjust-volume "Speaker" "-"))) + + (exwm-input-set-key (kbd "s-<f8>") + (lambda () + (interactive) + (adjust-volume "Speaker" "toggle"))) + + (exwm-input-set-key (kbd "C-s-<f10>") + (lambda () + (interactive) + (adjust-volume "Headphone" "+"))) + + (exwm-input-set-key (kbd "C-s-<f9>") + (lambda () + (interactive) + (adjust-volume "Headphone" "-"))) + + (exwm-input-set-key (kbd "C-s-<f8>") + (lambda () + (interactive) + (adjust-volume "Headphone" "toggle"))) + + (exwm-input-set-key (kbd "s-<f7>") (lambda () + (interactive) + (shell-command "$HOME/bin/backlight_up.sh") + (message "Backlight up."))) + + (exwm-input-set-key (kbd "s-<f6>") (lambda () + (interactive) + (shell-command "$HOME/bin/backlight_down.sh") + (message "Backlight down."))) + + ;; ------------------------------------------------------------------- + ;; RandR + + (require 'exwm-randr) + (exwm-randr-enable) + + (setq exwm-randr-workspace-monitor-plist + '(1 "HDMI-1" 0 "eDP-1")) + + (exwm-enable)) + +;; ----------------------------------------------------------------------------- +;; EXWM-edit + +(use-package exwm-edit + :ensure t + :config + (add-hook 'exwm-edit-compose-hook (lambda () + (text-mode)))) |
