From 4dc37c750bd2de0c83e12a90f028bca3929afce4 Mon Sep 17 00:00:00 2001 From: BardofSprites <89086143+BardofSprites@users.noreply.github.com> Date: Sun, 7 Sep 2025 16:57:31 -0400 Subject: frame settings and popup term --- bard-elisp/bard-window.el | 11 ++++++ bard-emacs-modules/bard-emacs-window.el | 65 +++++++++++++++++++++++++++++++++ early-init.el | 2 + 3 files changed, 78 insertions(+) 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 "") #'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) -- cgit v1.2.3