I just read Mickey’s wonderful article on window management, and has given me the push I need to take control over my emacs windows/frames. I have an idea of what I will configure; maximum of two windows per frame, and if is my portrait frame split horizontally and split vertically for my landscape frame, plus some additional config for Magit. Before I take the plunge, I wanted to quickly reach out to see what other people have done for their configs to get some ideas. Figure might also be good to collect a few different configurations of window configs for people interested.
Some configs I have found on the way and will update with any suggestions people have:
- Karthink’s config, good integration with the popper package
- emacs-pure - has some display-buffer-alist settings for magit which are of interest to me, as the built in magit methods for handling new frames isn’t exactly what I want.
Any recommendations, please feel free to share them.
(add-to-list 'display-buffer-alist '("\\*sly-mrepl" (display-buffer-at-bottom) (window-height . 12))) (add-to-list 'display-buffer-alist '("\\*Calendar*" (display-buffer-at-bottom))) (add-to-list 'display-buffer-alist '("\\*shell:" (display-buffer-below-selected) (window-height . 12))) (add-to-list 'display-buffer-alist '("\\magit:" (display-buffer-same-window))) (add-to-list 'display-buffer-alist '("\\*Man" (display-buffer-same-window))) (add-to-list 'display-buffer-alist '("\\*Help" (display-buffer-same-window))) (add-to-list 'display-buffer-alist '("\\*helpful" (display-buffer-same-window)))
(add-to-list 'display-buffer-alist '("\\*e?shell\\*" (display-buffer-in-side-window) (side . bottom) (slot . -1) ;; -1 == L 0 == Mid 1 == R (window-height . 0.33) ;; take 2/3 on bottom left (window-parameters (no-delete-other-windows . nil)))) (add-to-list 'display-buffer-alist '("\\*\\(Backtrace\\|Compile-log\\|Messages\\|Warnings\\)\\*" (display-buffer-in-side-window) (side . bottom) (slot . 0) (window-height . 0.33) (window-parameters (no-delete-other-windows . nil)))) (add-to-list 'display-buffer-alist '("\\*\\([Hh]elp\\|Command History\\|command-log\\)\\*" (display-buffer-in-side-window) (side . right) (slot . 0) (window-width . 80) (window-parameters (no-delete-other-windows . nil)))) (add-to-list 'display-buffer-alist '("\\*TeX errors\\*" (display-buffer-in-side-window) (side . bottom) (slot . 3) (window-height . shrink-window-if-larger-than-buffer) (dedicated . t))) (add-to-list 'display-buffer-alist '("\\*TeX Help\\*" (display-buffer-in-side-window) (side . bottom) (slot . 4) (window-height . shrink-window-if-larger-than-buffer) (dedicated . t)))
I wanted to make the window management as simple as possible and created this package - https://github.com/FrostyX/current-window-only . Not everybody will like it but that’s okay.
Mine is just the default
nil
. I don’t use any of the packages. But I prefer magit to be fullscreen and to restore back to where I was on quit:(setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-topleft-v1) (setq magit-bury-buffer-function 'magit-restore-window-configuration)
I tried Magit full-screen but It wasnt restoring my previous windows. I didn’t know about the bury buffer function so this helps me out a lot. Thanks!
I never took care of setting this aspect of emacs properly. Thanks a ton