Where are my systray icons?

One of the features no longer available in the upcoming Plasma 5 release is the xembed based system tray (for explanation see my previous blog post). This can result in some applications missing a system tray icon, but it shouldn’t happen. There are patches around for various toolkits which will turn the xembed icon into a status notifier item. Our KDE packagers were informed back in March about the upcoming change and which patches should be applied to which components.

In summary that is for the toolkits:

  • GTK2: needs libappindicator1 and all packages having an optional
    dependency to it should get compiled with it.
  • GTK3: needs libappindicator3-1 and all packages having an optional
    dependency to it should get compiled with it.
  • Qt4: needs sni-qt and a patch to Qt 4.8
  • Qt5: Won’t need adjustments starting with Qt 5.4, but with Qt 5.3 this commit should be cherry-picked.

Note for Skype users: Skype does not provide a 64 bit package, because of that one also needs the sni-qt package in the 32 bit variant.

For GTK there is also a new library to implement status notifiers available, for more information read Marco’s blog post on the topic.

Unfortunately not all distributions have included the patches yet. If for one of your applications the system tray icon is not available although it works on other distributions I recommend to create a bug report in your distribution against the affected package to show that these additional build dependencies are required.

In the worst case you could install a third-party dedicated xembed system tray application. An example is “wmsystemtray”, this one can start with:

wmsystemtray --non-wmaker --bgcolor white

and best also configure a KWin window rule to have it without decorations and on all desktops:

Description=Application settings for wmsystemtray
desktop=-1
desktoprule=2
noborder=true
noborderrule=2
skippager=true
skippagerrule=2
skipswitcher=true
skipswitcherrule=2
skiptaskbar=true
skiptaskbarrule=2
type=2
typerule=2
wmclass=wmsystemtray0 wmsystemtray
wmclasscomplete=true
wmclassmatch=1

6 Replies to “Where are my systray icons?”

  1. Chrome shows status notifier in Fedora KDE only if libappindicator is installed. I am concerned about standards as far as human interface guidelines are concerned. Do both libappindicator and KStatusNotifierItem have same standards and behavior?

    Google Hangouts can only be triggered by right clicking on the icon which opens up another menu with “Hangouts” as the only option which you have to click to open the Hangouts. They are probably working on better implementation but what do you think of this behavior and standards in general.

  2. Glad to see this is getting into Qt itself where it belongs. I’ve been using my own fork of Quassel’s fork of KNotifications for status notifier and then using it when it was possible and falling back to Qt’s xembed-based implementation otherwise. The KF5 KNotifications is tier2 and does some pretty high-level stuff (managing sound effects and so forth), so while I dumped all my other kdelibs forks in favor of KF5 I’ve had to retain the one for KNotifications. So I thought this was odd but now makes more sense if the status notifier stuff is going to be in Qt proper anyways.

    It still might make sense to have a library that does desktop notifications by itself (unless Qt has an API for this as well?). But this is such a simple thing I don’t feel bad just throwing that in my application code.

    1. Note: SNI support is not in Qt. Only on Plasma we provide through the integration plugins a SNI for a QSystemTrayIcon. On Ubuntu that’s probably not going to work, though I hope that Ubuntu will use our patches.

  3. Hey I have gotten kde5 to install on my Ubuntu 14.04 setup and I really like it. Im looking forward to the final release. Keep up the great work!

Comments are closed.