Wayland의 어떤 프로세스에 창이 속하는지 확인하고 싶습니다. xprop
사용자가 창을 클릭하여 선택하고 모든 창 세부 정보(PID 포함)를 출력할 수 있는 X와 같은 것이 있습니까 ?
답변1
xprop
좋은 소식은 Xorg 와 달리 Gnome Shell에 비슷한 기능이 내장되어 있다는 것입니다.그리고웨이랜드. KDE, i3 또는 기타 도구를 사용하는 경우 이는 결국 다른 도구의 도메인이 될 수 있습니다.
먼저 키보드에서 "ALT+F2"를 입력하면 다음과 같은 메뉴가 나타납니다.
나타난 후 명령 lg
("미러")을 실행하십시오.
그러면 창 정보를 추출할 수 있는 보기 유리 창이 열립니다. 거울의 오른쪽 상단에서 "창"을 선택하십시오.
여기에는 식별하려는 창 이름을 클릭할 수 있는 창 목록이 표시됩니다.
이 경우에는 예로 gedit를 선택했습니다.
이 출력의 첫 번째 줄에서 다음을 확인할 수 있습니다.
Inspecting object: object instance proxy GType: MetaWindowX11 ...
MetaWindowX11
"GType"은 또는 중 하나 입니다 MetaWindowWayland
.
이 정보는 다음에서 제공됩니다.https://fedoraproject.org/wiki/How_to_debug_Wayland_problems
답변2
이것이 특히 부족한 부분이라는 것을 깨닫고, 그렇게 하기 위해 기스트를 만들었습니다.
보다:wlprop
wlprop
터미널에 입력하고 창을 클릭하면 해당 창에 대한 스웨이 트리 출력이 제공됩니다.
$ wlprop
# A prompt to select a window will appear
{
"id": 72,
"type": "con",
"orientation": "none",
"percent": 0.5002881844380404,
"urgent": false,
"marks": [],
"focused": false,
"layout": "none",
"border": "pixel",
"current_border_width": 2,
"rect": {
"x": 0,
"y": 26,
"width": 868,
"height": 1130
},
"deco_rect": {
"x": 0,
"y": 0,
"width": 0,
"height": 0
},
"window_rect": {
"x": 2,
"y": 2,
"width": 864,
"height": 1126
},
"geometry": {
"x": 0,
"y": 0,
"width": 1328,
"height": 858
},
"name": "How to identify window by clicking in Wayland - Unix & Linux Stack Exchange — Mozilla Firefox",
"window": null,
"nodes": [],
"floating_nodes": [],
"focus": [],
"fullscreen_mode": 0,
"sticky": false,
"pid": 47844,
"app_id": "firefox",
"visible": true,
"max_render_time": 0,
"shell": "xdg_shell",
"inhibit_idle": false,
"idle_inhibitors": {
"user": "none",
"application": "none"
}
}
다음을 사용하여 특정 요소별로 필터링할 수 있습니다 jq
.
$ wlprop | jq -r '.name'
# The same prompt will appear
How to identify window by clicking in Wayland - Unix & Linux Stack Exchange — Mozilla Firefox
xprop
이 솔루션이 모든 사람의 마음에 있는 구멍을 메울 만큼 우아하기를 바랍니다.
답변3
가지다xdg-foreign
프로토콜 확장 초안wl_surface
, 다른 Wayland 클라이언트가 생성한 핸들을 얻을 수 있습니다 . 이 핸들을 사용하면 클라이언트 표면에서 얻을 수 있는 모든 것을 얻을 수 있습니다. 그러나 프로토콜에는 여전히 제한 사항이 있습니다.
- 분명히 클라이언트에서 구현되지 않으면 작동하지 않습니다.
- 그 타겟 고객은알다따라서 이를 트리거하는 방법을 제공하지 않습니다. 클라이언트가 어떻게든 외부 클라이언트와 통신하지만 확장은 포함되지 않습니다. 그런 다음 외부 클라이언트는 이 확장을 통해 클라이언트에 핸들을 게시합니다.
- 에 비해 너무 많은 제어력을 얻습니다
xprop
. 사실, 외국 표면에도 칠할 수 있습니다!
따라서 이는 모든 클라이언트가 모든 클라이언트로부터 표면 매개변수를 얻는 보편적인 방법이 아닐 가능성이 높습니다. 하지만 희망을 잃지 마십시오. 기술의 역사에는 원래 한 가지 목적으로 설계된 기술이 나중에 자동차 시가 라이터나 Android의 접근성 API와 같은 다른 목적으로 널리 사용되는 사례가 많이 있습니다. 또한, 미래에는 확실히 필요할 것이기 때문에 귀하의 작업에 더 적합한 프로토콜 확장이 나올 수도 있습니다(예: 시간 추적기).
답변4
Sway에서는 swaymsg -t get_tree
grep 과 유사 xprop
하지만 동시에 모든 창에 대해 grep 을 수행할 수 있습니다.