Как определить окно, нажав в Wayland

15

Я хотел бы определить, к какому процессу относится окно в Wayland. Есть ли что-то похожее xpropна X, которое позволяет пользователю выбирать окно, щелкая и выводя все детали окна, включая PID?

Черни
источник
Я сомневаюсь, что есть или будет такая команда, как xprop. Одна из основных целей Wayland - ограничить доступ к окнам других процессов.
mviereck
@mviereck Конечно, суперпользователь мог видеть информацию об окне, даже в Вейленде?
Натаниэль М. Бивер
@bariumbitmap: только если композитор предоставляет эту информацию за пределами своей собственной памяти, например, в файле или через API. Я не знаю о такой спецификации (но она может существовать, хотя). Конечно, вы могли бы разветвить такой композитор, как weston, и реализовать его самостоятельно, если вам не нужно общее решение для всех композиторов.
mviereck
Почему не просто xprop? Он показывает очень много деталей по окну через XWayland, включая _NET_WM_PID(CARDINAL)PID процесса инициатора.
istepaniuk

Ответы:

1

Хорошая новость, в Gnome Shell есть нечто подобное, и в отличие от xpropXorg и Wayland. В конечном итоге, это может относиться к другим инструментам, если вы используете KDE, i3 или что-то еще.

Для начала, нажмите клавиши «ALT + F2» на клавиатуре, чтобы вызвать меню, подобное этому:

alt ft

После этого выполните команду lg(для «Зазеркалье»).

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

секция окна

Оттуда вы увидите список окон, из которых вы можете нажать на название окна, которое вы хотите идентифицировать.

список

В этом случае я выбрал gedit для примера:

Gedit

В верхней строке этого вывода вы можете заметить:

Inspecting object: object instance proxy GType: MetaWindowX11 ...`

«GType» будет одним из MetaWindowX11 или MetaWindowWayland.

Эта информация поступает в соответствии с https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

Я

Брайан Редберд
источник
3
Так позволяет ли это узнать PID процесса, выполняющего указанное окно?
Черни,
0

Существует проект xdg-foreignрасширения протокола , который позволяет получать дескрипторы wl_surface, созданные другими клиентами Wayland. Имея ручку, вы можете получить из нее все, что вы можете получить с поверхностей вашего клиента. Однако этот протокол все еще имеет ограничения:

  • Очевидно, что это не будет работать, если не реализовано в клиентах.
  • Он предназначен для клиентов, которые знают друг друга, поэтому он не обеспечивает способ его запуска: ваш клиент каким-то образом общается с иностранным клиентом, не охватываемым расширением. Затем иностранный клиент публикует дескриптор для вашего клиента через это расширение.
  • Он получает слишком много контроля, по сравнению с xprop. На самом деле, вы даже можете рисовать на инородных поверхностях!

Таким образом, вряд ли это станет общим способом получения параметров поверхности от любого клиента любым клиентом. Но не теряйте надежды: в истории технологий есть много примеров, когда технология, изначально предназначенная для какой-то цели, стала широко использоваться для других целей, например, автомобильные зажигалки или API доступа в Android. Более того, в будущем может появиться расширение протокола, более подходящее для вашей задачи, так как оно определенно необходимо (например, для таймеров).

bodqhrohro
источник