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 ...

Hooked
fonte
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.)

Boris Bukh
fonte
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

Fabby
fonte
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?

George Rowell
fonte
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={}" &

NiMa Thr
fonte
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

Shai Coleman
fonte
0

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

notify-send -t 3000 "test"

exatamente 3 segundos

Pawel Cioch
fonte