Proposing the StatusNotifier specification
Aaron J. Seigo
aseigo at kde.org
Wed Jan 6 13:24:58 PST 2010
On January 6, 2010, Giles Atkinson wrote:
> Thank you for your comments on those of mine. I agree that most of your
> remarks on item 1 make sense, but can not agree with "... Xembed seems
> pretty slow ...", as in this case it comes down to little more than
> reparenting a window.
it's not the reparenting of the window. it's getting the selection, finding
the windows, ensuring the visuals are right, etc. it all adds up and for us
got to the point where a typical system tray was taking longer to populate
than it took the rest of the desktop shell to get up and running. "fast
enough" was no longer, well, fast enough.
> And I was not clear what windows you are talking
> about here: "... and forcing argb visuals on those windows seems to cause
> several problems both in terms of graphic corruption or stability of the
> apps".
here's the concrete use case: plasma-desktop uses an argb visual. most other
apps out there on x11 don't right now. fair enough. but they like to put icons
in the tray. so we reparent that xwindow and now have N windows with different
visuals. in the past, this wasn't a problem because nobody was doing anything
particularly interesting on x11 and just used the standard vanilla visual that
the server offered by default. well, when we started using an argb visual in
plasma-desktop (2+ years ago now) we found that there were all kinds of
glitches and bugs, including crashes, in the client libraries. we ended up
having to work around various Gtk+ crashes and Qt ended up fixing some bugs in
their code as well. in fact, we ended up including a new xatom (iirc?) to get
it work reasonably well and patching Gtk+ and Qt for that (upstream). it's a
mess. when you compare it with "here's the information on the bus, render it
as you wish" there's no competition.
> For item 2, my concern is that there is no generic, or catch-all category,
> so that potential clients that do not fit in one of the four listed
> categories are excluded.
do you have concrete examples? every app we looked at that puts an icon in the
tray (and there are dozens) fits into one of the existing categories; in fact,
that's how we came up with them.
i don't think there is much to be gained by having too many categories. it
only opens the door for app developers to abuse the sytem tray area and makes
management of it (from a user's pov) more complex.
> I assume that one purpose of the categories is
> to allow users some control of which clients are actually displayed. Such
> filtering should be under user control, not inherent in the specification
> of the notification mechanism.
with categorization, then the host can decide to show only items of a certain
type (think: messaging notifiers) and the user isn't required to understand
what each icon does/is. it also encourages *cough* the developers to think
about what they are doing and not just stuff random sillyness into what is
really a pretty precious space.
> On item 3, you wrote: "... well, exactly how to do that is kinda outside
> the scope of the notification, (besides recommending to use the old way as
> fallback)". My concern here is that the specification does not recommend
> using the old way, except when an active implementation of the new
> specification is not present. (At least, that is my reading of it.) That
> means that any older clients are ignored.
it just means that if there is a host visualization, that is the preferred
mechanism. older clients aren't ignored at all (at least if the host
visualization (e.g. system tray), doesn't suck). the goal is to deprecate, and
eventually get rid of, the old and broken xembed based system. we don't want
to encourage people to use the xembed system given how badly broken it is, but
we do realize that there are many xembed implementations out there (and will
be for some time) and it is important that everything works together during
the transition to the new and improved.
so there are four combinations:
* xembed host with StatusNotifierItem -> works, because the app falls back to
xembed as there is no StatusNotifierWatcher
* xembed host with xembed app -> works, obviously :)
* StatusNotifierWatcher visualization with xembed host -> works, as long as
the visualization also provides support for xembed as well
* StatusNotifierWatch with StatusNotifierITem -> works, obviously :)
so for the next while, we have to support both protocols on both client and
host sides. eventually, once all the main systems we care to care about have
StatusNotifierWatcher support, we can drop the xembed fallback on the client
side. and at some far future point we can probably do the same on the
visualization side (though that will likely take significantly longer)
the KDE Plasma Desktop has been doing this seamlessly since the 4.3 release.
--
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA EE75 D6B7 2EB1 A7F1 DB43
KDE core developer sponsored by Qt Development Frameworks
More information about the xdg
mailing list