LINUX.ORG.RU

История изменений

Исправление 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 из твоей поставки?