Постоянные окна в PyGTK - PullRequest
       17

Постоянные окна в PyGTK

1 голос
/ 20 апреля 2009

Есть ли способ заставить объект gtk.Window игнорировать команды show / hide диспетчера окон, такие как "iconify" и "show desktop?"

Я пытаюсь создать постоянное окно, прикрепленное к рабочему столу, которое не исчезнет со всеми другими окнами, когда рабочий стол открыт.

РЕДАКТИРОВАТЬ: Я думаю, что мне особенно интересно, возможно ли воспроизвести поведение, обнаруженное в приложениях, таких как доки, виджеты рабочего стола, системные лотки и т. Д. С использованием PyGTK?

Ответы [ 5 ]

2 голосов
/ 21 апреля 2009

Ты получил это задом наперед; это не оконный менеджер, который приказывает свернуть окно, отправив ему команду. Диспетчер окон владеет окном, если он хочет прекратить отображение окна, он просто сделает это, не спрашивая у окна разрешения.

Так что я думаю, что ответ "нет".

1 голос
/ 08 октября 2013

Из списка подсказок типа окна только две из них по-прежнему отображаются при нажатии кнопки Показать рабочий стол:

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

И то, и другое приводит к тому, что ваше окно теряет декорации (т.е. нет границ или заголовка), поэтому перемещение / изменение размера зависит от вашего приложения. DESKTOP заставляет окно всегда быть позади других окон. ДОК заставляет это быть всегда впереди.

Выбрав SPLASHSCREEN, вы получите окно без декора, которое все еще скрывается, когда вы нажимаете «Показать рабочий стол».

Если вам нужно неподвижное окно без полей, которое все еще отображается, когда пользователь нажимает кнопку «показать рабочий стол», используйте:

window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

перед вызовом window.show (). После того, как окно было отображено, вы не можете изменить его тип.

1 голос
/ 24 апреля 2009

Попробуйте установить GdkWindowTypeHint на GtkWindow:

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);

Существуют также различные способы, чтобы ваше окно не отображалось на пейджерах или панелях задач и не отображалось на всех компьютерах. Имейте в виду, что все это поведение зависит от поддержки оконного менеджера. Если вы не используете что-то действительно старое, это не должно создавать проблем.

0 голосов
/ 29 марта 2011

Я думаю gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN) это то, что вы хотите. Это также GDK_WINDOW_TYPE_HINT_DOCK, но тогда окно остается поверх всех, и вы не можете отправить его обратно.

0 голосов
/ 23 июня 2009

Не получив ответа «вот как это сделать» и проведя немного больше исследований, я могу сказать, что - насколько я знаю - нет простого способа достичь такого рода функциональности с PyGTK. Наилучшие варианты - установить подсказки оконного менеджера и оставить на усмотрение WM возможность делать то, что вы хотите (надеюсь).

...