blob: 23ced37d1ece22176395ed29868660dff2af30a0 (
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
;;; -*- 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
|