I propose the following [brief/ main steps of a] concrete solution for changing the color of a hidden tab whose process gave output in the meantime:
1. Every tab has a unique ID that can be read and not modified. This ID is dubbed by the system at the creation of the tab.
1' Every tab has an internal state. The tab can be seen as a dispather of messages (or actor) of scheme.
2. When the tab is created , it starts the process, and memorize the process in its internal state.
3. we use the hooks from process , low level programming.
4. we add a hook that calls a function like tabs-process-signals. This is either a function of the internal state of a tab, and in case must be generated for each tab, using the ID of a tab, or be in global environment, and loop over each tab.
5. this function (tabs--process-signals) either is generated separately for each tab, or loops over the list of tabs, and identify the tab whose process' buffer modified.
6. for that tab, tabs--process-signals calls a function like change-color-tab, or make a noise, or force the commutation of the tab, in order to see that a process gave an output/ that somebody wrote on an IRC channel, etc.
Essential of this is that a tab must have its own internal state.
These are the main steps that pass in my mind now.
If emacs had actors, a tab could be implemented directly. If not, the idea of internal state can be encoded somehow.
I am waiting for your ideas, please, and better solutions.
I am looking forward to find a mechanism for a interface of tabs, common for console/gtk/athena/etc.