I am interested in the idea of having the user's input filtered by a separate program before it gets sent on to X windows. The specific idea I am interested would be to have a copy of Emacs that can (a) interpret user input using macros; (b) see all of the relevant data being displayed by client windows. For lack of a better word, I'll call this Emacs process a "super-client". Some use-cases. For (a): The user might have macros set up to navigate between windows and groups using some simple keystrokes. This is something that can already be done with GNOME of course, so there is some precident. But there could be more complicated macros, for example, one could write a macro that would change the text size of various programs on the fly using the same user-accessible bindings (e.g. S-KP_plus and S-KP_minus) but different implementations for the different clients that would be modified. This is, arguably, sort of ugly, but it is less ugly than the current situation in which the user must remember and execute the various elaborate manipulations to change text size in different programs. For (b): I would like to be able to search across all open windows from all clients for some string that interests me and get an "M-x occur"-like Emacs buffer showing the appearances. This would enable be to jump directly to the preferred spot in the preferred window where I can select the text I'm interested with usual Emacs keyboard commands and copy it to some other window. (I'm assuming that if my Emacs super-client can "see" the relevant data in client windows, it can also edit this data in a read-only mode.) The problem of making the interfaces of each client program transparent to the super-client is presumably somewhat difficult to do in full, but different parts of the interface are already transparent for many programs. For instance, any client that accepts keyboard commands has a simple "API". Making full text available for read-only editing would probably require new code in each client. I'll let you come to your own conclusions about whether this is worth it or not. What I'm really interested in would be some technical feedback on the feasibility of doing getting something like this working for some programs. (Of course, Emacs is the easiest one, so let's take rxvt or something like that as the next easiest case and consider that.) I'm not familiar with the code, but it seems like the RECORD and XTest extensions are relevant, as is the XFIXES extension under current development. Feedback from people who know these extensions well would be very valuable.