Есть ли способ заставить Ubuntu считывать уведомления?

9

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

Или есть возможность связать текст в уведомлениях espeak?

мяу
источник
Этот bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 заявляет, что orca не сделал и теперь делает снова (?)
Rinzwind
1
orca читает все и очень раздражает то, что я ищу, это способ читать только уведомления в любом случае, спасибо за поддержку :)
Мяу

Ответы:

17

Этот вопрос действительно интересен, так как ответ.

dbus-monitorкогда выполнено, ждет сигнала и когда приходит, он ловит и дает соответствующую информацию о нем. Точно так же это может быть выполнено, чтобы получить информацию об Уведомлениях . Когда выполнено:

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"

Он будет ждать уведомлений, а при получении любого уведомления отправляет информацию об уведомлениях.

Например, при увеличении / уменьшении звука или изменении любой дорожки песни или любой другой, которая выдает сообщение. Я вручную создаю уведомление на рабочем столе, используя notify-send команду на любом другом терминале:

notify-send "Hello How are you?"

Тогда первый терминал, в котором dbus-monitorвыполняется команда, выдаст следующее сообщение:

saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
   string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7    path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;  member=Notify
   string "notify-send"
   string ""
   string "Hello How Are You?"
   string ""
         string "urgency"

Теперь вышеприведенный вывод может быть легко передан espeakдля чтения сообщения. Например,

Если заменить приведенную выше dbus-monitorкоманду следующей, будет прочитано уведомление:

Проверьте, как это работает:

  • Выполните эту команду в терминале и оставьте его работающим:

    dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
    

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

  • Затем запустите уведомление на рабочем столе, как описано выше, notify-sendили что-нибудь еще. Я использую notify-send. Итак, выполняя следующую команду в другом терминале:

    notify-send "Hello! I am Saurav Kumar."
    

    Как только вы выполните команду, она произнесет (прочитает) уведомление.

Хотя я съел 4-5 часов, но теперь я рад, что все заработало.

Вы также можете создать свою собственную командуsaynoti и выполнять ее каждый раз, когда вам нужно уведомление о чтении. Следуя этим шагам, вы можете сделать это:

  • Сначала сохраните фактическую команду в файл с именем saynoti. Вы можете использовать любое имя файла, которое станет вашим фактическим именем команды.

  • Затем сделайте файл исполняемым и переместите или скопируйте его в /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Теперь вы можете просто выполнить вашу новую команду, чтобы запустить Speaking Notification :

    saynoti
    
  • Чтобы убить запущенный процесс, вы можете выполнить эту команду:

    pkill dbus-monitor
    

    или просто нажмите Ctrl+ Cна терминале, где saynotiработает.

  • Вы также можете запускать saynotiкаждый раз, когда ваша система запускается, делая ее загрузочным приложением .

Я хотел бы сказать спасибо за этот вопрос. Из-за этого вопроса я многому научился. :)

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

Саурав Кумар
источник
@Meow: звучит хорошо, что вы довольны результатом. В будущем, если вам понадобятся какие-либо изменения, просто напишите мне здесь.
Саурав Кумар
@Meow: проверьте окончательную рабочую версию. Я решил всю проблему, и она прекрасно работает. Вы будете рады получить эту версию.
Саурав Кумар
2
чувак, ты удивительный, больше ничего не можешь спросить; я поместил его в свой список запуска, и он работает безупречно Мерси Beaucoup
Мяу
Откуда вы узнали dbus-monitor, я хочу начать учиться
Эдвард Торвальдс
@edwardtorvalds: вы можете узнать его на официальном сайте о Dbus и Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Кумар
0

У меня возникли проблемы с дополнительным «в моих адресах электронной почты, поэтому я добавил это в строку кода выше, так как espeak не нуждается ни в каком» для чтения;)

| sed 's / \ "// g' |

=>

| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}

Классная работа. Лучше, чем просто настроить уведомления - отправьте саму библиотеку 4 «Привет! Я Саурав Кумар».

обновление: не работает стабильно. Я буду использовать | tee -a $ file |

Джимми
источник