Jak rozpoznać okno, klikając w Wayland


15

Chciałbym określić, do którego procesu należy okno w Wayland. Czy istnieje coś takiego jak xpropdla X, który pozwala użytkownikowi wybrać okno, klikając i wyświetla wszystkie szczegóły okna, w tym PID?


Wątpię, aby istniało lub kiedykolwiek będzie takie polecenie jak xprop. Jednym z głównych celów Wayland jest ograniczenie dostępu do okien innych procesów.
mviereck,

@mviereck Z pewnością administrator może zobaczyć informacje o oknie, nawet w Wayland?
Nathaniel M. Beaver

@bariumbitmap: Tylko jeśli kompozytor przekazuje te informacje poza własną pamięcią, na przykład w pliku lub przez interfejs API. Nie znam takiej specyfikacji (ale może ona istnieć). Oczywiście możesz rozwidlić kompozytora, takiego jak weston, i zaimplementować go samodzielnie, jeśli nie potrzebujesz ogólnego rozwiązania dla wszystkich kompozytorów.
mviereck

Dlaczego nie tylko xprop? Pokazuje okropnie dużo szczegółów przez okno za pośrednictwem XWayland, w tym _NET_WM_PID(CARDINAL), który jest procesem PID inicjatora.
istepaniuk

Odpowiedzi:


1

Dobra wiadomość, istnieje coś takiego wbudowanego w Gnome Shell, w przeciwieństwie xpropdo Xorg i Wayland. Ostatecznie może to wpaść w sferę innych narzędzi, jeśli używasz KDE, i3 lub czegoś innego.

Na początek wpisz na klawiaturze klawisze „ALT + F2”, co spowoduje wyświetlenie takiego menu:

alt ft

Po tym pojawia się polecenie lg(dla „lusterka”).

Spowoduje to wyświetlenie wyglądającego szklanego okna, z którego możemy wydobyć informacje o oknie. Wybierz „okno” w prawym górnym rogu lusterka:

sekcja okna

Tam zobaczysz listę okien, z której możesz kliknąć nazwę okna, które chcesz zidentyfikować.

lista

W tym przypadku wybrałem gedit na przykład:

gedit

W górnym wierszu tego wyniku można zauważyć:

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

„GType” będzie jednym z MetaWindowX11 lub MetaWindowWayland.

Te informacje pochodzą zgodnie z https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

Ja


3
Czy to pozwala ustalić PID procesu uruchamiającego wymienione okno?
czerny

0

Istnieje projekt xdg-foreignrozszerzenia protokołu , który pozwala uzyskać uchwyty wl_surface, utworzone przez innych klientów Wayland. Mając uchwyt, możesz uzyskać z niego wszystko, co możesz uzyskać z powierzchni swojego klienta. Jednak ten protokół wciąż ma ograniczenia:

  • Oczywiście nie będzie działać, jeśli nie zostanie zaimplementowany u klientów.
  • Jest przeznaczony dla klientów, którzy się znają , więc nie zapewnia sposobu, aby go uruchomić: klient komunikuje się w jakiś sposób z klientem zagranicznym, nieobjętym rozszerzeniem. Następnie klient zagraniczny publikuje uchwyt dla Twojego klienta za pośrednictwem tego rozszerzenia.
  • Zyskuje zbyt dużą kontrolę w porównaniu do xprop. W rzeczywistości możesz rysować nawet na obcych powierzchniach!

Jest więc mało prawdopodobne, aby stał się ogólnym sposobem uzyskiwania parametrów powierzchni od dowolnego klienta przez dowolnego klienta. Ale nie trać nadziei: istnieje wiele przykładów w historii technologii, gdy technologia, pierwotnie zaprojektowana do jakiegoś celu, stała się szeroko stosowana do innych celów, podobnie jak zapalniczki samochodowe lub interfejsy API ułatwień dostępu w systemie Android. Co więcej, w przyszłości może pojawić się rozszerzenie protokołu, które będzie bardziej odpowiednie dla twojego zadania, ponieważ jest to zdecydowanie potrzebne (na przykład do śledzenia czasu).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.