Marcus had written up workbench style widgets inside the two external
helper programs requestchoice and executecmd. This ports the code over
to libami.
Note that there isn't a generic gadget or collection of gadgets yet -
this is purely a refactor of the code, and the upcoming commit that
migrates requestchoice/executecmd over to use them just handles them
directly via xlib like they have always done.
This adds a command to iterate over the set of windows. It's not
like alt-tab in ye olde windows world where you'd alt tab once to
switch between two windows, and then keep alt-tab'ing with alt down
to go through the window list. For now it just literally iterates
through those windows.
This makes it a lot easier to work with a large number of open
windows without having to constantly use the mouse.
This is a pretty straight forward change to remove the global front
variable and instead use a couple of accessor functions.
This hopefully will make it easier to keep track and debug when
the front screen changes.
* ensure newly created windows are placed somewhere visible - ie, not
off the screen.
* ensure newly created window sizes aren't insanely large, which end up
being unable to be moved or resized in amiwm.
This has shown up with gtk apps (kicad, firefox) with their load/save
dialog. For some reason they want to be almost 2x my desktop size,
making them super hard to use.
Although it likely doesn't matter /that/ much, the x11 xlib manual
does say to use it rather than expecting the struct to stay the same
size.
Yeah yeah it's 2022 and we really do build things from source,
ICCCM is likely not going to change that much nowdays, etc, etc.