Project

General

Profile

Bug #1269

Notification Icon not appearing in Ubuntu 13.10 with unity desktop

Added by ramz over 4 years ago. Updated 6 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
03/24/2014
Due date:
% Done:

100%

Estimated time:
Version:
0.10-pre
OS:
Linux

Description

In Ubuntu 13.10 with unity desktop, if i enable the options "show system tray icon" and "Hide to tray on close button" and close quassel, the app disappears but there is no icon displayed on the notification area. So there is no way to bring the app to front.

SNI-systray_fix.diff (804 Bytes) SNI-systray_fix.diff SNI-systray_fix.diff shiznix, 06/08/2014 02:38 AM

Associated revisions

Revision 39398203 (diff)
Added by al over 4 years ago

Fix notification icon not appearing in Unity

Unity's indicator expects certain properties to be exported by an
application, of which Quassel is lacking some. This adds IconThemePath,
Menu, ItemIsMenu to org.kde.StatusNotifierItem.

Thanks a lot to shiznix for providing this patch.

Fixes #1269

Revision 3fb5e209 (diff)
Added by al 6 months ago

Fix notification icon not appearing in Unity

Unity's indicator expects certain properties to be exported by an
application, of which Quassel is lacking some. This adds IconThemePath,
Menu, ItemIsMenu to org.kde.StatusNotifierItem.

Thanks a lot to shiznix for providing this patch.

Fixes #1269

(cherry picked from commit 3939820389d995f56a073fc1d54ab245c6558312)

History

#1 Updated by phunyguy over 4 years ago

I will add a note for this as I have some experience with this bug. The issue is an incompatibility between the indicator-application package provided by Unity and quassel(client?). This affects Xubuntu and Ubuntu 12.10 and above. 12.04 works flawless. If you remove the indicator-application package, you get a tray icon, but lose all your Indicator stuff (volume control, battery icons, etc). Quassel-team: There have been instances in other bugs I filed on Launchpad for this that get shrugged off as being Canonical's issue, meanwhile Canonical shrugs it off as Quassel's issue... but there are plenty of other applications out there that have functioning tray icons, so I am leaning more towards this being an issue with Quassel and Canonical not playing nice. Unity isn't going anywhere, so I hope that sometime in the future we can get both teams working together towards a resolution. Quassel and Unity are both fantastic, and I would like to use them both together.

#2 Updated by kitterma over 4 years ago

The Quassel icon works fine with anything except Unity, so I don't see how it's a Quassel issue. If there's something that's being done differently in Unity that needs a change in quassel, then someone who knows something about Unity will have to provide it. None of the Quassel devs use Ubuntu and it works fine in Kubuntu where it's mostly used.

#3 Updated by shiznix over 4 years ago

Indicator-application displays application icons and their menus for applications that use the appindicator API.
But it can also display those that use kdelib's Status Notifier Items (SNI) spec.

Indicator-application does try and use Quassel's SNI but it is not quite complete, see the following output from indicator-application:
"indicator-application-service-WARNING **: Notification Item on object /StatusNotifierItem of org.kde.StatusNotifierItem-29780-1 doesn't have enough properties" (where 29780 is the PID of Quassel)

Specifically, Quassel is missing registering org.kde.StatusNotifierItem.Menu on dbus.
Attached is a small patch to get a basic working Quassel SNI indicator that is compatible with indicator-application.

#4 Updated by al over 4 years ago

  • Status changed from New to Assigned
  • Assignee set to al

#6 Updated by al over 4 years ago

shiznix, the patch doesn't seem to fix it for me. Is there anything else required except applying the patch, cmake -DWITH_KDE=ON; make install?

#7 Updated by shiznix over 4 years ago

Hi al,

It should 'just work', but I'll post what info I have in the hope it can get things happening at your end.

The available SNI items exported by quassel can be listed by doing the following:
qdbus org.kde.StatusNotifierItem-$(pidof quasselclient)-1 /StatusNotifierItem

The indicator-application-service process expects the following SNI items to be present before it will show an icon and menu:
org.kde.StatusNotifierItem.Menu
org.kde.StatusNotifierItem.Id
org.kde.StatusNotifierItem.Category
org.kde.StatusNotifierItem.Status
org.kde.StatusNotifierItem.IconName

These items are checked in indicator-application package's source file src/application-service-appstore.c
Once indicator-application-service is satisfied these SNI items exist, it shows the Quassel icon as an indicator in the Unity top panel with a basic menu.

Have double checked again the patch works OK and applies to both quassel versions 0.9.3 and 0.10.0.

#8 Updated by shiznix over 4 years ago

Hi al,

It should 'just work', but I'll post what info I have in the hope it can get things happening at your end.

The available SNI items exported by quassel can be listed by doing the following:
qdbus org.kde.StatusNotifierItem-$(pidof quasselclient)-1 /StatusNotifierItem

The indicator-application-service process expects the following SNI items to be present before it will show an icon and menu:
org.kde.StatusNotifierItem.Menu
org.kde.StatusNotifierItem.Id
org.kde.StatusNotifierItem.Category
org.kde.StatusNotifierItem.Status
org.kde.StatusNotifierItem.IconName

These items are checked in indicator-application package's source file src/application-service-appstore.c
Once indicator-application-service is satisfied these SNI items exist, it shows the Quassel icon as an indicator in the Unity top panel with a basic menu.

Have double checked again the patch works OK and applies to both quassel versions 0.9.3 and 0.10.0.
Only mandatory cmake build option I can think of is of course '-DWITH_DBUS=ON'.

#9 Updated by al over 4 years ago

Still wasn't able to successfully test this, but I guess I'm doing something wrong. At least it doesn't break anything for me, so I'll just merge it. Thanks for the patch!

#10 Updated by al over 4 years ago

  • Status changed from Assigned to Resolved
  • % Done changed from 0 to 100

Applied in changeset quassel|commit:3939820389d995f56a073fc1d54ab245c6558312.

#11 Updated by al over 4 years ago

  • Status changed from Resolved to Feedback

Reopening as I had to revert the fix due to dbus errors:
arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_path (*string_p)" failed in file dbus-message.c line 2680.

Any hints appreciated.

#12 Updated by al over 4 years ago

  • % Done changed from 100 to 0

#13 Updated by dkessel over 3 years ago

This not only affects unity, but also other desktop environments like XFCE. Tested on Xubuntu Development release 15.04.

#14 Updated by shiznix over 3 years ago

al wrote:

Reopening as I had to revert the fix due to dbus errors:
arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_path (*string_p)" failed in file dbus-message.c line 2680.

Any hints appreciated.

Try as I might, I'm unable to reproduce this.
Al are you getting this error during building or at runtime ?

Patch still applies cleanly and works for versions 0.9, 0.10, 0.11 and 0.12 of Quassel here.

#15 Updated by Sputnick 6 months ago

Works fine for me as well, so this patch is coming back as part of the on-going systray refactoring.

#16 Updated by Sputnick 6 months ago

Actually, our SNI interface definition had the wrong types for pixmaps. This should be unrelated to this patch, but maybe one of the desktop environments al tested on that ignored Quassel without the new properties then started to support Quassel, and tried to marshall the (empty) pixmaps. KDE/Plasma don't do this, because they check if the argument is empty before trying to deserialize it, but maybe Unity behaves differently...

#17 Updated by al 6 months ago

  • Status changed from Feedback to Resolved
  • % Done changed from 0 to 100

Also available in: Atom PDF