Proposing the StatusNotifier specification

Aaron J. Seigo aseigo at
Tue Jan 19 10:44:04 PST 2010

On January 19, 2010, Giles Atkinson wrote:
> > 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.
> Yes, I do and it is not an isolated case, but an example of a reasonable
> class of applications: those that present foreign windows from another
> environment and wish to integrate them as smoothly as possible with the
> local environment.  This class potentially includes remote graphics
> applications, VM hypervisors and emulators such as WINE.  (At the edge of
> it are straightforward applications using X remote display, whose use of
> the replacement notification interface is blocked by the sole use of
> D-bus.)

if this information is not known, then i'd suggest tagging them as 
ApplicationStatus since that's the best that can be done.

as an implementation note, the Plasma widget that provides the system tray for 
plasma-desktop and plasma-netbook treats all xembed icons as 
"ApplicationStatus" since we can't introspect any additional information out 
of them.

so in the case of "no information available", we default to 

> Applications in this class only have the information about their
> notification items that they get through the underlying foreign
> interfaces, and that is very unlikely to include anything that
> approximates the four categories. 

is there information in these systems that offers a categorization? if so, 
then we can work on harmonizing our categorizations with common practice 
elsewhere. if there is no category information, then i suggest using 
ApplicationStatus as a default fallback.

> That could be interpreted as meaning
> they are barred from this interface, 

that would be an incorrect interpretation. would it help if the entry for 
ApplicationStatus was extended from:

"ApplicationStatus: The item describes the status of a generic application, 
for instance the current state of a media player."

to something like:

"ApplicationStatus: The item describes the status of a generic application, 
for instance the current state of a media player. In the case where the 
category of the item can not be known, such as when the item is being proxied 
from another incompatible or emulated system, ApplicationStatus can be used a 
sensible default fallback."


> but in practice the application developers will simply make them lie.  

if you can describe some use cases in which the developer will make the item 
lie (e.g. "this is supposed to be a $FOO system tray entry on Windows, and 
when run through $COMPATIBILITY_LAYER it will likely end up appearing as $BAR 
instead") then we can work on this.

> On the subject of backward-compatibility you also wrote:
> ... 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
> That is all very well, and what anyone might want to hear, but it is not
> what is in the specification. 

the specification does not require all visualizations to also support the 
xembed system. that is because not all visualizations will be system trays and 
the spec is not about the xembed system but a different system that provides 
far greater capability than the xembed system which sits aside the xembed 

i really do hope that we can phase out the xembed system in our own 
applications. whether we can do so for things like apps running through WINE 
is not a given; i think it's obvious that apps using the xembed system will be 
with us for many years to come. as such, it's only reasonable to expect that 
people who write system trays will include xembed support as well. it is not, 
however, in the scope of this specification to mandate how system tray wigets 
are written. the scope is to define how a visualization, which a system tray 
is one possible kind of, can work with applications using this d-bus based 

> As I have already mentioned, the
> specification is completely silent on compatibility with older clients,
> implying it is not an issue.  The addition of a single sentence would fix
> that.

if you could offer an example of the sentence you have in mind, that would be 

> It is also silent on the motivation for the design (which still looks weak
> to me) and the semantics of the operations parameters, as Matthias has
> pointed out in another thread.

the semantics of the operations as realized in a given visualization are not 
overly specified to purposefully allow for flexibility in the visualization. 
yes, there is an assumption here that those writing those visualizations 
aren't idiots and are able to do their job with a bare minimum of competency. 
i hope that isn't too much to ask.

as for the motivation of the design, i agree that it is not obvious (as 
evidenced by these discussions). we will add a bit about the motivation for 
the design somewhere, perhaps as an apendix?, to the spec. i'm not a fan of 
such text as part of formal documentation, but if it helps it helps and it 
should go in.

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