Ruby и Ubuntu Notify-OSD
Я использую ruby-libnotify в приложении Ruby GTK, и он прекрасно работает для создания всплывающих окон в Ubuntu. Я на Харди, и все это прекрасно работает. Затем я заставил других попробовать приложение на Jaunty, и вместо всплывающего сообщения с новой системой Notify-OSD, как я и ожидал, уведомление превратилось в диалоговое окно.
Я посмотрел на это и обнаружил, что вики Ubuntu утверждает, что проблема в том, что я установил таймаут 0:
Некоторые программы задают значение expire_timeout, равное 0, для создания уведомлений, которые никогда не закрываются сами по себе, предполагая, что их можно закрыть вручную, как они могут в уведомлении-демоне. Поскольку это обычно делается для сообщения, которое требует ответа или подтверждения, OSD Notify представляет его как окно предупреждения, а не как пузырь.
Есть ли способ, которым я могу использовать libnotify каким-то образом, чтобы получить нормальный пузырь с тайм-аутом "никогда не истекает"? Я бы на самом деле предпочел бы, если бы я мог использовать старую систему уведомлений, даже если Notify-OSD, похоже, не поддерживает постоянные пузырьки вообще.
Для меня неприемлемо иметь диалоговое окно, так как оно не распространяется на все окна, поэтому пользователь не сразу увидит всплывающее окно (в этом весь смысл использования всплывающего окна).
3 ответа
Похоже, вы просто пытаетесь использовать Notify-OSD для чего-то, для чего он не предназначен. Пузырьки Notify-OSD носят информационный и временный характер, что означает, что в них не следует помещать критическую информацию, поскольку они сделаны так, что они игнорируются.
В соответствии с Руководством по проектированию Ubuntu, похоже, что вы пытаетесь создать окно с изменяющимся предупреждением, которое должно соответствовать вашим потребностям.
Это своего рода боковой ответ, но, возможно, если API уведомлений не совсем соответствует тому, что вы хотите сделать, вам следует использовать более общую библиотеку, которая позволяет рисовать собственные пузырьки на экране. На ум приходит xosd, хотя я помню, что он довольно ограничен, но, возможно, есть и другие варианты...
Я помню, как использовал какой-то инструмент командной строки для отображения уведомлений. Вы можете просто позвонить, используя system или ``.