#1527 Tray Icon Dissapears After Killing gnome-panel

open
nobody
None
5
2011-10-23
2011-10-23
Anonymous
No

When I kill gnome-panel, which is necessary in some cases when the applets are displayed wrong, the XChat tray icon disappears, and as I didn't find another way, I have to kill it each time it happens and restart it. I'm using Ubuntu 10.04 with gnome-panel, and my XChat version is 2.8.6.
Regards, Qazjap11.

P.S. I apologize in advance if it has been fixed in latest versions, as in Ubuntu repos they are not always the newest ones, and a short search in Google didn't find any duplicates.

Discussion

  • Brad Jorsch
    Brad Jorsch
    2011-10-30

    According to the freedesktop.org system tray protocol, a systray client should listen for a particular client message on the root window to be notified when the system tray starts, which is to be sent with the StructureNotify event mask. GtkStatusIcon (AFAIK) does this automatically, but xchat overrides this by calling gdk_window_set_events on the root window to listen only to PropertyNotify events.

    Adding GDK_STRUCTURE_MASK to the gdk_window_set_events call in src/fe-gtk/fe-gtk.c seems to fix it. I've been running a version with that change for almost 2 years now with no issues (see artifact id 2905743).

     
  • Danesh D
    Danesh D
    2012-01-13

    The same thing happens with GNOME 3 and 3.2 with gnome-shell. I'm using Fedora 15 and 16, when gnome-shell is killed/crashes and restarts, the tray icon in the notification bar disappears. This is with XChat 2.8.8 FWIW.

    To the bug reporter, you can run this command from terminal instead of killing XChat to bring the window back up:

    $ xchat -e -c 'GUI SHOW'

    Note that it still doesn't have an associated tray icon so you'll have to run that command every time you minimize.

    Is nothing being done on this?

     
  • Danesh D
    Danesh D
    2012-01-13

    Another hackaround, once XChat's running do:

    /set gui_tray 0
    /gui apply
    /set gui_tray 1
    /gui apply

    I'm guessing that reinits something or the other to use the new shell.