X 윈도우(창 관리자 창)의 비클라이언트 영역 속성을 읽는 방법은 무엇입니까? XChangeProperty
C 프로그램에서 X 속성을 설정했습니다 . 마우스를 통해 비클라이언트 영역(즉, 창의 제목 표시줄)을 사용하고 선택할 때 xprop
내 응용 프로그램에서 생성된 창의 속성이 표시되지 않습니다 . 두 가지 시나리오를 모두 테스트했습니다. 사용하는 경우 xprop 8s name_of_non_registered_property
와 xprop 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 내부 구성 요소이며 이벤트를 등록하지 않을 수 있습니다.