В Ubuntu очень крутая система уведомлений. Есть ли способ заставить Ubuntu считывать уведомления, когда они появляются?
Или есть возможность связать текст в уведомлениях espeak
?
В Ubuntu очень крутая система уведомлений. Есть ли способ заставить Ubuntu считывать уведомления, когда они появляются?
Или есть возможность связать текст в уведомлениях espeak
?
Ответы:
Этот вопрос действительно интересен, так как ответ.
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
каждый раз, когда ваша система запускается, делая ее загрузочным приложением .
Я хотел бы сказать спасибо за этот вопрос. Из-за этого вопроса я многому научился. :)
Ответьте, если у вас возникнут проблемы или вам понадобятся дальнейшие изменения / модификации. Я уверен, что вы будете рады получить окончательную рабочую версию.
dbus-monitor
, я хочу начать учиться
У меня возникли проблемы с дополнительным «в моих адресах электронной почты, поэтому я добавил это в строку кода выше, так как espeak не нуждается ни в каком» для чтения;)
| sed 's / \ "// g' |
=>
| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}
Классная работа. Лучше, чем просто настроить уведомления - отправьте саму библиотеку 4 «Привет! Я Саурав Кумар».
обновление: не работает стабильно. Я буду использовать | tee -a $ file |