[fdo] getting a program between the user and X windows

Joe Corneli jcorneli at math.utexas.edu
Sat Aug 7 10:43:27 PDT 2004

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.

More information about the freedesktop mailing list