Функции перечисления меню в X11?

Я конвертирую этот тест для заставки из кода Linux в js-ctypes.

Он активно использует X11, но я не могу найти никаких функций меню.

Это код, который я пытаюсь преобразовать:

1012     XMenuList::GetInstance()->InsertMenuWindowXIDs(&windows);
1013     // Enumerate the menus first.
1014     for (iter = windows.begin(); iter != windows.end(); iter++) {
1015       if (delegate->ShouldStopIterating(*iter))
1016         return true;
1017     }
1018     windows.clear();

этот код находится здесь: http://mxr.mozilla.org/chromium/source/src/ui/base/x/x11_util.cc#1012

В основном я пытаюсь перечислить через окна, но они также проверяют меню при поиске заставки.

Я наткнулся на эту заметку:

X11 сам по себе не делает меню. Вот почему были созданы такие наборы инструментов, как GTK, Qt, Motif и т. д.

http://www.linuxquestions.org/questions/programming-9/x11-menus-how-to-839904/

Означает ли это, что я должен ctypes.open использовать другую библиотеку, отличную от X11, кто-нибудь знает, какую именно? Я не могу найти.

Спасибо

Это мой код в работе: https://github.com/Noitidart/_scratchpad/blob/master/ScreensaverWindowExists.js#L365

Это страница freedocs, которую я использую для функций x11: http://www.xfree86.org/4.4.0/manindex3.html


person Noitidart    schedule 21.12.2014    source источник
comment
Не совсем понятно, какие меню вы имеете в виду. X11 не имеет понятия меню, как правильно сказано в примечании, которое вы цитируете. Инструментарий может помочь вашей программе реализовать меню, он не вводит меню в X-сервер и не может помочь вам обнаружить меню, реализованные другими программами. Что означает перечисление меню в X11?   -  person n. 1.8e9-where's-my-share m.    schedule 21.12.2014
comment
Хорошо, если вы посмотрите здесь, вы можно увидеть, что меню для Mozilla — это просто окно, для свойства _NET_WM_WINDOW_TYPE которого установлено значение _NET_WM_WINDOW_TYPE_MENU. Это меню, оторванное от основного приложения и прикрепленное к рабочему столу. Вам не нужна никакая специальная библиотека, чтобы обнаружить это, просто используйте обычные функции манипулирования свойствами. Я не совсем понимаю, зачем это нужно скринсейверу.   -  person n. 1.8e9-where's-my-share m.    schedule 21.12.2014
comment
Спасибо @n.m. !! другие, если вы знаете, почему Google Chrome делает код выше меню перечисления 1-го, пожалуйста, дайте мне знать :)   -  person Noitidart    schedule 21.12.2014
comment
@н.м. не могли бы вы переместить свои комментарии в решение, если бы не вы, я бы потерялся до сих пор, я серьезно ценю ваши комментарии, даже если вы не парень jsctypes. Спасибо!!   -  person Noitidart    schedule 25.12.2014


Ответы (1)


Если вы посмотрите на источник здесь , вы можете видеть, что меню для Mozilla — это просто окно, для свойства _NET_WM_WINDOW_TYPE которого установлено значение _NET_WM_WINDOW_TYPE_MENU.

Стандарт рабочего стола говорит, что такие окна представляют собой меню, которые «оторваны» от основного окна приложения и прикреплены к рабочему столу. Вам не нужна никакая специальная библиотека, чтобы обнаружить это, просто используйте обычные функции манипулирования свойствами.

Я не совсем понимаю, зачем это нужно скринсейверу.

person n. 1.8e9-where's-my-share m.    schedule 25.12.2014