emacs-config/config-exwm.org
2021-04-07 20:02:17 -05:00

3 KiB

window manipulation

  ;; The prefix
  (define-prefix-command '*window-map*)
  (define-key *root-map* (kbd "w") '*window-map*)

  ;; Side-window stuff
  (use-package resize-window)
  (require 'side-window-split)
  (define-key *window-map* (kbd "j") 'side-bottom-window)
  (define-key *window-map* (kbd "h") 'side-left-window)
  (define-key *window-map* (kbd "l") 'side-right-window)
  (define-key *window-map* (kbd "d") 'side-window-delete-all)
  (define-key *window-map* (kbd "r") 'resize-window)

  ;; Dedicated window
  (defun my/toggle-dedicated-window ()
    (interactive)
    (let ((win (selected-window)))
      (set-window-dedicated-p win (not (window-dedicated-p win)))))

exwm-background

  (add-to-list 'load-path "~/.emacs.d/submodule/exwm-background/")
  (require 'exwm-background)
  (define-key *window-map* (kbd "t") 'exwm-background/window-transparency-hydra/body)
  (setq window-system-default-frame-alist `((x . ((alpha . (,exwm-background/current-transparency . 50))))))
  (exwm-global-set-key (kbd "s-v") #'exwm-background/toggle-viewing-background)
  (exwm-global-set-key (kbd "s-b") #'exwm-background/exwm-background-window) ;; TODO: Fix keybinding
  ;; (define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessDown>") #'exwm-background/decrease-transparency)
  ;; (define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessUp>") #'exwm-background/increase-transparency)
  (define-key *window-map* (kbd "b") #'exwm-background/exwm-background-window)
  (define-key *root-map* (kbd "k") #'exwm-background/exwm-send-key-to-background)
  (define-key *root-map* (kbd "C-k") #'exwm-background/exwm-send-key-to-background-loop)

tags

  ;; Need my tags
  (require 'exwm-tag)

Don't show these buffers in buffer-list

(defvar my/exclude-buffer-modes '(helm-major-mode messages-buffer-mode special-mode))

(defun my-buffer-predicate (buf)
  (with-current-buffer buf
    (if (memq major-mode my/exclude-buffer-modes)
        nil
      (exwm-layout--other-buffer-predicate buf))))

(add-hook 'exwm-init-hook
          (lambda ()
            (interactive) 
            (modify-all-frames-parameters
             '((buffer-predicate . my-buffer-predicate)))))

switch-window

  (use-package switch-window)
  (setq switch-window-shortcut-style 'qwerty)
  (setq switch-window-qwerty-shortcuts
        '("a" "o" "e" "u" "i" "d" "h" "t" "n" "s"))

restart emacs custom

  (defun my/exwm-restart ()
    "Restart EXWM."
    (interactive)
    (exwm--log)
    (when (exwm--confirm-kill-emacs "[EXWM] Restart? " 'no-check)
      (let* ((attr (process-attributes (emacs-pid)))
             (args (cdr (assq 'args attr)))
             (ppid (cdr (assq 'ppid attr)))
             (pargs (cdr (assq 'args (process-attributes ppid)))))
        (shell-command "emacs & disown")
        (kill-emacs))))