2016-09-04 6 views
1

xlib를 사용합니다. 창 위치를 기억하고 다음에 시작할 때 그 위치로 복원하고 싶습니다. 이것은 사용자가 매 시작할 때마다 창을 원하는 위치로 이동/크기 조정할 필요가 없으므로 사용자를 도울 것입니다.리눅스에서 윈도우 상태 확인 및 복원

한 가지 경우를 제외하고 어느 정도 작동합니다. 창을 최대화하면 실제 (최대화되지 않은) 크기와 위치를 결정할 수있는 방법을 찾을 수 없습니다. 아마도 누군가 그것을하는 방법을 알고 있습니까?

+0

당신이 우리에게 코드를 보여 좁힐 수 있습니다 조금 질문 하나? 지금 당장 요구하는 것은 너무 광범위하여 유용하지 않기 때문입니다. –

+1

최대화되지 않은 상태에서 변경 될 때마다 형상을 기억하십시오. 이렇게하면 가장 최근의 지오메트리가 최대화되기 전에이를 알 수 있습니다. –

+1

Windows에서 GetWindowPlacement()와 비슷한 창 관리자에서 가져올 수있는 방법이 없다는 것을 이해하고 있으며 변경 내용을 추적해야합니다. 그러나 창 관리자는 크기를 변경하기 전이나 후에 최대화 속성을 설정할 수 있습니다. 최대화의 결과로 창 크기가 변경 될 때 이미 설정된 최대화 속성을 믿을 수 있습니까? – PineForestRanch

답변

2

표준 방법을 알고 있습니다. 예를 들어 Metacity 소스를 읽으면 MetaWindow 개체에서이 최대화되지 않은 크기를 유지하지만 속성에 저장되는 것으로 생각하지 않으며 EWMH 또는 ICCCM 사양에서이 속성을 볼 수 없습니다 .

일부 특정 창 관리자가 비표준 속성에이를 저장할 수도 있습니다.

창이 최대화되면 maximization 플래그로 속성 변경 이벤트를 얻을 수 있습니다 (libwnck는 이런 종류의 것을 추적하기위한 오래된 라이브러리입니다. 아마도 내가 모르는 새로운 것이있을 것입니다). 그러나 크기 조정이 플래그를 설정하기 전후에 발생하는지 여부가 정의되었는지는 의문의 여지가 있습니다. 아마도 최대화 플래그를 설정 한 후 1 초 이내에 화면의 대부분을 차지하는 크기 조정이 최대화 또는 유사한 해킹이라고 경험적으로 가정 할 수 있습니다.

모두이 기능을 사용하는 가장 쉬운 방법은 창 관리자 확장 또는 플러그인으로 구현하는 것입니다.이 기능은 많은 WM이 어떤 식 으로든 지원합니다.

이 (X 세션 관리 프로토콜)에 대한 구버전은 유감스럽게도 사양이 엄청나게 깨졌으며 명확하지 않으며 구현하기가 본질적으로 불가능합니다. 해결되지 않은 핵심 문제 (해결해야 할 앱 협력이 필요할 수도 있음)는 재시작 할 때 "동일한"창을 인식하여 크기를 복원하는 방법입니다. 결함이있는 발견법 만 있습니다.

은 (내가 metacity를 쓰고 오래 전에 내가 더 많은 당신에게 한 수 후 몇 세션 관리자에 근무하지만 많은 세부 사항을 잊어 버렸습니다.)