Russian Qt Forum
Ноябрь 23, 2024, 19:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: библиотека NETWM для X11 систем  (Прочитано 4567 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Октябрь 04, 2010, 19:03 »

Клиентская библиотека для работы с 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/libqnetwm

P.S. В Qt работа с NETWM до сих пор почему-то не выделена в общедоступный класс, приходится дублировать код  Злой
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Октябрь 05, 2010, 09:44 »

Отлично!

Цитировать
В Qt работа с NETWM до сих пор почему-то не выделена в общедоступный класс
NETWM - не кроссплатформенно.

Можешь кстати пойти дальше и сделать кроссплатформенно. В винде можно тоже много что узнать об окружающих окнах и если все это свести под один интерфейс то будет вообще хорошо.
Записан

Гугль в помощь
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Октябрь 05, 2010, 17:27 »

NETWM - не кроссплатформенно.

В Qt есть некроссплатформенные классы, например QX11EmbedContainer, можно же аналогично сделать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 22.