;;; -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: ;;;; defaults (menu-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1) ;; no fringe (fringe-mode '(0 . 0)) ;; movement (keymap-global-unset "C-x o") (keymap-global-set "H-n" 'other-window) (keymap-global-set "H-p" (lambda () (interactive) (other-window -1))) (repeat-mode 1) ;; dedication (defun toggle-current-window-dedication () "Adds or revokes dedicated window status from a buffer. A dedicated buffer will never be automatically orphaned." (interactive) (let* ((window (selected-window)) (dedicated (window-dedicated-p window))) (set-window-dedicated-p window (not dedicated)) (message "Window %sdedicated to %s" (if dedicated "no longer " "") (buffer-name)))) ;; reading mode (defun split-and-follow () (interactive) (delete-other-windows) (split-window-horizontally) (split-window-horizontally) (balance-windows) (other-window -1) (follow-mode 1)) ;; alpha (defun bd/clamp (lower-bound upper-bound value) (max lower-bound (min value upper-bound))) (defun set-frame-alpha (value) "Sets the transparency of the frame background. 0=transparent/100=opaque Due to a bug with guix-packaged emacs, only uses true-transparency on wayland." (interactive "nTransparency Value (30 - 100 opaque): ") (setq value (bd/clamp 30 100 value)) (if (equal display "wayland") (set-frame-parameter (selected-frame) 'alpha-background value) (set-frame-parameter (selected-frame) 'alpha `(,value . ,value))) (message "Alpha set to %d" value)) (if (equal display "wayland") (add-to-list 'default-frame-alist '(alpha-background . 66)) (add-to-list 'default-frame-alist '(alpha . (82 . 82)))) (require 'project) ;;;; popper (use-package popper :demand t :bind (("C-`" . 'popper-toggle-latest) ("M-`" . 'popper-cycle) ("C-M-`" . popper-toggle-type)) :config (popper-mode) (popper-echo-mode) :custom (popper-reference-buffers '( ;; native ("\\*Async Shell Command\\*.*" . hide) compilation-mode completion-list-mode messages-buffer-mode occur-mode ("Output\\*$" . hide) ;; info help-mode Info-mode "^\\*slime-description.*\\*$" ;; repls geiser-repl-mode slime-repl-mode ;; shells "^\\*eshell.*\\*$" eshell-mode "^\\*shell.*\\*$" shell-mode "^\\*term.*\\*$" term-mode ;; magit magit-diff-mode magit-status-mode ;; emms emms-playlist-mode )) (popper-display-control 'nil) (popper-mode-line nil) (popper-group-function #'popper-group-by-project)) ;;;; shackle (use-package shackle :demand t :config (shackle-mode) :custom (shackle-rules '( ;; native (compilation-mode :select nil :align bottom :size 0.2) (completion-list-mode :select nil :align bottom :size 0.1) ;; info (help-mode :noselect t :align left :size 0.3) (Info-mode :select t :align left :size 0.4) ("^\\*slime-description.*\\*$" :regexp t :select t :align left) ;; repls (geiser-repl-mode :select t :align right) (slime-repl-mode :select t :align right) ;; shells (".*eshell.*\\*$" :regexp t :select t :align above :size 0.3) (".*shell.*\\*$" :regexp t :select t :align above :size 0.3) ("^\\*term.*\\*$" :regexp t :select t :align above :size 0.3) ;; magit (magit-status-mode :select t :align bottom :size 0.3) (magit-diff-mode :select nil :align right :size 0.3) ;; emms (emms-playlist-mode :select t :align left :size 0.2) )) (shackle-default-rule '(:select t))) (provide 'bd--windows) ;;; bd-windows ends here