Нужны советы по разработке апплетов для Gnome / Ubuntu - PullRequest
5 голосов
/ 02 декабря 2009

Я - пользователь Linux (в основном Ubuntu) с разумным пониманием того, как работает система (хотя я, безусловно, , а не гуру Linux!). В прошлом я разрабатывал небольшие кроссплатформенные настольные приложения на python / GTK и доставлял их клиентам в виде автономных файловых деревьев, так что единственными зависимостями были сам Python и GTK.

Теперь Я хотел бы разработать небольшой апплет для Ubuntu , который я хотел бы выпустить под GPL 2 или 3.

В частности, это новые шаги Я знаю, что должен научиться , чтобы достичь своей цели (это очень возможно , есть еще несколько, о которых я не знаю, хотя !):

  • Интеграция с gnome: Я хочу, чтобы мое приложение было доступно в виде апплета на панели задач.
  • Использование D-bus: В частности, я хочу, чтобы мой апплет использовал новую среду osd-уведомлений для Ubuntu, но связь с другими апплетами также возможна для второй итерации.
  • Упаковка: Я хотел бы настроить публичный PPA, как только приложение достигнет альфа-стадии, но я также хотел бы использовать зависимости от существующих пакетов в официальных репозиториях, а не включать библиотеки снова в моей собственной упаковке.

Конечно, официальная документация будет моим первым источником знаний, но - исходя из моих очень полезных ответов, которые я получил по другой теме здесь, на SO - я решил обратиться к сообществу SO, чтобы собрать дополнительные советы, например:

  1. Существуют ли дополнительные шаги по сравнению с теми, которые я изложил ранее, которые я должен изучить, чтобы иметь возможность реализовать свой проект?
  2. Исходя из вашего собственного опыта, посоветуете ли вы мне изучить эти шаги заранее (поскольку их знание повлияет на мой способ кодирования основной функциональности) или вы бы рассмотрели интеграцию с gnome / d-bus и упаковкой как " более высокие уровни инкапсуляции », которые впоследствии могут быть добавлены в дополнение к основным функциям (примечание: сначала D-Bus будет использоваться только для передачи данных. Входные данные будут извлекаться с помощью веб-службы)?
  3. Не могли бы вы посоветовать мне разделить мое приложение на два пакета (внутреннее и внешнее) или оставить его вместе в одном пакете?,
  4. Знаете ли вы какой-нибудь полезный ресурс, на который вы бы посоветовали мне посмотреть, чтобы узнать что-нибудь из того, что мне нужно?
  5. Вам известны какие-либо распространенные "ошибки новичка", о которых мне следует знать?

Эти вопросы не являются исчерпывающими, однако: если вы чувствуете, что я что-то упускаю из общей картины, вам более чем приятно указать мне правильное направление!

PS: Если я не смог объяснить свою конечную цель, взгляните на project hamster : то, чего я хочу достичь, аналогично с точки зрения пользовательского интерфейса (то есть апплет должен отображать статус и щелкнув по нему, вы должны открыть само приложение, из которого вы можете настроить апплет и выполнить различные операции).

Ответы [ 4 ]

3 голосов
/ 02 декабря 2009

Как вы уже знаете, вашим первым и лучшим другом будет код, написанный другими - копируйте, вставляйте, анализируйте, разбирайтесь. К счастью, есть несколько проектов, которые делают то, что вы намерены достичь. Я могу порекомендовать код канала в качестве основного источника информации о том, как делать все чисто. Я думаю, что у них также есть материал на dbus. Другие, за которыми нужно следить, будут deskbar-applet , hamster (хех), и любое другое приложение, которое вы помните, имеет функцию X. Иногда это может потребовать некоторого дешифрования кода C ( как кнопка апплета - я советую вам лучше взять его у хомяка, так как у меня было много времени, чтобы разобраться в этом)

Тогда приложение «devhelp» окажет большую помощь - оно позволит вам быстро и легко читать и искать в справочных страницах. Убедитесь, что у вас также есть пакеты -doc для всех модулей, которые вы собираетесь использовать. Для пользовательского интерфейса я настоятельно рекомендую использовать glade, так как это позволит вам значительно позже изменить интерфейс. Там, где вы не можете использовать поляну - добавьте и выровняйте блок и добавьте виджет в блок в коде. Там наверняка будут причуды и вещи, которые вы выучите трудным путем. Хотя не должно быть слишком сложно!

С упаковкой, особенно с автоинструментами, будет немного проблем, но вы все сделаете правильно. Чтобы узнать, как делать дебианы (и оттуда в PPA), вы можете покопаться в истории хранилища хомяка. Когда-то была папка "debian".

Я бы предложил начать с малого - посмотрите, сможете ли вы получить окно. Тогда поместите кнопку в это. Вы не должны делать это "правильно" в первый раз. В первый раз все будет хорошо, если что-то сработает.

Что касается разделения - я не стал бы беспокоиться об этом, пока вы не доберетесь туда. Разделение на две части и получение ядра не должно быть слишком сложным позже. Но все зависит от ваших приоритетов.

Последнее, что помогает найти друзей, которые знают поле. И один из способов найти новых друзей - это участвовать в других проектах, хех.

3 голосов
/ 02 декабря 2009

Ну, вы перечислите python, так что вы захотите иметь pynotify в своем арсенале. Он оборачивает DBus и предоставляет вам прямой API для управления системой osd-уведомлений.

>>> import pynotify
>>> pynotify.init("Lil' Applet")
True
>>> note = pynotify.Notification(
...            pynotify.get_app_name(), 
...            "Lil' Applet wants you to know something's up.", 
...            "/usr/share/icons/Human/48x48/status/dialog-information.png")
>>> note.show()
True

Отображает уведомление, которое выглядит следующим образом:

[    ] **Lil' Applet**
[ICON]
[    ] Lil' Applet wants you to know something's up.
1 голос
/ 09 ноября 2011

Когда я задал этот вопрос два года назад, Ubuntu и Gnome были намного ближе друг к другу, чем сегодня. В настоящее время (конец 2011 года) gnome принял оболочку gnome, а Canonical решила разработать собственный интерфейс ( unity ) ...

Часть напряженности, которая привела к расколу , конкретно связана с libappindicator , что делает мой способ формулирования этого вопроса (и, вероятно, часть ответов) устаревшим.

Кроме того, теперь на стеке есть AskUbuntu , который, вероятно, был бы гораздо лучшим форумом, чтобы задавать вопросы по ubuntu.

1 голос
/ 03 декабря 2009

Здесь уже есть несколько очень хороших рекомендаций, но позвольте мне предложить вам разработать апплет не столько "для Ubuntu", сколько "для Gnome". Для того, чтобы назвать два примера, не нужно много дополнительных усилий для создания RPM-пакетов для таких дистрибутивов, как Fedora и Arch Linux. Однако есть один существенный недостаток - чтобы оставаться совместимым со стабильной версией Debian, вы должны придерживаться старых версий GTK и GLib или, по крайней мере, делать любую функциональность, в зависимости от новых версий, необязательной. Это больно, но, очевидно, стабильные пользователи Debian это ценят.

Я бы также предложил как можно раньше настроить систему управления исходным кодом. Возможно, вас не беспокоит сбой вашего диска, но иногда это избавляет вас от многих проблем, если вы просто можете вернуть все, что вы сделали со времени последнего коммита.

Здесь - ссылка на документацию по официальной библиотеке апплетов Gnome Panel. Я не знаю, есть ли у него привязки Python или нет.

...