summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--windows.el
blob: 282ca14cf715374e73a4fe13e413e35951cd044e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:


;;;; defaults
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)

;; no fringe
(fringe-mode '(0 . 0))


;; 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))))


;;;; 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