Well, it would also b useful to select them from a menu within WinBoard. So I stared working on that already, in a side branch of the development version not stored on-line, by making the startup dialog accessible at any time through the main menu. I just added an item 'New Engine' to the file menu, and that way I did not have to make new menu dialogs.
I encountered the following problems: the startup dialog does not only to select engines, but also ICS, or zippy mode. In fact, by selecting a new engine line from the combobox, the new engine name can be accompanied by any other set of WB command-line options. This was done because you almost certainly will need to specify a new engine directory, but also if the engine is UCI, if it has an own book, if it should get time odds, etc. This is normally all stored on the engine line in the first/secondProgramNames. But you could bury any option there, including those that switch on ICS play, or zippy mode. You could do that even when I would take out or disable the ICS radio-button in the startup dialog.
The only thing I want to allow, really, is to change one engine for another, or to no engine. So if you are connected to an ICS you should be able to go from zippy mode to plain ICS mode, or from game-viewer mode to engine mode, and vice versa. It should not be able to alter the ICS connection status.
Changing the engine requires a part of the initialization to be redone. So I must first split out the various initialization routines into a part done for the engines (which needs to be redone) and a part for other things (such as ICS), which should not be redone. I already started working on that. Best would be to make the engine-related part into a general engine-only initialiation routine, that would be able to handle each engine. (So that settings for the second engine will not be changed just because you loaded another first engine.)
Once all this groundwork will be finished, I want there to be a single option -programNames that would contan a list of engines to be used both for the first and the second engine combo-box. It is a bit ridiculous that these are different; the onl reason for this peculiar design seems to be that the second engine needed /sd=..., where the first needs /fd=... But s should not be that difficult to do such replacement automatically before you process the line.
When all that works in WinBoard, I would be ready to also make a dialog callable by an XBoard menu File -> New Engine, that would present you the same combo-boxes as are now in the WinBoard startup dialog. And both in WB and XB I would then want to add a few buttons and checkboxes to that menu that allow you to delete engines from the combo-box list (removing them from the /programNames string, and thus from the ini file), or add the one you typed to that menu. Perhas there should also be Up and Down buttons to move the selected one around. I guess to do away with the combo boxes, and make the dialog similar to what the Options -> Game List dialog we have now, with the difference that you should be ae to add lines yourself.