2011-03-22 4 views
6

FvwmButtons (fvwm 창 관리자 모듈)에는 응용 프로그램 창을 패널에 임베드하는 Swallow 기능이 있습니다.응용 프로그램을 창에 임베드

Motif 및 Xlib에서 이와 같이해야합니다. 내 응용 프로그램에 Xclock을 포함시키고 싶습니다. 나는 임베디드 애플 리케이션의 Window ID를 변경해야한다고 생각한다.

어떻게하면됩니까?

답변

5

지원되는 신뢰할 수있는 메커니즘은 XEmbed 뿐이지 만 임베디드 앱이 협력해야합니다. 협력 앱이 없다면 무서운 해킹 세계에 빠지게 될 것입니다.

XReparentWindow()하지만 당신이해야 할 기본적인 문제는 당신이 창을 다시 부모로 만들고 싶어하는 창 관리자와 싸우고 있다는 것입니다. 또한 잠재적으로 ICCCM 및 EWMH 동작을 예상하고 부모 창을 WM 프레임으로 예상하는 응용 프로그램을 혼란스럽게합니다.

그놈 패널의 그놈 1.x 버전은 실제로 해킹을 도용 할 수있는 제비 기능을 가지고있었습니다.

매우 광범위한 X 지식이 없으면 고통 스러우며 도 100 % 신뢰할 수있는 것은 아닙니다.

+0

재미있다! 감사! 'XReparentWindow()'는 내가 원하는 것이다. 이제 오른쪽 창을 열어야합니다. 나는'XQueryTree()'로 시도하지만 특정 창을 얻는 방법을 모른다. – mghis

+1

특정 창을 얻으려면 클래스 힌트 (XGetClassHint)를보고 싶을 것입니다. WM_STATE 속성을 가지고 있으므로 최상위 창 (창 관리자 프레임과 반대)을 찾을 수 있습니다. –

2

here으로 문서화 된 XEmbed 프로토콜을 찾는 것처럼 보입니다.

+0

고마워, 내가 필요한 것. 당신이 링크 한 스펙을 이해할 수 있다고 생각하지만, 예제 코드를 게시 할 수 있다면 좋겠다. – mghis