aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2025-09-07 16:57:31 -0400
committerBardofSprites <[email protected]>2025-09-07 16:57:31 -0400
commit4dc37c750bd2de0c83e12a90f028bca3929afce4 (patch)
treefd69c3257dfff850d848a3980e3e816b97c51a4d
parentf8ee1ceaf39dd6235b7294575c60608ed74602f2 (diff)
frame settings and popup term
-rw-r--r--bard-elisp/bard-window.el11
-rw-r--r--bard-emacs-modules/bard-emacs-window.el65
-rw-r--r--early-init.el2
3 files changed, 78 insertions, 0 deletions
diff --git a/bard-elisp/bard-window.el b/bard-elisp/bard-window.el
index 8f7cbd5..de84cb5 100644
--- a/bard-elisp/bard-window.el
+++ b/bard-elisp/bard-window.el
@@ -63,6 +63,17 @@ This as the action function in a `display-buffer-alist' entry."
(when (apply fn args)
(throw 'success fn))))))
+;; from protesilaos prot-shell library
+(defun prot-window-shell-or-term-p (buffer &rest _)
+ "Check if BUFFER is a shell or terminal.
+This is a predicate function for `buffer-match-p', intended for
+use in `display-buffer-alist'."
+ (when (string-match-p "\\*.*\\(e?shell\\|v?term\\|terminal\\).*" (buffer-name (get-buffer buffer)))
+ (with-current-buffer buffer
+ ;; REVIEW 2022-07-14: Is this robust?
+ (and (not (derived-mode-p 'message-mode 'text-mode))
+ (derived-mode-p 'eshell-mode 'shell-mode 'term-mode 'comint-mode 'fundamental-mode)))))
+
;; taken from https://github.com/hylophile/.files/blob/1f3f01e4e25b00f7b61eca286fcf4f865885090c/.config/doom/config.org#fancy-tab-bar
(defun hy/tab-bar-format-align-center ()
diff --git a/bard-emacs-modules/bard-emacs-window.el b/bard-emacs-modules/bard-emacs-window.el
index 0b47deb..4d6a8ed 100644
--- a/bard-emacs-modules/bard-emacs-window.el
+++ b/bard-emacs-modules/bard-emacs-window.el
@@ -50,6 +50,11 @@
(window-height . 0.3)
(dedicated . t)
(preserve-size . (t . t)))
+ ;; terminal popups
+ (prot-window-shell-or-term-p
+ (display-buffer-reuse-mode-window display-buffer-at-bottom)
+ (mode . (shell-mode eshell-mode comint-mode))
+ (body-function . prot-window-select-fit-size))
("\\magit: .*"
(display-buffer-same-window)
(inhibit-same-window . nil)
@@ -141,5 +146,65 @@
:bind
("C-x w w" . bard/toggle-window-split))
+(use-package beframe
+ :ensure t
+ :config
+ (setq beframe-functions-in-frames '(project-prompt-project-dir
+ notmuch))
+ (setq beframe-create-frame-scratch-buffer nil)
+ (setq beframe-global-buffers '("*scratch*" "*Messages*" "*Backtrace*"))
+ (beframe-mode 1)
+
+ (define-key global-map (kbd "C-x f") #'other-frame-prefix)
+ (define-key global-map (kbd "C-c b") beframe-prefix-map)
+ (define-key global-map (kbd "C-x C-b") #'beframe-buffer-menu)
+ (define-key global-map (kbd "C-x B") #'select-frame-by-name)
+
+ ;; Consult integration
+ (defvar consult-buffer-sources)
+ (declare-function consult--buffer-state "consult")
+
+ (with-eval-after-load 'consult
+ (defface beframe-buffer
+ '((t :inherit font-lock-string-face))
+ "Face for `consult' framed buffers.")
+
+ (defun my-beframe-buffer-names-sorted (&optional frame)
+ "Return the list of buffers from `beframe-buffer-names' sorted by visibility.
+ With optional argument FRAME, return the list of buffers of FRAME."
+ (beframe-buffer-names frame :sort #'beframe-buffer-sort-visibility))
+
+ (defvar beframe-consult-source
+ `( :name "Frame-specific buffers (current frame)"
+ :narrow ?F
+ :category buffer
+ :face beframe-buffer
+ :history beframe-history
+ :items ,#'my-beframe-buffer-names-sorted
+ :action ,#'switch-to-buffer
+ :state ,#'consult--buffer-state))
+
+ (add-to-list 'consult-buffer-sources 'beframe-consult-source)))
+
+(defun bard/academic-frame ()
+ "Create a new academic frame with key folders opened and beframed."
+ (interactive)
+ (let ((frame (make-frame)))
+ (select-frame-set-input-focus frame)
+ ;; Set frame title explicitly
+ (modify-frame-parameters frame '((name . "Academic")))
+
+ (dired "~/Documents/Uni")
+ (goto-char (point-min))
+ (split-window-right)
+
+ (bard/default-agenda)
+ (split-root-window-below)
+
+ (dired "~/Notes/denote")
+ (goto-char (point-min))))
+
+(global-set-key (kbd "<f2>") #'bard/academic-frame)
+
(provide 'bard-emacs-window)
;;; bard-emacs-window.el ends here
diff --git a/early-init.el b/early-init.el
index 73dcb2c..1d88f82 100644
--- a/early-init.el
+++ b/early-init.el
@@ -13,6 +13,8 @@
(setq mode-line-misc-info
(delete (assoc 'minor-mode-alist mode-line-misc-info) mode-line-misc-info))
+(add-hook 'after-init-hook (lambda () (set-frame-name "home")))
+
;; Modes
(scroll-bar-mode -1)
(tool-bar-mode -1)