LINUX.ORG.RU

Gnome3 замена system-tray

 , , ,


0

5

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


Внизу смотрел (при наведении раньше выскакивал)?

peregrine ★★★★★ ()

В третегноме трея как такового нету. Есть область уведомлений, она внизу, вылезает если «надавить» указателем на нижний край экрана (если стоит XInput2, если не стоит — то просто навести).

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

Это и есть трей. Самый обычный нормальный трей, а не тот, что в убунтах всяких.

Extraterrestrial ★★★★★ ()

сейчас попробовал собрать tint2 у себя, все запустилось, гном 3.10.4, с низу появилась овальная, полупрозрачная панель со списком открытых окон и часиками как в винде, зачем оно нужно?

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

Пробовал, невидимые иконки просто перемещаются наверх. Но остаются невидимыми.

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

Это баг, так быть не должно. Во-первых посмотри всякие разные логи, нет ли где чего интересного, во-вторых зайди сюда https://bugzilla.redhat.com/show_bug.cgi?id=974937 и попробуй скомпелять две тестовых программы оттуда, для gtk и для qt. Это, возможно, позволит сузить пространство поиска.

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

qt

Ахахах. Я далеко не сразу разглядел иконку в 1 пиксель. Хотя хз, может я чего не поставил/не так скомпилял.

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

Ну во всяком случае теперь ты знаешь в чем прикол. Быстрым поиском не получилось найти почему qt может себя так вести, так что дальше давай сам.

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

У меня не выходит скомпилять Qt пример. Там надо юзать qt4 или 5? У меня qt5:

main.cpp
main.cpp: В функции «int main(int, char**)»:
main.cpp:49:22: ошибка: переменная «QApplication app» инициализирована, хотя имеет неполный тип
     QApplication app(argc, argv);
                      ^
main.cpp:52:9: ошибка: «QMessageBox» не был декларирован
         QMessageBox::critical(0, QObject::tr("Systray"),
         ^
main.cpp:57:5: ошибка: неполный тип «QApplication» использован во вложенном спецификаторе имени
     QApplication::setQuitOnLastWindowClosed(false);
     ^
Makefile:402: ошибка выполнения рецепта для цели «main.o»
make: *** [main.o] Ошибка 1

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

Но при этом бинарник, что там лежит в папке успешно отрабатывает и иконки все показываются. В чём может быть соль? Где можно достать логи ошибок?

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

Вероятно, qt5. Если ты через $ make all собираешь, то в window.h нужно добавить заголовков:

#include <QSystemTrayIcon>
#include <QDialog>
#include <QMessageBox>
#include <QApplication>
#include <QMenu>

#include <QPushButton>
#include <QGroupBox>
#include <QGridLayout>
#include <QTextEdit>
#include <QLabel>
#include <QLineEdit>
#include <QSpinBox>
#include <QComboBox>
#include <QStyle>
#include <QHBoxLayout>
#include <QCheckBox>
d2 ()
Ответ на: комментарий от d2

Тесты пашут. Я тут опытным путём прихожу, что не работают приложения на python wicd guake. И которые использую glade. Но сегодня хочу спать, буду дальше копать. Но истина где то около glade

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

Опытным путём нашел, что не корректно отрабатывает функция: gtk.status_icon_new_from_file в python


>>> import gtk
>>> tray_icon = gtk.status_icon_new_from_file("/home/alex/linux.jpg")

Вот этот код, должен создать в трее иконку и показать в нёй изображение. Иконка есть изображения нет :-( Чё делать - не знаю.

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

Ну смотри, мне больше всего понравился этот баг: https://bugzilla.gnome.org/show_bug.cgi?id=730288

Можно туда написать, ибо двухстрочный «Steps to reproduce» - это действительно круто. Я могу и свои скриншоты приложить, если нужно: [1], [2].

Вот ещё похожий: https://bugzilla.gnome.org/show_bug.cgi?id=729016

---

Можно ещё попробовать покастовать людей из Russian Fedora (кого вспомнил, навскидку):

i_gnatenko_brain, alpha.

---

А ещё таки добавить теги gnome/gnome3 и gnome-shell ( cetjs2, посодействуй).

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

репорть баг конечно, так всё отдебажил - нельзя чтобы пропадало

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

>>> import gtk
>>> tray_icon = gtk.status_icon_new_from_file(«/home/alex/linux.jpg»)

а что за такой «import gtk»?.. это не тот ли самый который теперь:

from gi.repository import Gtk
?

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

Вот этот код, должен создать в трее иконку и показать в нёй изображение. Иконка есть изображения нет :-( Чё делать - не знаю.

вот этот код (в Python, в GNOME) создал иконку с маленьким избражением девушки по имени Shining Finger..

>>> from gi.repository import Gtk
>>> sf_icon = Gtk.StatusIcon.new_from_file('/home/regular-user/Desktop/Shining_Finger.jpg')
>>> Gtk.main()

а у тебя как оно?

(и не забыл ли ты вызвать Gtk.main() — после создания иконки?)

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

(и не забыл ли ты вызвать Gtk.main() — после создания иконки?)

Я привел выше скрины работы этого кода в GNOME Shell и с awesome. Что тебе ещё нужно?)

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

<module 'gtk' from '/usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.pyc'>

вот же стыдоба что называется в квадрате :-)

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

Любопытно, но на Unity вообще даже иконка не создаётся не то, что изображение. user_id, На счёт main и разных способов импорта gtk. Будь добр, мил человек, расскажи что к чему. Почему сменилось и почему программы ( в частносити guake ) до сих пор юзает первый способ, предложенный vsrmis. И иконки в этих программах не появляются. не имею возможности сейчас проверить вызвали ли они main, но вроде как уважаемые ребята, должны были вызвать.

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

Почему сменилось и почему программы ( в частносити guake ) до сих пор юзает первый способ, предложенный vsrmis.

могу лушь сказать что конструкция — ``import gtk`` — относится к тем далёким временам, когда python-библиотека PyGTK ещё не была устаревшей (а сейчас уже на смену PyGTK — прищёл механизм «GObject Introspection»)

возможно даже библиотека PyGTK и НЕ является устаревшей — но помнится мне [или быть может мне присниось во сне?] что вроде как является :-)

