X11docker: --xpra: Tray icon not showing

Created on 25 Aug 2019  路  9Comments  路  Source: mviereck/x11docker

Running Docker 19.03.1 on Ubuntu 18.04.3 Desktop.

I ran some applications like Telegram with x11docker. The application's window showed up correctly and behaved normal, so I believe I got most things right. However, the application's tray icon did not show up. It should have shown on the top right corner of the screen, but instead there was a Xpra client icon with menu items like Information, Features, Disconnect, etc, and not the application's icon.

bug

All 9 comments

You can try with option --hostdbus to allow DBus communication between container and host. That will probably allow the telegram tray icon.
Note that this degrades container isolation.

EDIT: Looking at the xpra doku: It seems xpra should show application tray icons itself. I'll have a look why it does not.

I tried --hostdbus but I didn't notice any difference. Also the problem applies to a variety of applications, not just Telegram.

I tried using just Xpra and not x11docker and got the same bug, so I believe the bug is at xpra side rather than x11docker side.
I found this ticket: https://xpra.org/trac/ticket/2161 which seems to be related, but I haven't found a workaround yet.

I just tried xpra without x11docker, too, and get a different issue: A tray icon appears, but does not show its menu on mouse clicks. Tested with radiotray.

xpra start :22 --xvfb "/usr/bin/Xvfb :22" --daemon=no --start "radiotray"
xpra attach :22

Could you test this, too, and compare the behaviour?
What is your xpra --version? Here it is xpra v3.0-r23575.
What is your desktop environment? Here it is xfce.

xpra --version is xpra v2.5.3-r23270 and desktop environment is GNOME3 (Ubuntu 18.04 default).
I failed to run the same command because of error:

X11 extension Composite not available
Xpra 'start' subcommand runs as a compositing manager
it cannot use a display which lacks the XComposite extension!

I had to remove the --xvfb option, and the behavior is the same: the tray icon for xpra appears, but not the application.

@mviereck I ran xpra start with the -d tray option to see what happened and got this:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/xpra/x11/gtk_x11/tray.py", line 196, in do_xpra_client_message_event
    self.dock_tray(xid)
  File "/usr/lib/python2.7/dist-packages/xpra/x11/gtk_x11/tray.py", line 221, in dock_tray
    window = x11_foreign_new(xid)
  File "/usr/lib/python2.7/dist-packages/xpra/gtk_common/gtk_util.py", line 456, in x11_foreign_new
    return gdk.window_foreign_new_for_display(xid)
TypeError: window_foreign_new_for_display() argument 1 must be gtk.gdk.Display, not int

It seems like the wrong API was called causing function signature mismatch. I found a similar method window_foreign_new with the expected signature and patched the source code to replace the function name, and the tray icon appeared. Then I ran into the same problem as you have described. The tray icon responds to mouse clicks, but is not able to pop a menu.

It makes sense to open a ticket at www.xpra.org. Would you like do do it? Otherwise I'll do it the next days.
Meanwhile you can try nxagent (option --nxagent). At least a test with radiotray seems to work so far.

EDIT: I've made a note about this issue at https://www.xpra.org/trac/ticket/2397#ticket

I don't have xpra tray icon issues anymore with current beta xpra v3.0-r23672.
You could consider to use the xpra/winswitch repository instead of the xpra version from the Ubuntu repository.

No menus on right-clicking tray icons is a bug in Xpra: https://xpra.org/trac/ticket/2729

Was this page helpful?
0 / 5 - 0 ratings

Related issues

hrjakobsen picture hrjakobsen  路  4Comments

hoshsadiq picture hoshsadiq  路  9Comments

schra picture schra  路  3Comments

SemanticBeeng picture SemanticBeeng  路  9Comments

mviereck picture mviereck  路  6Comments