You might as well use the same disto twice if that's what you have at hand and are comfortable with, I guess. There is always something to glean by contrasting two similar but different things (eg, programming languagues), the question is how much difference you are willing to deal with. Just make sure you can boot into both of them, and mount one from the other. Eventually you may want to look at chroot, which will allow you to mount the other filesystem and run commands inside that from it's own tree.
I forgot to mention before that you can easily pthread gtk's main loop (ie., "gtk_init" does not actually have to be in main(). I say "easily" because that is the only thing I have used pthreads for and it required about four lines of code, eg.
Code:
in main:
pthread_t gtk;
if (pthread_create(>k,NULL,gtkloop,(void*)titles[0])) puts("ERROR");
pthread_detach(gtk);
then somewhere:
void *gtkloop (void *title) {
GtkWidget *window, *frame[2], *vbox[2], *hbox[1], *info, *slide[4], *speed, *follow;
printf("gtkloop()...\n");
gtk_init(NULL,NULL);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
...etc.
which might be a possibility if you want a CLI that uses an extiguishable gtk process, and you have already used pthreads. In truth tho, I have not done this much, so there may be complications I have yet to face.
I was also just glancing back at your last thread. Admittedly, it is not clear to me what you're doing and I'm only posing as a guru, but
Code:
if(o != (struct outline *)NULL)
o->free(o);
You do realize that you don't need to free things at the very end of a program, right? The OS cleans up everything when the execution is finished (free is for preventing leaks while the program is still running).