Thanks for the suggestion of `winner-mode`! Swapping between buffer arrangements based on task (coding vs shell work, etc) always felt weird.
I solve it with having a giant editor on one monitor on one screen and a large terminal w/ tabs on the other, but that doesn't work so well if I am accessing in a headless way (e.g. remote work).
I use persp-mode (https://github.com/nex3/perspective-el), it solves nearly all my problems managing different projects, shells, code buffers, note-taking, dired, and just about everything else. The only slight wart is term.el performance, making shell output a bit slow sometimes, but I can live with it.
I solve it with having a giant editor on one monitor on one screen and a large terminal w/ tabs on the other, but that doesn't work so well if I am accessing in a headless way (e.g. remote work).