Have you tried static tiling window managers? For some reason
those are much less popular even though I find them more
pratical.
Where dynamic WMs constantly rearrange all the windows with
every change according to some fixed layout, the static ones
work basically like Vim's windows and buffers. Meaning windows
are stacked above each other by default with only the first one
showing, but with some shortcuts you can split horizontally or
vertically and change all split dimensions.
I have used many tiling window managers and over time I
gravitated away from all the dynamic WMs because they're just
not flexible enough for the real world. They tend to work on the
assumption that the user needs all windows on the screen all the
time, and this does not make sense in many scenarios.
The only "workspaces" which behave correctly to solve this are
DWM's tags, but in practice I find it much more cumbersome to
pin windows to multiple tags than just flip through the windows,
or as I often prefer, switching to a window based on
fuzzy-searching its title - this has completely replaced my need
for workspaces, just like I stopped using tabs in Vim once I
figured out how to efficiently switch buffers.
Also, when I want to quickly open a terminal on dynamic WMs I
have to setup a shortcut for a floating terminal if I don't want
it to rearrange everything, while on a static WM I just open a
terminal and it'll have no effect on the layout by default.
Ironically I find static window managers to be more comfortable
to use the more dynamic my workflow and window arrangements are.
i3wm isn't as bad because it doesn't enforce a fixed layout, but
it's still more cumbersome once I want to quickly resize or swap
around some windows on the screen.
I've tried both Ratpoison and StumpWM. Both follow a similar
concept, but Ratpoison is more lightweight and minimalistic
whereas StumpWM has a lot more features and is excellent with
handling multiple screens(it treats all screens as separate
splits of the same workspace, so it's easy to move around
windows).
Where dynamic WMs constantly rearrange all the windows with every change according to some fixed layout, the static ones work basically like Vim's windows and buffers. Meaning windows are stacked above each other by default with only the first one showing, but with some shortcuts you can split horizontally or vertically and change all split dimensions.
I have used many tiling window managers and over time I gravitated away from all the dynamic WMs because they're just not flexible enough for the real world. They tend to work on the assumption that the user needs all windows on the screen all the time, and this does not make sense in many scenarios.