Сповістити-надіслати ігнорований час очікування?


47

Можливо, я щось неправильно роблю, але не слід, щоб команди (виконувались окремо)

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

Мають різні тайм-аути? Перший був майже миттєвим, другий займав 1 сек, а третій - 100 секунд. У всіх випадках це, здається, займає близько шести секунд.

Чи є спосіб навколо поведінки? Оскільки розробники називають це "функцією" замість помилки, я хотів би отримати кілька альтернатив ...


1
так, вони мене підтвердили
Ringtail

Для мене це працює, як очікувалося, використовуючи XFCE4.
Грумбель

@BlueXrider Ви бачите ту саму проблему, що і я? Якщо так, то яку версію ви використовуєте?
Зачепили

Я підтвердив, що тестовий код працює правильно. Я отримую тайм-аути за вказівкою.
Рінгтейл

6
Ви також можете використовувати notify-send "Text Here" ; sleep 3 ; killall notify-osd(де sleep 3є приклад закінчення терміну дії (фактично вбивство) через 3 секунди)!
Пандія

Відповіді:


44

Це відома помилка: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(Це вважається "дизайнерським рішенням" з боку технічного обслуговування.)


3
Це насправді не помилка. Це дизайнерське рішення.
Eren Tantekin

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

24
Коли програмне забезпечення стверджує, що робить одне, а інше - це помилка. Якщо розробники не хочуть, щоб ми вважали це помилкою, тоді не заявляйте, що він діє так, як ні.
hytromo

10
Це не особливість. Це помилка! Якщо ви надаєте важіль aa, щоб увімкнути склоочисники, і він не працює, тоді він порушений.
Метт Х

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 вже встановлено, і його слід точно оновити.
Фабі

4

Це було навмисно реалізованим порушенням встановлених конвенцій без дискваліфікації в середовищі приймаючого терміналу. тобто. notify-sendбільше не має існувати, оскільки це компрометує добре встановлений очікуваний та задокументований функціонал, тож натомість notify-graffitiтепер повинна існувати нова команда - Що ???? Зачекайте секунду ... всі ті сценарії, які використовують "звичайний" написання назви команди, будуть порушені!?! змінивши умову про те, як написано ім'я команди?!?! - hmmm Ця філософія є винятково, парадоксально лицемірною, як це стосується інтерфейсу настільного терміналу Unity.

Це неможливо зробити обома способами - зберігаючи деякі умовності, тобто. назва команди, але ще не інші, функціональність команди як задокументована. Якщо функціональність має бути порушена, то так само має бути назва команди, щоб підтримувати цілісність, умовність, послідовність тощо "користувальницького досвіду", або це "розчарування", "роздратування", "роздратування",. ..

посилання:

Закладка:
Повідомити-надіслати ігнорований час очікування?


Посилання "Не закінчуються_нотифікації" та "Повідомлення | Розробник додатків Ubuntu" порушені (точніше веб-сторінка, на яку вони посилаються).
Кіт Томпсон

2

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

Редагувати: як зазначав @Glutanimate, цей скрипт підтримує термін дії за замовчуванням.

Зрештою, я не міг отримати закінчення терміну роботи, тому я пішов досить хакітним способом надіслати сповіщення з 2-секундним тайм-аутом:

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


Цей сценарій чудовий! Дякуємо, що поділилися цим тут. Схоже, тепер він повністю сумісний з оригінальними аргументами CLI-повідомлення. Тобто: Ви можете надіслати сповіщення із затримкою на 2 секунди через notify-send.sh -t 2 "Hello World!". Я прив’язав скрипт до свого локального каталогу $ PATH і перейменував його на сповіщення-відправлення. Більше не з цим підпарком реалізуйте сповіщення-osd!
Глутанімат

Ой круто @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.