;;; -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: (require 'transient) (setopt switch-to-buffer-obey-display-actions t switch-to-buffer-in-dedicated-window 'pop) ;; C-u C-h a ^display-buffer-[^-] (add-to-list 'display-buffer-alist '("^\\*Async Shell Command\\*.*$" (display-buffer-no-window))) (defun bd/layout--do-with-haste (f) (let* ((args (transient-args 'bd/layout-dispatcher)) (haste (if (member "haste" args) 3 1))) (funcall f haste))) (transient-define-prefix bd/layout-dispatcher () ["Dispatcher > Layout\n" ["Infixes" ("s" "haste" "haste")]] [["Commands" ("-" "text decrease" (lambda () (interactive) (bd/layout--do-with-haste #'text-scale-decrease)) :transient t) ("=" "text increase" (lambda () (interactive) (bd/layout--do-with-haste #'text-scale-increase)) :transient t) ("b" "narrow" (lambda () (interactive) (bd/layout--do-with-haste #'shrink-window-horizontally)) :transient t) ("f" "widen" (lambda () (interactive) (bd/layout--do-with-haste #'enlarge-window-horizontally)) :transient t) ("p" "shrink" (lambda () (interactive) (bd/layout--do-with-haste #'shrink-window)) :transient t) ("n" "enlarge" (lambda () (interactive) (bd/layout--do-with-haste #'enlarge-window)) :transient t) ("|" "balance" balance-windows)] ["" ("N" "shift down" windmove-swap-states-down :transient t) ("P" "shift up" windmove-swap-states-up :transient t) ("F" "shift right" windmove-swap-states-right :transient t) ("B" "shift left" windmove-swap-states-left :transient t)] ["" ("a" "alpha" bd/set-frame-alpha) ("w" "wallpaper" bd/set-bg) ("t" "theme" modus-themes-select)]]) (keymap-global-set "C-c w" #'bd/layout-dispatcher) (provide 'bd--window) ;;; bd--window.el ends here