Исправление Zubok, (текущая версия) :
Если эта штука работает, то ее можно совместно с xcb_get_property использовать. Для начала надо проверить, какая версия X-Resource Extension на сервере (есть специальный запрос xcb, который позволяет выяснить версию расширения). Если вовзратит 1.0, то уже xcb_res_query_client_id не использовать, так как она только в 1.2 появилась. Тогда надо фолбэк делать на xcb_get_property и проверять через _NET_WM_PID. Может быть, есть смысл делать наоборот: сначала через _NET_WM_PID, а потом уже, если не установлен там PID, через xcb_res_query_client_ids (с проверкой версии расширения). Сейчас не могу сказать точно, какой метод надежнее. _NET_WN_PID установливается приложением или тулкитом. Там, где тулкит это не делает, там свойство должно устанавливаться специально. Вот, например, xterm хоть и не gtk/qt, но свойство устанавливает.
Если в обоих случаях пусто, то надо думать какую-то эвристику, но думаю, что это такая эвристика не будет надежной.
Есть утилита xrestop, которая использует X-Resource Extension, но она PID берет через _NET_WM_PID, а не через xcb_res_query_client_ids. Вполне возможно, что это из-за того, что этого запроса еще к моменту написания утилиты не было. Не могу точно сказать. Но проверить надо!
И это попробую, но я не знаю, есть ли у меня vapi на это дело.
Это что имеется в виду? Реализован ли запрос в xcb из твоей поставки?
Исправление Zubok, :
Если эта штука работает, то ее можно совместно с xcb_get_property использовать. Для начала надо проверить, какая версия X-Resource Extension на сервере (есть специальный запрос xcb, который позволяет выяснить версию расширения). Если вовзратит 1.0, то уже xcb_res_query_client_id не использовать, так как она только в 1.2 появилась. Тогда надо фолбэк делать на xcb_get_property и проверять через _NET_WM_PID. Может быть, есть смысл делать наоборот: сначала через _NET_WM_PID, а потом уже, если не установлен там PID, через xcb_res_query_client_ids (с проверкой версии расширения). Сейчас не могу сказать точно, какой метод надежнее. _NET_WN_PID установливается приложением или тулкитом. Там, где тулкит это не делает, там свойство должно устанавливаться специально. Вот, например, xterm хотьи не gtk/qt, но свойство устанавливает.
Если в обоих случаях пусто, то надо думать какую-то эвристику, но думаю, что это такая эвристика не будет надежной.
Есть утилита xrestop, которая использует X-Resource Extension, но она PID берет через _NET_WM_PID, а не через xcb_res_query_client_ids. Вполне возможно, что это из-за того, что этого запроса еще к моменту написания утилиты не было. Не могу точно сказать. Но проверить надо!
И это попробую, но я не знаю, есть ли у меня vapi на это дело.
Это что имеется в виду? Реализован ли запрос в xcb из твоей поставки?
Исправление Zubok, :
Если эта штука работает, то ее можно совместно с xcb_get_property использовать. Для начала надо проверить, какая версия X-Resource Extension на сервере (есть специальный запрос xcb, который позволяет выяснить версию расширения). Если вовзратит 1.0, то уже xcb_res_query_client_id не использовать, так как она только в 1.2 появилась. Тогда надо фолбэк делать на xcb_get_property и проверять через _NET_WM_PID. Может быть, есть смысл делать наоборот: сначала через _NET_WM_PID, а потом уже, если не установлен там PID, через xcb_res_query_client_ids (с проверкой версии расширения). Сейчас не могу сказать точно, какой метод надежнее.
Если в обоих случаях пусто, то надо думать какую-то эвристику, но думаю, что это такая эвристика не будет надежной.
Есть утилита xrestop, которая использует X-Resource Extension, но она PID берет через _NET_WM_PID, а не через xcb_res_query_client_ids. Вполне возможно, что это из-за того, что этого запроса еще к моменту написания утилиты не было. Не могу точно сказать. Но проверить надо!
И это попробую, но я не знаю, есть ли у меня vapi на это дело.
Это что имеется в виду? Реализован ли запрос в xcb из твоей поставки?
Исходная версия Zubok, :
Если эта штука работает, то ее можно совместно с xcb_get_property использовать. Для начала надо проверить, какая версия X-Resource Extension на сервере (есть специальный запрос xcb, который позволяет выяснить версию расширения). Если вовзратит 1.0, то уже xcb_res_query_client_id не использовать, так как она только в 1.2 появилась. Тогда надо фолбэк делать на xcb_get_property и проверять через _NET_WM_PID. Может быть, есть смысл делать наоборот: сначала через _NET_WM_PID, а потом уже, если не установлен там PID, через xcb_res_query_client_ids (с проверкой версии расширения). Сейчас не могу сказать точно, какой метод надежнее.
Если в обоих случаях пусто, то надо думать какую-то эвристику, но думаю, что это такая эвристика не будет надежной.
Есть утилита xrestop, которая использует X-Resource Extesion, но она PID берет через _NET_WM_PID, а не через xcb_res_query_client_ids. Вполне возможно, что это из-за того, что этого запроса еще к моменту написания утилиты не было. Не могу точно сказать. Но проверить надо!
И это попробую, но я не знаю, есть ли у меня vapi на это дело.
Это что имеется в виду? Реализован ли запрос в xcb из твоей поставки?