Hi Phil,
Short answer - I don't know!
I was doing (more or less) this a few months ago and never got
anything I "liked".
On Windows and MacOS ISTR that doing the "show()" mostly worked the
way I wanted, but on *nix I struggled more. It seems like different WM
do different things and I never really got something that Just Worked.
Worse, when I did (briefly) think I had something that worked, I found
it did not work under Wayland - at which point I wandered off to poke
at something else.
Sorry...