비클라이언트 영역에서 X 창 속성 읽기

비클라이언트 영역에서 X 창 속성 읽기

X 윈도우(창 관리자 창)의 비클라이언트 영역 속성을 읽는 방법은 무엇입니까? XChangePropertyC 프로그램에서 X 속성을 설정했습니다 . 마우스를 통해 비클라이언트 영역(즉, 창의 제목 표시줄)을 사용하고 선택할 때 xprop내 응용 프로그램에서 생성된 창의 속성이 표시되지 않습니다 . 두 가지 시나리오를 모두 테스트했습니다. 사용하는 경우 xprop 8s name_of_non_registered_propertyxprop 8s name_of_registered_property메시지가 다르기 때문에 XAtom을 올바르게 생성합니다.

저는 Plasma5.15에서만 xprop를 테스트했습니다(KWin은 X.org에서 작동합니다).

GTK+2와 XCB(또는 XLib) 코드를 혼합하고 있습니다. XListProperty를 사용하면 내 원자의 이름이 XGetAtomName이전 함수에 대한 이전 호출의 요소 에 표시되고 그 결과는 (C stdlib) XGetAtomName에 저장됩니다 . puts메인 루프가 처음 호출될 때 GTK가 문제를 일으키는 것은 아닐까? 내 속성을 추가하기 전에 창에 대해 알고있었습니다.

제 생각에는 시스템 문제보다는 프로그래밍 문제에 더 가깝습니다.

> xwininfo -all -root
....
0xba00001 "program": ("program" "Program")  10x10+10+10  +10+10
    1 child:
    0xba00002 (has no name): ()  1x1+-1+-1  +9+9
...
>xprop -id 0xba00001
 WM_CLASS(STRING) = "program", "Program"
 WM_COMMAND(STRING) = { "program" }
 _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0xba00002
 _KDE_NET_WM_USER_CREATION_TIME(CARDINAL) = 29562975
 WM_CLIENT_LEADER(WINDOW): window id # 0xba00001
 _NET_WM_PID(CARDINAL) = 25223
 WM_LOCALE_NAME(STRING) = "pl_PL.UTF-8"
 WM_CLIENT_MACHINE(STRING) = "linux-rvnb"
 WM_NORMAL_HINTS(WM_SIZE_HINTS):
                 program specified size: 10 by 10
>xprop -id 0xba00002
>

답변1

이 명령은 모든 하위 키를 인쇄합니다.

xwininfo -all -root

모든 창 관리자가 루트 창을 사용하여 배경을 표시하는 것은 아닙니다. 클라이언트가 아닌 영역을 클릭하면 배경을 보여주는 창에 대한 정보가 표시됩니다. 루트 창에 대한 정보를 표시하려면 다음을 사용하십시오.

xprop -root

원자를 올바르게 설정하면 xprop읽을 수 있습니다. 명령의 형식 부분 xprop은 필요하지 않습니다.

xprop name_of_registered_property

원자가 있는 창을 찾으려면 모든 하위 항목을 반복해야 할 수도 있습니다.

wm 코드를 작성하지 않는 경우 제목 표시줄을 무시해야 합니다. 이는 클라이언트 측이 아닌 wm 내부 구성 요소이며 이벤트를 등록하지 않을 수 있습니다.

관련 정보