Gestire la visualizzazione dei buffer

Ho trovato molto interessante, come al solito, il video di Prot che mostra come gestire la posizione e la visualizzazione dei buffer, il tutto senza l’ausilio di pacchetti aggiuntivi, di seguito il video

Ye, visto il video, molto bello.

Per adesso io utilizzo la seguente config

(setq display-buffer-alist
      '(;; no window
	("*Pwndoc Export*"
	 (display-buffer-no-window)
	 (allow-no-window . t)
	 )
	("*Async Shell Command*"
	 (display-buffer-no-window)
	 (allow-no-window . t)
	 )
	("*commands-history*"
	 (display-buffer-no-window)
	 (allow-no-window . t)
	 )
	))

Molto minimale. Nello specifico odio quando Emacs fa spawnare delle finestre così a cavolo.

Nel caso di EXWM ci sono poi altre cose che possono essere fattte. Nello specifico ci sono un paio di hook interessanti.

  (add-hook 'exwm-update-title-hook #'my/exwm-update-title)
  (add-hook 'exwm-manage-finish-hook #'my/configure-window-by-class)

Questo per cambiare il titolo di un buffer. Tipo qui di default avrei “burp-StartBurp” e io lo cambio con “burp”.

(defun my/exwm-update-title ()
  (interactive)
  (pcase exwm-class-name      
    ("burp-StartBurp"
     (exwm-workspace-rename-buffer "burp"))   
    ))

E questo per rendere una particolare window floating. Il pcase fa un conditional match sulla classe della finestra, che sarebbe il nome del buffer in EXWM.

(defun my/configure-window-by-class ()
  (interactive)
  (pcase exwm-class-name
    ("Emacs"
     (exwm-floating-toggle-floating)
     (exwm-layout-toggle-mode-line)
     (call-interactively #'exwm-input-release-keyboard)
     )
    ))

Per altri riferimenti consiglio il video di System Crafter

https://systemcrafters.net/emacs-desktop-environment/optimizing-window-placement/

1 Like

Io l’ho trovata molto comoda riguardo vterm, anzichè aprirlo in un nuovo buffer di default, mi trovo molto bene sopratutto per azioni veloci ad aprirlo in basso:

(defun my-display-buffer-below-and-focus (buffer alist)
  "Display BUFFER below selected and give it focus."
  (let ((window (display-buffer-below-selected buffer alist)))
    (select-window window)
    window))

(use-package window
  :config
  (setq display-buffer-alist
	`(("\\`\\*\\(Completions\\|vterm\\|eshell\\)\\*\\'"
	   my-display-buffer-below-and-focus
	   (window-height . 25)))))

Come combinazione uso C-z RET, ho trovato utile rimappare la funzione suspend-frame poichè in exwm non si può utilizzare

Voglio troppo provare anche io EXWM, anche io il vterm lo voglio in basso e senza riaprire una nuova finestra/buffer

1 Like

È davvero una bella esperienza, è quel qualcosa in più che cominci a sentir mancare quando utilizzi emacs sempre di più. La mia configurazione di EXWM è ancora molto ridotta mi sono limitato ad impostare i keybindings che in genere di I3 e di stumpwm di default

1 Like