Я полагаю, что это связанный с вопрос. Можно ли использовать апплеты GNOME в Unity? (перенесено по предложению @ Хорхе Кастро )
Мне бы хотелось использовать stickynotes_applet
в Unity. Теперь в Gnome этот апплет добавляется в панель, затем я должен щелкнуть по нему, чтобы создать новую заметку, и я могу вызвать предпочтения, чтобы заметки оставались на рабочем столе - и это все Я нуждаюсь.
Очевидно, что, как упоминалось здесь, будет невозможно использовать этот апплет непосредственно в Unity; но в основном, все, что мне нужно сделать, это поднять окно настроек (чтобы заставить заметки залипать) и как-то выполнить команду для новой заметки (что в противном случае было бы выполнено щелчком по значку апплета в бар гномов).
Я попытался запустить '/usr/lib/gnome-applets/stickynotes_applet
' и, похоже, он запускается, хотя значок апплета не отображается (что ожидается), и никаких других окон тоже (которые, как я надеялся, покажет :)).
Итак, я бродил - учитывая, что у этого апплета (кажется) нет ничего особенного, связанного с рабочим столом - есть ли командная строка способ в основном запустить этот апплет, выпустить ' Показать ему команду Preferences и выдать ей новую команду note в среде Unity ( в настоящее время я могу вызвать tomboy
из командной строки, и она работает - но ее окна слишком неуклюжи на мой вкус ) ?
(и бонусный вопрос - как бы вы запустили окно, связанное с апплетом, только из командной строки в классическом Gnome?)
Интеграция с рабочим столом не имеет для меня большого значения - я бы с удовольствием запускаю это вручную из командной строки, пока я получаю небольшие компактные заметки, которые остаются на рабочем столе (пока процесс активен) ..
Спасибо за любые комментарии,
Ура!
У вас может быть небольшая панель гномов, на которой работает только ваш апплет. См. Как использовать панель GNOME в Unity?
Сначала я начал искать, можно ли запускать апплеты Gnome из командной строки, и в отдельном окне - оказывается, это была техника для отладки апплетов Python;
invest-applet
(который находится в Python), так что это снова работает на Натти; патч можно найти в Ошибка № 775387 «Инвест-апплет не запускается после обновления до Natty ...»: Ошибки: пакет «gnome-applets»: Ubuntu invest-applet
при вызове из командной строки и помещает его в свое собственное окно - и это работает в Unity: [ 1157]
Это сценарий:
import sys
import gtk
import pygtk
pygtk.require('2.0')
# sudo apt-get install python-gnomeapplet
import gnomeapplet
import CORBA # must have import gnomeapplet before!
import bonobo
import bonobo.ui
import bonobo.activation
bcontrol = bonobo.activation.activate_from_id('OAFIID:Invest_Applet', 0, False)
win = bonobo.ui.Window("foo", "FOOOOO")
buiwid = bonobo.ui.widget_new_control_from_objref(bcontrol, win.get_ui_container().corba_objref())
win.set_contents(buiwid)
win.show_all()
win.connect("destroy", lambda x: sys.exit(0))
bonobo.ui.main()
... и расширенный сценарий (с выводом отладки и кучей грязных комментариев) находится в gtk_bonobo_applet_widget.py .
Это точно то, что я хотел, и сначала я подумал, что это будет применимо ко всем апплетам - по крайней мере, в Natty (и среди них stickynotes
); но увы, нет :
Теперь, Natty немного специфичен, потому что это последний Ubuntu Gnome 2 - однако, он также имеет (первое) Unity. Таким образом:
bonobo
/ CORBA
(в Python через gnomeapplet
); такие, как invest-applet
или brightness-applet
, могут использовать вышеупомянутую технику для поднятия в собственном окне - и могут быть запрошены с помощью libbonobo2-bin
инструментов (например, activation-client
) На самом деле, stickynotes
мигрировали из bonobo
в dbus
незадолго до выхода Natty (в ревизии Port новому API-интерфейсу libpanel-applet ); что очевидно при замене макроса PANEL_APPLET_BONOBO_FACTORY
на PANEL_APPLET_OUT_PROCESS_FACTORY
. Возможно, если кто-то проверит последнюю ревизию stickynotes
на основе bonobo
и соберет ее - он также должен иметь возможность использовать вышеописанную технику для создания экземпляра апплета в отдельном окне и запуска его оттуда, даже без [ 1119].
В противном случае я бы полагал, что все апплеты (или, скорее, среды разработки апплетов) должны иметь возможность работать в отдельном окне, подобном этому - если не по какой-либо другой причине, то облегчить отладку апплетов во время разработки. И учитывая, что некоторые апплеты имеют переключатели командной строки для запуска в отдельном окне (как «руководство для начинающих» выше, а также invest-applet
, имеют такие переключатели) - я надеялся, что, возможно, stickynotes
также имеет такие аргументы командной строки; Тем не менее, я сделал grep через его исходные файлы - и, увы, я не могу найти упоминания о параметрах командной строки.
Но потом я удивился - почему такая миграция? Ну, это потому, что bonobo
некоторое время (или, скорее, уже давно) устарело:
AppletsDbusMigration - GNOME Live! : (2009)
[ 1166] Gnome Panel недавно удалила зависимость libbonobo (см. bug # 572131 ).blockquote>
список рассылки gnome-devel-list - Что заменит bonobo? (2009)
Dbus не является прямой заменой bonobo. Точной замены бонобо как таковой нет.
blockquote>
...
Однако основной сценарий использования bonobo, который внедряет одно приложение в другое (например, уборщик мусора в gnumeric, или (чуть более полезный) диаграмма dia в gnumeric), просто не так уж и много используется.список рассылки gnome-components 'Re: Что заменит bonobo?' (2005)
> О DBUS трудно сказать, что это будет замена когда-нибудь.
blockquote>
Первая проблема заключается в том, что это не система компонентов, а API для передачи сообщений.
Поверьте мне, есть определенные планы по внедрению какого-либо компилятора IDL для имитации RPC в стиле CORBA поверх сообщений D-BUS. Это произойдет рано или поздно.Ну, чёрт побери - я сам думаю, что «встраивание одного приложения в другое» в этом случае было очень полезно - запускать (хотя бы несколько) апплетов в Unity с удаленной поддержкой их
:)
Конечно, это было более-менее «счастливое» расположение пакетов рабочего стола в Natty, которое учитывало это (учитывая, что это все еще Gnome 2 и все еще имеет библиотекиbonobo
) - очевидно, более поздние версии, основанные на Gnome 3, имеютbonobo
полностью удален - и описанная выше техника Python-script-instantiation-in-a-window совершенно точно не сработает там:/
Последний вопрос: можем ли мы аналогичным образом использовать скрипт Python, но с привязками для
dbus
, чтобы достичь чего-то похожего на сценарий, основанный вышеbonobo
?Самое близкое, что я получил к этому, - это скрипт gtk_dbus_applet_widget.py , однако этот скрипт не вызывает апплет в окне - и даже не может добавить апплет на панель! Единственное, что он может сделать, это поговорить с «фабрикой» апплета через
dbus
и дать ему указание создать апплет; но этот апплет остается просто как данные где-то в файловой системе (, и он сохраняется при перезагрузках! ), и никогда не становится экземпляром в виде виджета Gnome ... И учитывая комментарии выше, я сомневаться, что-то подобное в настоящее время (ну, по крайней мере, у Натти) возможно сdbus
.В заключение - я думаю, что это, наряду с техникой
gnome-panel
, исчерпывает возможности легкомысленного запуска апплетов под Unity в Natty.
Для тех, кто все еще ищет что-то похожее, удобное и поддерживающее функцию «Категория заметок», есть заметки «Индикатор».
Установка:
sudo add-apt-repository ppa:umang/indicator-stickynotes
sudo apt-get update
sudo apt-get install indicator-stickynotes
Надеюсь, это поможет ... Наслаждайтесь!