Я также ищу ответ на этот вопрос, но нашел кое-что, что могло бы помочь.
Мне кажется, что GTK выясняет, где вызвать PopupMenu из позиции мыши. Каким-то образом выясняется, что кнопка мыши была нажата на StatusIcon. Предположительно, либо из событий мыши, отправленных системой управления окнами, либо из какого-то знания о том, где находится StatusIcon.
Я понял, что GTK должен либо: 1) знать фактическое местоположение StatusIcon, либо 2) получать события из оконной системы при щелчке мышью по StatusIcon. Так что он должен знать информацию.
У меня также есть всплывающее окно, которое я хочу поднять возле StatusIcon, и у меня также есть PopupMenu, который работает нормально. Итак, я попробовал это в pygtk:
x, y, push = gtk.status_icon_position_menu(popup_menu, status_icon)
Я прошел в PopupMenu, чтобы попытаться найти StatusIcon, хотя я не пытаюсь открыть меню. Это позволяет получить позицию рядом с StatusIcon, но странная вещь заключается в том, что он работает только после того, как PopupMenu был запущен один раз.
В любом случае, это немного приблизило меня и могло бы помочь вам или кому-то еще найти полное решение.