Уведомление-отправка игнорирует тайм-аут?


47

Может быть, я делаю что-то не так, но не должны команды (запускаются отдельно)

notify-send -t 1 "test"
notify-send -t 1000 "test"
notify-send -t 10000 "test"

Есть разные таймауты? Первый почти мгновенный, второй занимает 1 секунду, а третий - 100 секунд. Во всех случаях это занимает около шести секунд.

Есть ли способ обойти поведение? Поскольку разработчики помечают это как «фичу» вместо ошибки, я бы хотел несколько альтернатив ...


1
да они мне подтвердили
— Ringtail

Для меня это работает, как и ожидалось, используя XFCE4.
— Грамбель

@BlueXrider вы видите ту же проблему, что и я? Если да, то какую версию вы используете?
— подключил

Я подтвердил, что тестовый код работает правильно. Я получаю тайм-ауты, как указано.
— Ringtail

6
В качестве альтернативы вы можете использовать notify-send "Text Here" ; sleep 3 ; killall notify-osd(где sleep 3пример истечения срока действия (фактического убийства) через 3 секунды)!
— Pandya

Ответы:


44

Это известная ошибка: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(Это считается «дизайнерским решением» сопровождающего.)


3
Это не совсем ошибка. Это дизайнерское решение.
— Эрен Тантекин

68
Неправильное дизайнерское решение может быть ошибкой.
— Борис Бух

24
Когда программное обеспечение заявляет, что оно делает одно, а другое - это ошибка. Если разработчики не хотят, чтобы мы считали это ошибкой, то не утверждайте, что это действует так, как будто это не так.
— Hytromo

10
Это не особенность. Это ошибка! Когда вы предоставляете рычаг для включения стеклоочистителей, и он не работает, он ломается.
— Мэтт Х

3
@ChristopherDone С уважением, это ошибка. Справка для notify-send (часть notify-osd) гласит: notify-send --help | grep timeout -t, --expire-time = TIME Указывает время ожидания в миллисекундах, в течение которого истекает уведомление. Это основной интерфейс для пользователя инструмента. Этот основной интерфейс принадлежит пользователю и поэтому является ошибкой. Это либо ошибка с текстом справки, либо реализация, в зависимости от вашей перспективы, но это определенно ошибка.
— Майкл Спаркс

21

Как упомянуто в одном из постов выше, есть дизайнерское решение, чтобы запретить эту функцию. К счастью для вас, другие люди тоже не согласны и создали PPA, и вы можете отменить это решение и для своей системы.

Чтобы решить вашу проблему просто:

sudo add-apt-repository ppa:leolik/leolik 
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install libnotify-bin
pkill notify-osd

По желанию

Чтобы добавить еще больше функций для отправки-уведомления, чем у вас есть:

Начиная с Ubuntu 16.04 и далее:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install notifyosdconfig

Для версий 9.10-14.10:

sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
sudo apt-get update
sudo apt-get install notifyosdconfig

Для получения дополнительной информации о решении выше, прочитайте эту статью:

Настраиваемые пузыри уведомлений для Ubuntu


К сожалению, хранилище больше не предоставляет пакет, говоря E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(связанный: askubuntu.com/questions/50/… )
— phil294

@Blauhirn: я не разработчик указанного пакета. Пожалуйста, свяжитесь с разработчиком
— Fabby

@Blauhirn: обновленный ответ для 16.04 и далее
— Fabby

Это сработало! Как пояснение для всех остальных, вы также должны установить обновленную версию notify-osd. а именно: sudo add-apt-repository ppa:leolik/leolik; sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig; sudo apt-get update; sudo apt install notify-osd # Updates to actually useful version; sudo apt install notifyosdconfig Большое спасибо!
— Майкл Спаркс

1
@MichaelSparks изменился upgradeна dist-upgrade. Это должно заботиться о вещах, поскольку notify-osd уже установлен и должен быть обязательно обновлен.
— Fabby

4

Это было намеренно реализованным нарушением установленных соглашений без дисквалификации в среде хост-терминала. то есть. notify-sendбольше не должно существовать, так как это ставит под угрозу хорошо установленную ожидаемую и документированную функциональность, поэтому вместо этого notify-graffitiтеперь должна существовать новая команда - Что ???? Подождите секунду ... все те сценарии, которые используют "обычное" написание имени команды, будут скомпрометированы!?! изменив соглашение о том, как пишется название команды?!?! - Хммм. Эта философия исключительно, как это ни парадоксально лицемерна, так как поддерживается интерфейсом настольного терминала Unity.

Это не может быть сделано в обоих направлениях - сохранение некоторых соглашений, т.е. имя команды и еще не все, функциональность команды, как документировано. Если функциональность должна быть скомпрометирована, то и имя команды должно быть таким, чтобы поддерживать целостность, условность, согласованность и т. Д. «Опыта» пользователя, или это «разочарование», «раздражение», «раздражение» пользователя. ..

ссылка:

Закладка:
Уведомить-отправить игнорирует тайм-аут?


Ссылки «Non-expiring_notifications» и «Notification | Ubuntu App Developer» не работают (точнее, веб-страница, на которую они ссылаются).
— Кит Томпсон

2

Существует небольшой удобный скрипт notify-send.sh в качестве замены для уведомления-отправки, который позволяет закрыть или заменить ранее отправленные уведомления.

Редактировать: как указал @Glutanimate, этот скрипт по умолчанию поддерживает время истечения.

Я не мог получить время истечения, чтобы работать в конце, поэтому я пошел довольно хакерский способ отправить уведомление с тайм-аутом в 2 секунды, как это:

notify-send.sh --print-id test | xargs -I {} bash -c "sleep 2 && notify-send.sh --close={}" &


Этот сценарий великолепен! Спасибо, что поделились этим здесь. Похоже, теперь он полностью совместим с исходными аргументами CLI для notify-send. Т.е. вы можете отправить уведомление с 2-секундным таймаутом через notify-send.sh -t 2 "Hello World!". Я сделал ссылку на скрипт в своем локальном каталоге $ PATH и переименовал его в notify-send. Больше не нужно иметь дело с этой реализацией subpar notify-osd!
— Glutanimate

О, круто @Glutanimate! Спасибо, что сообщили нам об этом.
— NiMa Thr

0

Для тех, кто использует среду рабочего стола Cinnamon, есть параметр, который можно включить:

Уведомления> Удалить уведомления после истечения времени ожидания


0

Это в миллисекундах. Я тестировал на XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

ровно 3 секунды

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.