How do you manage window layouts for different programming languages and projects? Especially plugin windows?

I want to have different window layouts for each language and project directory if I want to, I have a bunch of tabs open about that but I’m wondering how to manage sessions. I want plugin windows open like Neotree and Outline.nvim but they don’t automatically get restored properly with sessions when I use the auto-session plugin. At least not without pre and or post session-restore commands in the plugin config, but I don’t want to add and run one for every single plugin.

Do you have a setup like I’m describing? How do you manage plugin windows with session projects workspaces etc.?