Настольное интегрированное приложение (как виджет рабочего стола) - PullRequest
5 голосов
/ 08 июня 2011

В настоящее время я играю с идеей написать приложение для моей персональной системы, интегрированное с рабочим столом, которое должно работать подобно обычным движкам виджетов на рабочем столе (скриншоты, гдесклеты, гаджеты Google). Он должен дать мне полный обзор различной информации о моей системе из Интернета и, наконец, визуализировать ее на моем рабочем столе. Он должен централизовать всю мою ежедневную необходимую информацию.

Самым простым способом было бы, конечно, написать свои собственные виджеты для одного из известных движков виджетов рабочего стола, но я бы предпочел написать его с нуля. Поэтому в настоящее время я ищу некоторые подсказки реализации, как я могу создать глобальное представление на рабочем столе, которое не украшено границами, заголовками и чем-то еще оконным менеджером и не имеет цвета фона. Особой прозрачности X% -эффекты не нужны, где понадобится compiz.

Хорошим примером для этого может послужить дополнительная поддержка libcario для рисования. Я также выбрал бы больший графический набор инструментов, такой как GTK + или QT. Непосредственное использование для более сложного интерфейса API X11 также было бы возможным. Предпочтительными языками являются C и C ++.

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

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Существует два способа создания окна без полей: (1) полностью обойти оконный менеджер и (2) использовать оконный менеджер.

Первый простой, но ограничивающий (вам придется управлять, например, перетаскиванием окон и размещением на виртуальных рабочих столах самостоятельно).Это делается путем создания окна с флагом override-redirect.

Второй метод заключается в настройке свойств окна (как в xprop), известных как подсказки WM.Если вы хотите сделать это с необработанным Xlib, вам нужно изучить ICCCM .Большинство наборов инструментов, таких как gtk +, имеют API для установки подсказок WM.

Для простой «прозрачности» типа «да-или-нет» существует API XShape (технически это расширение, то есть дополнительная часть X11,но он присутствует почти везде).Или вы можете просто создать окно с фоном, установленным на None (однако этот подход может иметь проблемы с компоновкой оконных менеджеров, например, Compiz).Или вы можете просто отказаться от окон приложений и рисовать прямо в (виртуальном) корневом окне.Предположительно libcairo позволит вам сделать то же самое, но я не знаком с этим.

Надеюсь, это поможет.

1 голос
/ 08 июня 2011

Вы не сказали, на какую операционную систему вы ориентируетесь, но я предполагаю, что дистрибутив linux.

Прежде всего ваш оконный менеджер должен поддерживать окна без полей и без отделки.

Тогда вам нужно выбрать язык (с и с ++ совершенно разные). Если вы выберете c ++, тогда Qt выглядит как очевидный выбор.

Для Qt легко создать окно без полей: Создание окна без полей для Qt

...