2009-04-20 2 views
1

"iconify"및 "show desktop?"과 같은 창 관리자의 표시/숨기기 명령을 gtk.Window 객체가 무시하도록하는 방법이 있습니까?PyGTK의 영구 Windows

바탕 화면에 붙어있는 영구 창을 만들려고합니다. 바탕 화면이 노출되었을 때 다른 창과 함께 사라지지 않습니다.

편집 : 내가 궁금한 점은 PyGTK를 사용하여 부두, 데스크톱 위젯, 시스템 트레이 등의 응용 프로그램에서 발견 된 동작을 재현 할 수 있는지 여부입니다.

+1

왜이 작업을 수행 하시겠습니까? 모든 창을 숨기기위한 사용자 요청을 무시하는 것은 매우 나쁜 습관 인 것 같습니다. –

+0

윈도우 위젯의 "바탕 화면 표시"기능이 쉽게 액세스 할 수있는 데스크탑 위젯과 비슷한 것을 만들기를 바랍니다.어쩌면 이것을 위해 Window 객체를 사용하는 것은 실수입니다. 나는 다른 제안에 열려 있습니다. – Evan

답변

2

당신은 그것을 거꾸로 잡았습니다. 창 관리자가 명령을 보내서 창을 최소화하도록 말한 것은 아닙니다. 창 관리자 은 창을 소유하고 있습니다. 창 매핑을 중지하려면 창에 허가를 요청하지 않고 그냥 수행합니다.

그래서 대답은 "아니오"라고 생각합니다. GtkWindowGdkWindowTypeHint을 설정

+0

그러면 내 질문에 더 일반적으로, PyGTK를 사용하여 데스크톱 위젯을 만드는 가장 좋은 방법은 무엇일까요? – Evan

+0

"끈적 끈적한"창에 대한 지원이 있는지 확인하십시오. 창을 최소화하지 않는 것이 관리자에게 적절한 힌트 일 수 있습니다. 또한 보통 모든 (가상) 데스크탑과 동일한 위치에 창을 표시하므로 좋을 수도 있습니다. – unwind

+0

나는 "끈적"한 속성에 대해 알고 있으며 꼭 그래야만 작동하지만, 의도 한대로 테스트 한 WMs 중 하나에서 영광을 얻지는 못합니다. – Evan

1

시도 :

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY); 

창문이 호출기 또는 작업 표시 줄에 표시하고 모든 데스크톱에 표시가 필요하지 않는 다양한 방법도있다. 이 모든 동작은 창 관리자의 지원에 달려 있음을 명심하십시오. 당신이 정말로 오래된 것을 사용하지 않는다면 이것은 문제가되지 않습니다.

+1

그리고 만약 당신이 정말로 오래된 것을 사용한다면 아마 더 쉬워 질 것입니다 :) – XTL

0

"이것을 어떻게 수행 할 것인가"라는 대답을 얻지 못했고 좀 더 많은 연구를 해본 결과, 내가 아는 한 PyGTK로 이런 종류의 기능을 구현할 수있는 쉬운 방법이 없다고 말할 수 있습니다 . 가장 좋은 옵션은 창 관리자 힌트를 설정하고 원하는대로 (원하는대로) WM을 수행하도록하는 것입니다.

0

내가 생각하면 gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)은 원하는 것입니다. GDK_WINDOW_TYPE_HINT_DOCK이기도하지만 창은 맨 위에 머물러 있으므로 다시 보낼 수 없습니다.

  • gtk.gdk.WINDOW_TYPE_HINT_DESKTOP
  • gtk.gdk.WINDOW_TYPE_HINT_DOCK

이 두 : 당신이 쇼 데스크탑 버튼을 클릭하면 만이 여전히 표시되는 list of window type hints에서

1

, 윈도우가 장식을 잃게 (즉, 테두리 나 제목 표시 줄이 없음) 이동/크기 조정이 앱에 달려 있습니다. DESKTOP은 창을 항상 다른 창 뒤에있게합니다. DOCK을 사용하면 항상 앞에 있습니다.

SPLASHSCREEN을 선택하면 바탕 화면 표시를 클릭했을 때 숨겨져있는 장식되지 않은 창이 나타납니다.

여전히 보여줍니다 경계선, 부동 창을 원하는 경우에 때 사용자가 클릭은 "바탕 화면"을 사용 :

window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK) 

당신은 호출하기 전에 window.show(). 창이 표시되면 유형을 변경할 수 없습니다.