Клиентская библиотека для работы с NETWM-совместимым оконным
приказчиком менеджером. Содержит большинство популярных атомов, которые могут использоваться при работе с NETWM. Также содержит некоторые методы для быстрого доступа к оным. Лицензия - GPL3+.
Для чего нужно: поговорить по душам с современным NETWM-совместимым оконным менеджером и другими открытыми окнами. Например, можно получить количество сконфигурированных рабочих столов, их имена, можно активировать или закрыть какое-либо окно, переключиться на другой рабочий стол, и т.д.
Библиотека использует Qt, но в принципе может быть легко переписана на что-то другое (Glib, STL).
Пример:
C++ (Qt)
#include <QApplication>
#if defined(Q_WS_X11)
#include "netwm.h"
#else
#error This program will work only in X11
#endif
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
NETWM::init();
QList<Window> list = NETWM::netwmWindowList();
uint desktops = NETWM::netwmDesktopsNumber();
qDebug("Window manager uses composite extension: %s", NETWM::isComposite() ? "yes" : "no");
qDebug("Window ids currently available:");
foreach(Window w, list)
{
qDebug("%ld", w);
}
qDebug("Number of desktops: %u", desktops);
return 0;
}
$ ./example
Window manager uses composite extension: no
Window ids currently available:
27263207
27263265
8388647
35652075
41943043
46137582
25165828
Number of desktops: 2
Обновления, если будут, то будут появляться на
http://code.google.com/p/libqnetwmP.S. В Qt работа с NETWM до сих пор почему-то не выделена в общедоступный класс, приходится дублировать код