LINUX.ORG.RU

Gnome3 замена system-tray

 , ,


0

5

Привет, юзаю gnome3, люблю его. Менять не хочу. Но в system trayне отображаются значки некоторых програм. Какого хрена - ХЗ. Думал заменить tray на tint2 к примеру. Но как? tint2 ругается при запуске: tint2 : another systray is running pid=4719 Соответственно и трея у него никакого нет. Как решить эту проблему? Как или заставить отображаться иконки в гномовском трее, или заставить гном вообще не запускать трей, чтоб tint2 спокойно работал?



Последнее исправление: cetjs2 (всего исправлений: 3)
Ответ на: комментарий от vsrmis

я могу разорвать себе попу и перевести guake на gobject-introspection, но как-то не охота

найти источник бага — конечно было бы полезнее.. но копаться внутри «guake» — мне кажется уже вообще смысла нет. :-)

если мы уже выяснили что PyGTK работает криво (на GNOME) — то чтобы найти в чём именно конкретно баг — наверное было бы полезнее повозиться с другими программами, которые используют GTK-2 ..

ну или вручную взять GCC и скомпилировать на C — программку Hello World со статусной иконкой :-) .. есть тут на форуме кто умеет? :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Пример на Cи компилял. Работает отлично. Ровным счётом, как и 3-х строчник на питоне. Проблемы начинаются ( по крайней мере в python) когда размер кода уже достаточно большой ( как в guake). И постепенно его катрируя находишь такую точку, когда появление иконки - совершенно случайное явление при запуске программы. То оно есть, то его нет. Постепенно удаляя куски кода, частота появления иконки увеличивается, возвращая обратно - уменьшается.

vsrmis
() автор топика
Ответ на: комментарий от user_id_68054

Не, не так всё гладко с Си. Даже сишный код ИНОГДА ( чаще всего при первом запуске после компиляции) не показыват иконку. Вот 2 скриншота - один за одним. 2 запуска подряд. https://dl.dropboxusercontent.com/u/95314428/Screenshots/scr1.png https://dl.dropboxusercontent.com/u/95314428/Screenshots/scr2.png

vsrmis
() автор топика
Ответ на: комментарий от vsrmis

Проблемы начинаются (по крайней мере в python) когда размер кода уже достаточно большой

Проблемы начинаются при использовании GNOME Shell. И баг таки в нём, а не где-то ещё. У меня, например, и вариант кода на Qt не работает (иконка в 1px).

Собственно, у меня есть два нескромных вопроса:

1. В багзилле уже кто-то плакался отсюда?

2. Кто-нибудь разбирается в коде GNOME Shell? Помню был тут человечек, но ник не запомнил. :(

d2
()
Ответ на: комментарий от vsrmis

Не, не так всё гладко с Си.

да.. попробовал также попрактиковаться (ну точнее говоря я просто стянул ваш пример, и [запустил] его у себя) :-)

таже самая фигня --- запустил раз 15.. из них по случайному стечению обстоятельству половину раз показалась [девушка] в статусе, а половину раз не показалась в статуте..

(также были и ситуации, когда девушка занимала 1 пиксель в статусе :))

# P.S.: Hello-World-код вообще не менял после компиляции, так что от размера кода ни чего не зависит

************************************************************

# P.P.S.: а вот если написать

g++ -o sf_icon sf_icon.cpp $(pkg-config --cflags --libs gtk+-3.0)
вместо
g++ -o sf_icon sf_icon.cpp $(pkg-config --cflags --libs gtk+-2.0)
то статусная иконка показывается всегда, хоть и более маленькая :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)

!!!

В общем, давайте решать уже. Вот вариант кода, который при 100% запусков у меня не показывает иконку:

#/usr/bin/env python2

WAIT_TIME = 10

import gtk
import time

tray_icon = gtk.status_icon_new_from_file("/usr/share/icons/gnome/32x32/apps/gnome-help.png")

print "Wait..."

for i in range(0, WAIT_TIME):
    time.sleep(1)
    print WAIT_TIME - i

print "Go..."

gtk.main()

Скриншоты работы (оригинальный код; вариант с WAIT_TIME = 0; оригинальный код с awesome): [1], [2], [3].

Проверьте, пожалуйста, у себя, и если у вас он работает аналогичным образом (т.е. не работает :D), то скинем его как тест-кейс в багзиллу. Ок?

d2
()
Ответ на: !!! от d2

Проверьте, пожалуйста, у себя

у меня — всё как ты написал:

если пауза (WAIT_TIME = 10) то значёк не рисуется (пустая кнопка)

если нет паузы (WAIT_TIME = 0) то значёк рисуется.

запускал несколько раз в том и другом режиме..

то скинем его как тест-кейс в багзиллу. Ок?

да, было бы здорово если кто кинет..

# P.S.: только исправь пожалуйста
#/usr/bin/env python2
на
#!/usr/bin/env python2
:-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: !!! от d2

но только у меня тогда ещё возникает дополнительный вопрос...

..почему в GTK-3 --- такая маленькая иконка?

получается что это тоже баг?

(а может ли быть что это один и тот же баг?)

и ещё вопрос... есть ли среди нас тут (в этой теме) — те к кого не Арчик?

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Вот ещё с несколькими исправлениями: http://pastebin.com/TkMWUv6R

то значёк не рисуется

Кстати, у меня он таки иногда рисуется. Но в обрезанном виде (wtf?!).

d2
()
Ответ на: !!! от d2

проверил у себя, даже с WAIT_TIME = 1 иконка не рисуется

и да, у меня gentoo

eternal_sorrow ★★★★★
()
Ответ на: комментарий от user_id_68054

Чучше кидать на багзиллу в таком виде:

import gtk
import time

WAIT_TIME = 1
tray_icon = gtk.status_icon_new_from_file("guake-tray.png")

print "Wait..."
time.sleep(WAIT_TIME)
print "Go..."

gtk.main()

Таки да, при WAIT_TIME=0 - всё ОК, а при WAIT_TIME > 0 каритинки нет.

vsrmis
() автор топика
Ответ на: комментарий от user_id_68054

А вот сишный пример со sleep()

#include <gtk/gtk.h>
#include <unistd.h>
#define SLEEP_TIME 1

int main(int argc, char **argv)
{
	gtk_init(&argc, &argv);
	GtkStatusIcon *tray_icon;
	tray_icon = gtk_status_icon_new();
	gtk_status_icon_set_from_file(tray_icon, argv[1]);
	gtk_status_icon_set_visible(tray_icon, TRUE);
	printf("Wait\n");
	sleep(SLEEP_TIME);
	printf("Do!\n");
	gtk_main();
	return 0;
}


если SLEEP_TIME > 0, иконки нет.

vsrmis
() автор топика
Ответ на: комментарий от d2

Как то запостили багу и заглохли. Может попробуем разобраться? Кого можно кастануть в треду, чтоб объяснил как отдебажить этот код?

dokihot
()
Ответ на: комментарий от dokihot

Кого можно кастануть в треду

Я уже говорил, что не помню ник «правильного» человека.

чтоб объяснил как отдебажить этот код?

Код GNOME Shell? По мне так лезть туда без опыта релизации анлогичного трея даже не стоит.

d2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.