:PROPERTIES: :header-args:emacs-lisp: :comments link :results none :ID: 940c2ee1-96ef-4c91-abef-c53787ea1c05 :END: #+title: Windows and Frames #+filetags: emacs-load #+begin_src emacs-lisp (add-to-list 'default-frame-alist '(alpha-background . 80)) #+end_src Disable window changing using the mouse, it saves me from accidental switches. #+begin_src emacs-lisp (defun cv/mouse-set-point (fun event &optional promote) (let ((window (car (car (cdr event))))) (when (equal window (selected-window)) (funcall fun event promote)))) (advice-add 'mouse-set-point :around 'cv/mouse-set-point) (defun cv/mouse-drag-region (fun event) (let ((window (car (car (cdr event))))) (when (equal window (selected-window)) (funcall fun event)))) (advice-add 'mouse-drag-region :around 'cv/mouse-drag-region) (defun cv/mouse-set-region (fun event) (let ((window (car (car (cdr event))))) (when (equal window (selected-window)) (funcall fun event)))) (advice-add 'mouse-set-region :around 'cv/mouse-set-region) #+end_src #+begin_src emacs-lisp (defun maybe-delete-frame-buffer (frame) "When a dedicated FRAME is deleted, also kill its buffer. A dedicated frame contains a single window whose buffer is not displayed anywhere else." (let ((windows (window-list frame))) (when (eq 1 (length windows)) (let ((buffer (window-buffer (car windows)))) (when (eq 1 (length (get-buffer-window-list buffer nil t))) (when (frame-parameter frame 'unsplittable) (with-current-buffer buffer (when (equal major-mode #'vterm-mode) (message "VTERM") (kill-process (get-buffer-process buffer))) (kill-buffer buffer)))))))) (add-to-list 'delete-frame-functions #'maybe-delete-frame-buffer) #+end_src