GTK+ 또는 GDK는 Xlib 또는 Xlib-xcb를 직접 호출하거나 x 이벤트를 수신하는 방법을 제공합니까?

GTK+ 또는 GDK는 Xlib 또는 Xlib-xcb를 직접 호출하거나 x 이벤트를 수신하는 방법을 제공합니까?

현재 Xlib-xcb 및 GTK+를 사용하여 애플리케이션을 컴파일하고 실행하는 데 아무런 문제가 없습니다. 하지만 두 가지를 함께 통합하여 사용할 수 있는 방법을 찾지 못했습니다. 예를 들어, xcb 픽스맵의 영역을 GDK나 GTK+ 픽스맵이나 다른 GTK나 GDK 객체의 창에 복사할 수 있다면 좋을 것입니다. 또는 GTK 이벤트와 혼합된 x 이벤트를 수신합니다. 현재 동일한 애플리케이션에서 GTK를 사용하려면 xcb_wait_for_event()를 사용하여 별도의 스레드를 사용하여 이벤트 루프를 실행합니다. GTK+가 정기적인 x 이벤트를 제공할 수 있는 방법이 있나요?

현재 Xlib-xcb와 GTK+의 호출을 혼합하는 프로그램을 실행할 때 Ubuntu 응용 프로그램 실행 표시줄에 두 개의 아이콘이 표시됩니다. 괜찮습니다. 단지 짜증스러울 뿐입니다. 이는 별도의 표시 변수(Xlib용)와 xcb_connection_t 변수(xcb 호출용)를 사용해야 하기 때문이라고 확신합니다. 창 관리자는 X11을 사용하는 두 개의 응용 프로그램이 있다고 가정해야 합니다.

나는 단지 취미생활을 즐기는 사람일 뿐이고, 재미를 위해 그리고 나 자신을 가르치기 위해 이 일을 합니다. 그래서 “왜 그러는 거야”, “좋은 생각이 아니야”라는 반응이 합리적이더라도 나는 여전히 하고 싶고 나쁜 생각이라도 상관하지 않는다. 정말 재미 있었어요! 나는 한 영역에서 다른 영역으로 이미지 데이터를 가져올 수 있는 몇 가지 패치워크를 생각해 보았지만 GTK+ 또는 GDK에서 Xlib-xcb를 직접 호출하고 동일한 데이터 연결을 공유할 수 있는 방법을 찾고 싶습니다. 내가 찾지 못한 것.

모두 클라이언트 응용 프로그램이므로 X11 서버에 대한 연결은 하나만 갖는 것이 합리적입니다. 그렇죠?

문제 없이 이벤트를 얻을 수 있으며 포인터, 키보드 등을 잡지 않는 한 GTK+ 쪽은 잘 작동합니다.

네, 그건 정말 나쁜 생각인 것 같네요! 왜 이 일을 해야 합니까? 나는 모른다. 정말 흥미롭습니다.

그런데 Cairo는 픽스맵을 표면으로 사용하거나 픽스맵에서 렌더링되는 표면을 만들 수 있습니다. 기술 용어는 잘 모르겠습니다. 저는 X Windows 문자 통화 대신 문자 통화에 Cairo를 사용합니다.

관련 정보