Python-libnotify, показывающий странное поведение с xfce4-notifyd и notify-osd

Я пытаюсь поиграть с libnotify's python bindings. Я получил этот код от /usr/share/doc/python-notify/examples, и он показывает различное поведение с xfce4-notifyd и notify-osd.

Case-1 с xfce4-notifyd

enter image description here [/g1]

Случай 2 с notify-osd

enter image description here [/g2]

Вы можете увидеть разницу в обоих случаи. В первом случае action интегрируется в виде button в xfce4-notifyd, тогда как во втором случае этого не происходит. Во втором случае он просто отображается как new window.

Итак, кто-нибудь может сказать мне, почему я наблюдаю это странное поведение и как мне добавить кнопки действий в уведомления notify-osd.

PS: я использую patched версию notify-osd. Мои уведомления по умолчанию с notify-osd выглядят как

enter image description here [/g3]

2
задан 1 July 2012 в 18:19

7 ответов

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()
1
ответ дан 25 July 2018 в 18:14

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()
1
ответ дан 2 August 2018 в 00:28

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()
1
ответ дан 4 August 2018 в 15:56

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()
1
ответ дан 6 August 2018 в 00:35

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()
1
ответ дан 7 August 2018 в 18:00

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()
1
ответ дан 10 August 2018 в 06:49

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()
1
ответ дан 15 August 2018 в 18:45

Другие вопросы по тегам:

Похожие вопросы: