App indicator does not show icon for Qt apps or with custom icons
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
appmenu-qt5 (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
libappindicator (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
qtbase-opensource-src (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
Xenial |
Confirmed
|
High
|
Unassigned | ||
sni-qt (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
Xenial |
Fix Released
|
High
|
Unassigned |
Bug Description
Snaps that use the app indicator area via Qt can't display their icon there.
Steps to reproduce and screenshot:
https:/
Some research:
- Uses http://
- The indicator icon is created under /tmp under a randomly generated directory name
didrocks mentions also:
1. The application says "this is my menu, and here is my icon at that address", the address being /tmp/blablabla
2. appindicator receives the bus messages
3. and says "let's have a look at this icon at that address"
4. BUT! /tmp in the snap is different form system /tmp
=======
SRU bug for libappindicator:
[Impact]
Indicator icons pointing to a position inside the snap aren't properly found by unity, that shows a "missing icon" emblem
[Test case]
* Download this yaml file http://
in any folder you want
* Run:
- snapcraft prime
- sudo snap try prime
- snap run gtk3-appindicator
An indicator should open (with proper icon), then if you select "Set icon with Full Path" and/or "Enable Local Theme" from its menu, you should see a proper icon.
When snaps are generated in non updated systems, the icon will be still missing.
[Regression potential]
If $SNAP is defined for an app not running in snap confinement the icons couldn't be properly visible
=======
SRU bug for appmenu-qt5:
[Impact]
Indicator icons pointing to a position inside the snap aren't properly found by unity, that shows a "missing icon" emblem
[Test case]
* Download this yaml file http://
in any folder you want
* Run:
- snapcraft prime
- sudo snap try prime
- snap run qt5-systray
An indicator should open, with the proper icon showin. From the window you can change the icon type, and all the types should work.
When snaps are generated in non updated systems, the icons (except the Themed one) will be still missing.
[Regression potential]
If $SNAP env variable is defined for an app not running in snap confinement the icons couldn't be properly visible
=======
SRU bug for sni-qt:
[Impact]
Indicator icons pointing to a position inside the snap aren't properly found by unity, that shows a "missing icon" emblem
[Test case]
* Download this yaml file http://
in any folder you want
* Run:
- snapcraft prime
- sudo snap try prime
- snap run qt4-systray
An indicator should open, with the proper icon showin. From the window you can change the icon type, and all the types should work.
When snaps are generated in non updated systems, the icons (except the Themed one) will be still missing.
[Regression potential]
If $SNAP env variable is defined for an app not running in snap confinement the icons couldn't be properly visible
Related branches
- Lukáš Tinkl (community): Approve
-
Diff: 149 lines (+57/-10)5 files modifiedsrc/fsutils.cpp (+16/-4)
src/iconcache.cpp (+11/-2)
src/iconcache.h (+2/-2)
src/statusnotifieritem.cpp (+1/-1)
tests/auto/iconcachetest.cpp (+27/-1)
- Lukáš Tinkl (community): Approve
-
Diff: 138 lines (+50/-13)4 files modifiedsrc/appmenuplatformmenubar.cpp (+14/-3)
src/appmenuplatformsystemtrayicon.cpp (+1/-1)
src/iconcache.cpp (+34/-7)
src/iconcache.h (+1/-2)
- Andrea Azzarone (community): Approve
- unity-api-1-bot: Needs Fixing (continuous-integration)
-
Diff: 353 lines (+124/-14)5 files modifiedconfigure.ac (+1/-1)
debian/control (+1/-0)
debian/rules (+0/-2)
example/simple-client-vala.vala (+1/-1)
src/app-indicator.c (+121/-10)
- Andrea Azzarone (community): Approve
-
Diff: 339 lines (+139/-11)2 files modifiedexample/simple-client-vala.vala (+1/-1)
src/app-indicator.c (+138/-10)
- Andrea Azzarone (community): Approve
-
Diff: 156 lines (+67/-13)5 files modifieddebian/changelog (+11/-0)
src/appmenuplatformmenubar.cpp (+13/-3)
src/appmenuplatformsystemtrayicon.cpp (+1/-1)
src/iconcache.cpp (+41/-7)
src/iconcache.h (+1/-2)
- Indicator Applet Developers: Pending requested
-
Diff: 37 lines (+23/-0) (has conflicts)1 file modifieddebian/changelog (+23/-0)
- Andrea Azzarone (community): Approve
-
Diff: 215 lines (+82/-11)7 files modifieddebian/changelog (+10/-0)
src/fsutils.cpp (+19/-4)
src/iconcache.cpp (+11/-2)
src/iconcache.h (+2/-2)
src/statusnotifieritem.cpp (+12/-2)
tests/auto/fsutilstest.cpp (+1/-0)
tests/auto/iconcachetest.cpp (+27/-1)
tags: |
added: snap-desktop-issue removed: desktop |
Changed in sni-qt (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Marco Trevisan (Treviño) (3v1n0) |
summary: |
- App indicator does not show icon for Qt apps + App indicator does not show icon for Qt apps or with custom icons |
Changed in libappindicator (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Marco Trevisan (Treviño) (3v1n0) |
Changed in snapd (Ubuntu): | |
status: | Confirmed → In Progress |
importance: | Undecided → High |
assignee: | nobody → Marco Trevisan (Treviño) (3v1n0) |
Changed in appmenu-qt5 (Ubuntu): | |
status: | Confirmed → In Progress |
importance: | Undecided → High |
assignee: | nobody → Marco Trevisan (Treviño) (3v1n0) |
information type: | Public → Public Security |
information type: | Public Security → Public |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
tags: |
added: verification-done removed: verification-needed |
tags: | added: isv |
no longer affects: | snapd (Ubuntu) |
no longer affects: | snapd (Ubuntu Xenial) |
affects: | snappy → ubuntu-translations |
no longer affects: | ubuntu-translations |
affects: | qt → ubuntu-translations |
no longer affects: | ubuntu-translations |
To expand a little bit on this. So indeed, what's happening is:
- the client side set some icons/assets in its /tmp (which is != from the system /tmp)
- the client then sends his menu + the icon uri to the system shell
- the system shell tries to open the icon at that address which doesn't exist.
There are multiple issues there:
- as we want snapd to be cross distros, I don't think we can patch Qt, GTK and other toolkits to export indicators with translated path (client side)
- if we go that road, it means we need to make the application aware it's running in a snapd environment, unsure this is wanted
- patching all shells (at least Unity, GNOME Shell and KDE plasma) has the same issue in term of cross distro compatibility (shell-system-side)
- ofc, we don't want /tmp to be the same than the system one
- I don't think apparmor can do this on the fly translations, right? Patching dbus is an option (with a running on snapd awareness), but brings the same issue in term of cross distro distributions.
Any other idea?