Всплывающие окна рисования в X11

Я хотел бы нарисовать всплывающее окно в X11. Что-то вроде ползунка, который появляется в KDE и GNOME при нажатии кнопок регулировки громкости или яркости. Вот как это выглядит в GNOME: ползунок яркости в GNOME

Какую библиотеку я должен использовать для создания таких всплывающих окон (в отличие от обычных окон, они должны быть без границ и т. д. и, возможно, с некоторой прозрачностью)? Было бы неплохо, если бы были привязки для Python.


person Marek Sapota    schedule 26.04.2011    source источник


Ответы (1)


Это делается в GTK+. Самым простым может быть найти код, который создает это, и скопировать то, что он делает (в моей системе есть другой уведомитель громкости, мне нелегко найти код для него).

Примерно то, что вы должны сделать, это создать GtkWindow, set_decorated(FALSE), set_position(GTK_WIN_POS_CENTER), что-то в этом роде.

Я не уверен в лучшем set_type_hint(). Возможно, TYPE_HINT_NOTIFICATION или TYPE_HINT_SPLASHSCREEN. Если вы устанавливаете подсказку типа, возможно, нет необходимости в set_decorated или set_position, так как подсказка типа может подразумевать подсказку со многими оконными менеджерами.

person Havoc P    schedule 27.04.2011
comment
Спасибо! Установка подсказки типа на TYPE_HINT_DOCK делает ее именно такой, как я хочу =) - person Marek Sapota; 28.04.2011
comment
DOCK, вероятно, вводит в заблуждение; оконный менеджер может законно делать что-то, что имеет смысл только для реальных доков, например, не допускать перекрытия развернутых окон. NOTIFICATION и SPLASHSCREEN уже как бы подталкивают его. - person Havoc P; 29.04.2011
comment
В pygtk нет УВЕДОМЛЕНИЯ, и SPLASHSCREEN может быть закрыт другими окнами, если set_keep_above не установлен. С set_keep_above SPLASHSCREEN действительно может быть лучше. - person Marek Sapota; 29.04.2011
comment
вы также можете попробовать NORMAL с установленным выше, украшенным набором и т. д. - person Havoc P; 29.04.2011