Wayland를 클릭하여 창을 식별하는 방법

Wayland를 클릭하여 창을 식별하는 방법

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_treegrep 과 유사 xprop하지만 동시에 모든 창에 대해 grep 을 수행할 수 있습니다.

관련 정보