однако думаю проблема нерисования иконки находится НЕ в самой PyGTK, а в GTK версии 2, ну или точнее сказать что что-то поменяли в протоколах GTK-2 => GTK-3..

..вобщем моё «экспертное» мнение — тут как бы это сказать — не такое уж и экспертное :-)

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

Тут psi-plus (qt) DropBox (gtk2) и clipit (gtk3)

а затестить старенький Python + старенький PyGTK — у тебя есть возможность?

вот как [тут] (на скриншоте — в верхнем терминале)

вдруг проблема правда не в GTK-2, а например именно в PyGTK..

(но маловероятно :))

user_id_68054 ★★★★★ ()

firefox-gtk3 только поставил затестить. Надо gnome тему на него натянуть.

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

Пришел домой. Любопытно. Вот этот код в скрипте:

from gi.repository import Gtk
sf_icon = Gtk.StatusIcon.new_from_file('guake-tray.png')
Gtk.main()
Работает, но невозможно завершить по Ctrl-C

Вот этот тоже, и завершается корректно:

import gtk
tray_icon = gtk.status_icon_new_from_file("guake-tray.png")
gtk.main()

Но, зараза, guake иконку свою не показывает.

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

Что-то не чисто. Обрезал исполняемый файл guake донельзя

#!/usr/bin/python2
# -*- coding: utf-8; -*-
"""
Copyright (C) 2007-2012 Lincoln de Sousa <lincoln@minaslivre.org>
Copyright (C) 2007 Gabriel Falcão <gabrielteratos@gmail.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public
License along with this program; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
"""
from __future__ import absolute_import

import pygtk
import gobject
pygtk.require('2.0')
gobject.threads_init()

import gtk
import vte
from pango import FontDescription
import pynotify
import gconf
import dbus
from xdg.DesktopEntry import DesktopEntry
import xdg.Exceptions

import os
import sys
import signal
from thread import start_new_thread
from time import sleep
import posix
from urllib import url2pathname
from urlparse import urlsplit

import guake.globalhotkeys
from guake.simplegladeapp import SimpleGladeApp, bindtextdomain
from guake.prefs import PrefsDialog, LKEY, GKEY
from guake.dbusiface import DbusManager, DBUS_NAME, DBUS_PATH
from guake.common import test_gconf, pixmapfile, gladefile, ShowableError, _
from guake.common import shell_quote
from guake.globals import NAME, VERSION, LOCALE_DIR, KEY, GCONF_PATH, \
    TERMINAL_MATCH_EXPRS, TERMINAL_MATCH_TAGS, \
    ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER

popup_works = True
if not pynotify.init('Guake!') or pynotify.get_server_info() == None :
    popup_works = False
    print "WARNING: could not use popup notification"

GNOME_FONT_PATH = '/desktop/gnome/interface/monospace_font_name'

# Loading translation
bindtextdomain(NAME, LOCALE_DIR)


# Setting gobject program name
gobject.set_prgname(NAME)

class Guake(SimpleGladeApp):
    """Guake main class. Handles specialy the main window.
    """
    def __init__(self):
        super(Guake, self).__init__(gladefile('guake.glade'))

        # trayicon!
        img = pixmapfile('guake-tray.png')
        self.tray_icon = gtk.status_icon_new_from_file(img)
        self.tray_icon.set_tooltip(_('Guake Terminal'))
        

nstance = Guake()
gtk.main()

Работает норм. А весь код - не работает :-(

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

Вот этот тоже, и завершается корректно..
import gtk
tray_icon = gtk.status_icon_new_from_file(«guake-tray.png»)
gtk.main()

а у меня например на стареньком Python + PyGTK — иконка не рисуется (GNOME, Arch).. вот сегодня проверял..

то есть рисуется статусная икнока — только в ситуации с gobject-introspection (from gi.repository import Gtk)

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

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

Сейчас по маленьку кастрирую guake пытаясь поймать место, когда начинает иконка пропадать. Дошел до состояния, когда иконка появляется или пропадает случайным образом при запуске ( раз запусти - есть иконка, второй раз этот же код - нет иконки). Я реально теряюсь Большая просьба, попробуйте у кого как? http://hastebin.com/apepoximod.vala Тут есть нюанс, чтоб это заработало, его нуэжно поместит вместо вашего /usr/bin/guake или у кого как. P.S. Не забудьте сохранить старый guake

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

Пипец, реально какой то Гейзенбаг. Как хоть логи собрать, а?

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