Я пытаюсь поиграть с libnotify's python bindings
. Я получил этот код от /usr/share/doc/python-notify/examples
, и он показывает различное поведение с xfce4-notifyd
и notify-osd
.
Case-1 с xfce4-notifyd
[/g1]
Случай 2 с notify-osd
[/g2]
Вы можете увидеть разницу в обоих случаи. В первом случае action
интегрируется в виде button
в xfce4-notifyd
, тогда как во втором случае этого не происходит. Во втором случае он просто отображается как new window
.
Итак, кто-нибудь может сказать мне, почему я наблюдаю это странное поведение и как мне добавить кнопки действий в уведомления notify-osd
.
PS: я использую patched
версию notify-osd. Мои уведомления по умолчанию с notify-osd выглядят как
[/g3]
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()
Notify-osd не обрабатывает действия. Это явное дизайнерское решение разработчиков. Как в спецификации проекта говорится : «Кроме этого эффекта парения пузырьки не должны напрямую реагировать на устройства ввода». также утверждает , что когда запрашиваются действия, он возвращается к окну предупреждения:
Для случаев, когда приложения ожидали, что система уведомлений разрешит интерактивность, не проверяя, это действительно так, и в случаях, когда приложения ожидают, что система уведомлений будет отображать уведомление в течение неопределенного времени, OSD Notify должно показывать окно оповещения в качестве запасного варианта.
Пока обсуждается вопрос о том, Хорошее решение, Notify-osd - это реализация спецификации уведомлений Freedesktop , в которой четко указано, что клиент должен убедиться, что сервер поддерживает желаемую возможность:
< blockquote>Клиенты должны стараться избегать предположений о представлении и возможностях сервера уведомлений. Содержание сообщения - это самое важное.
Клиенты могут проверить на сервере, какие возможности поддерживаются, используя сообщение GetCapabilities.
Вы можете проверить возможности сервера уведомлений с помощью что-то вроде:
import pynotify pynotify.init("Test Capabilities") caps = pynotify.get_server_caps() if caps and 'actions' in caps: # We support actions, so add a button. notification = pynotify.Notification("Can we use actions?", \ "Yup, we sure do.") notification.add_action("ignore", "Ignore", ignore_cb) else: notification = pynotify.Notification("Can we use actions?", \ "Nope, we don't support actions.") notification.show()