What the API should look like? Which features? I was thinking of something like this:
* term_ function prefix * first parameter is the term context * non blocking io (ie. returns when there's nothing to process) * use a dirty flag on glyph (or even on lines) to speed up drawing * scrollback buffer, by popular demand /* usage example */ term_t* t = term_new(width, height, "/bin/sh"); while(1) { /* non blocking behaviour */ flag = term_update(t); /* content of the screen changed */ if(flag & DIRTY) draw_update(t); /* bell received */ if(flag & BELL) beep(); /* title changed */ if(flag & TITLE) set_title(t->title); /* cursor moved (we have to remove the old one and draw the new one) */ if(flag & CURSOR) redraw_cursor(); /* shell exited */ if(flag & DEAD) die("argh"); if(key_pressed()) term_write(t, key); if(window_resize()) term_resize(t, new_width, new_height) /* ... */ } Do selection-type actions have their place in the lib? Is the selection per terminal? If I select a chunk of text before the screen scrolls, do I keep the selected text and scroll the selection with it, or do I keep the selection position and update the selection buffer?