Я конвертирую этот тест для заставки из кода 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
_NET_WM_WINDOW_TYPE
которого установлено значение_NET_WM_WINDOW_TYPE_MENU
. Это меню, оторванное от основного приложения и прикрепленное к рабочему столу. Вам не нужна никакая специальная библиотека, чтобы обнаружить это, просто используйте обычные функции манипулирования свойствами. Я не совсем понимаю, зачем это нужно скринсейверу. - person n. 1.8e9-where's-my-share m.   schedule 21.12.2014