Notificar-enviar ignora o tempo limite?


47

Talvez eu esteja fazendo algo errado, mas os comandos não devem ser executados separadamente

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

Tem tempos limite diferentes? O primeiro sendo quase instantâneo, o segundo levando 1 segundo e o terceiro 100 segundos. Em todos os casos, isso leva cerca de seis segundos.

Existe uma maneira de contornar o comportamento? Como os desenvolvedores rotulam isso como um "recurso" em vez de um bug, eu gostaria de algumas alternativas ...


11
sim, eles me confirmaram
— Ringtail

Para mim, funciona como esperado usando o XFCE4.
— Grumbel 7/03/12

@BlueXrider você vê o mesmo problema que eu? Se sim, qual versão você está usando?
— Hooked

Confirmei que o código de teste está funcionando corretamente. Recebo os intervalos conforme as instruções.
— Ringtail

6
Como alternativa, você pode usar notify-send "Text Here" ; sleep 3 ; killall notify-osd(onde sleep 3é exemplo de expiração (realmente matar) após 3 segundos)!
— Pandya

Respostas:


44

Este é um bug conhecido: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(É considerada uma 'decisão de projeto' pelo mantenedor.)


3
Isso não é realmente um bug. É uma decisão de design.
— Eren Tantekin

68
Uma decisão de design errada pode ser um erro.
— Boris Bukh

24
Quando o software afirma fazer uma coisa enquanto faz outra, é um bug. Se os desenvolvedores não querem que a consideremos um bug, não afirme que ele age como se não fosse.
— Htromo 24/09/12

10
Isso não é uma característica. Isso é um bug! Quando você fornece uma alavanca para ligar os limpadores de pára-brisa e ele não funciona, ele está quebrado.
— Matt H

3
@ChristopherDone Com respeito, é um bug. A ajuda para o envio de notificação (parte do notify-osd) diz: notify-send --help | grep timeout -t, --expire-time = TIME Especifica o tempo limite em milissegundos nos quais a notificação deve expirar. Essa é a interface principal para um usuário da ferramenta. Essa interface principal é do usuário e, portanto, é um bug. É um bug com o texto de ajuda ou a implementação, dependendo da sua perspectiva, mas é definitivamente um bug.
— Michael Faíscas

21

Conforme mencionado em uma das postagens acima, há uma decisão de design para desabilitar esse recurso. Felizmente para você, outras pessoas também não concordam e criaram um PPA e você pode reverter essa decisão também para o seu sistema.

Para resolver seu problema apenas:

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

Opcional

Para adicionar ainda mais recursos para enviar-notificação do que você possui atualmente:

A partir do Ubuntu 16.04:

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

Para as versões 9.10-14.10:

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

Para mais informações sobre a solução acima, leia este artigo:

Bolhas de notificação configuráveis ​​para Ubuntu


Infelizmente, o does not repositório fornecer o pacote mais, dizendo E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(relacionados: askubuntu.com/questions/50/... )
— phil294

@Blauhirn: Eu não sou o desenvolvedor do referido pacote. Entre em contato com o desenvolvedor
— Fabby

@Blauhirn: resposta atualizada a partir do 16.04
— Fabby

Isso funcionou! Como esclarecimento para qualquer outra pessoa, você também deve instalar a versão atualizada do notify-osd. ie 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 Muito Obrigado!
— Michael Faíscas

11
@MichaelSparks mudou upgradepara dist-upgrade. Isso deve cuidar de tudo, já que o notify-osd já está instalado e deve ser atualizado com certeza.
— Fabby

4

Essa foi uma violação intencionalmente implementada de convenções estabelecidas sem desqualificação no ambiente do terminal host. ie notify-sendnão deve mais existir, pois compromete a funcionalidade esperada e documentada bem estabelecida; portanto, um novo comando notify-graffitideve existir agora - O que ???? Espere um segundo ... todos os scripts que usam a ortografia "convencional" do nome do comando serão comprometidos!?! alterando a convenção de como o nome do comando está escrito?!?! - hmmm Essa filosofia é excepcionalmente, paradoxalmente hipócrita, como defendida pela interface do terminal de desktop Unity.

Não pode ser feito nos dois sentidos - preservando algumas convenções, ou seja. o nome de um comando e ainda outros, a funcionalidade de um comando conforme documentado. Se a funcionalidade for comprometida, também o nome do comando deverá manter a integridade, a convencionalidade, a consistência etc. da "experiência" do usuário, ou será esse "frustração", "aborrecimento", "irritação",. ..

ref:

Marcador:
Notify-send ignora timeout?


Os links "Not-expiring_notifications" e "Notification | Ubuntu App Developer" estão quebrados (ou melhor, a página da web a que se referem).
— perfil completo de Keith Thompson

2

Há um pequeno script prático notify-send.sh como um substituto para o envio de notificação que permite fechar ou substituir as notificações enviadas anteriormente.

Editar: como o @Glutanimate apontou, esse script suporta o tempo de expiração por padrão.

Não consegui que o tempo de expiração funcionasse no final, então segui uma maneira hacky de enviar uma notificação com tempo limite de 2 segundos, como este:

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


Esse script é ótimo! Obrigado por compartilhar aqui. Parece que agora é totalmente compatível com os argumentos da CLI original do notify-send. Ou seja: você pode enviar uma notificação com um intervalo de 2 segundos via notify-send.sh -t 2 "Hello World!". Eu vinculei o script ao meu diretório local $ PATH e o renomeei para notificar-enviar. Chega de lidar com essa implementação subpara do notify-osd!
— Glutanimate

Oh legal @Glutanimate! Obrigado por nos informar sobre isso.
— Nima Thr

0

Para aqueles que usam o ambiente de área de trabalho Cinnamon, há uma configuração que pode ser ativada:

Notificações> Remover notificações após atingir o tempo limite


0

Isso é em milissegundos. Eu testei no XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

exatamente 3 segundos

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.