|
* One of the very noticeable pain points in matchbox' IM handling is high
latency of IM popping up, which can take up to half-second with complex
screen layouts. This is rooted in the fact that IM process is killed when
IM window is hidden, and started again afterwards.
* I wanted to address this on inputmanager level, transparently to actual
IM implementation, by hiding/showing IM's window by the manager. Unfortunately,
there appears to be no reliable method to figure out window IDs from process
properties (for example, _MB_CLIENT_EXEC_MAP X property, maintained by matcbox,
doesm't capture all apps started, in particular, it captures neither xkbd
nor matchbox-keyboard, GPE's term app is not caught too, while either GPE apps
are). Then, wanted to implement custom PropertyNotify-based protocol, though
there would be left issue of distinguishing IMs which support this protocol
and ones which don't. Finally, by random gerpping, I found that xkbd supports
Unix signal based visibility protocol! By receiving SIGUSR1, it hides/shows
its window. This seems like 100% win, as the default behavior for SIGUSR1
is process termination, so unsupporting clients will be just terminated as
before.
|