Re: Read this if your package includes a status notifier / system tray icon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Matthias Clasen wrote:
> Of course, you can also just stop using status icons and instead inform
> the user with notifications when something requires his immediate
> attention. That will work under any desktop.

I should also warn that while notifications (Galago spec [1]) will *work* on
most desktop environments, where "work" is defined as "display *something*",
the result is not necessarily what you expect. Implementations of the
notification spec vary widely between the desktop environments, both in
terms of features and in terms of look&feel. In particular:

1. Many features are optional:
http://www.galago-project.org/specs/notification/0.9/x408.html#command-get-capabilities
and not supported by all implementations. In particular, some
implementations (e.g. Plasma) allow action buttons/links on notifications,
others (like, AFAIK, GNOME Shell and Unity) don't. So if you rely on actions
on the notification, be warned that your program will not work properly
everywhere.

2. The implementations of persistent notifications are also very different
from desktop to desktop. They can be any of:
* The persistence flag is ignored and an arbitrary default timeout is used.
* The notification really persists until the user clicks it away.
* The notification is first shown for an arbitrary default timeout, then
"persisted" in some "minimized" form, which can also have a very different
look&feel from desktop to desktop. It can be a line with a Details button,
it can be an icon, or any arbitrary thing, really. In particular, if you
expect a persistent notification to be displayed in a similar way to a
status notifier icon (system/message tray icon), that assumption will most
likely be wrong on any non-GNOME desktop.

3. The implementations of transient (i.e. non-persistent) notifications are
also very different from desktop to desktop:
* The implementation may or may not keep a history of transient
notifications. If you're out of luck, the user missed your notification and
has no way to get it back. Be VERY careful of what you display in a
transient notification.
* The implementation may or may not allow the user to click the notification
away before the timeout triggers.

4. The place the notifications are shown at also differs widely from
implementation to implementation. It can be any of, at least:
* a rectangle (one per notification) at the top of the screen (traditional
implementations),
* an entry in the popup of one icon in the system/message tray, the same
icon for ALL notifications (Plasma, unless you remove that icon, forcing the
fallback to the traditional rectangle-based implementation KNotify),
* an entry in the popup of an application-specific icon in the
system/message tray, one per application (AFAIK, how GNOME Shell does it),
* theoretically, an icon (one per notification) in the system/message tray
with a popup attached (not sure any implementation actually does that
though).

So, yes, the Galago notification spec can be a solution for some things (and
yes, I'm aware that the GNOME HIG recommend replacing system tray icons with
it), but it has its portability pitfalls, and in most desktop environments,
it will lead to a VERY different user experience from a status notifier
(system tray) icon (which may or may not be better, depending on the
application).

        Kevin Kofler

[1] http://www.galago-project.org/specs/notification/

-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux