Você pode, mas deve usar um libnotify corrigido para fazer isso
notify-send
não tem a capacidade de substituir as notificações existentes antes que elas expirem (ou desapareçam). Este é um bug conhecido . No entanto, um comentarista do relatório de bug postou um patch para corrigi-lo.
Instalando o libnotify-bin corrigido do PPA
Eu criei uma versão corrigida do pacote libnotify-bin que permite substituições no meu PPA. Atualmente, é apenas para o Ubuntu 12.04, mas se você precisar dele para qualquer outra versão atualmente suportada, poste um comentário e tentarei o meu melhor para disponibilizá-lo.
Para instalar, abra um terminal e:
sudo apt-add-repository ppa: izx / askubuntu
sudo apt-get update
sudo apt-get install libnotify-bin
Como usar os recursos de substituição
O patch notify-send
inclui dois novos comutadores, -p
(ou --print-id ) e -r
(ou --replace-id ). O --help
descreve-os como:
-p, --print-id Imprime o ID da notificação.
-r, --replace-id = REPLACE_ID O ID da notificação a ser substituída.
- Com
-p
, cada notify-send
um retornará um ID N (número / número inteiro).
- A emissão de outro
notify-send
com -r N
substituirá a notificação anterior imediatamente .
Por exemplo, para o bash, você pode salvar o ID notify-send -p ...
com:
NID=$(notify-send -p "MESSAGE-1")
e substitua-o por:
notify-send -r $NID "MESSAGE-2"
Você pode usar recursivamente -p e -r em um script, desde que a variável -r seja inicializada em 0 no início.
Aqui está um script simples que mostra notificações contando de 0 a 100 em intervalos de meio segundo:
#! / bin / bash
NID = 0
para i em {0..100..10}
Faz
NID = $ (notificar-enviar -p -r $ NID $ i)
sono 0.5
feito
Você pode usar a dica "síncrona" para criar uma notificação de "confirmação" que substituirá as notificações de confirmação anteriores. Por exemplo:
A dica "x-canonical-private-synchronous" é especificada neste documento . Para especificar uma dica, use
-h type:name:value
. O tipo aqui éstring
, name isx-canonical-private-synchronous
e parece que o valor pode ser o que você quiser.Portanto, se sua primeira notificação for criada com essa dica e a segunda também, a segunda substituirá imediatamente a primeira. (Veja Animações e durações na documentação, na coluna "bolhas de confirmação".)
fonte
string:x-canonical-private-synchronous:anything
Era exatamente o que eu precisava. Obrigado por esta resposta. Também para vincular à documentaçãoX-ref:
como forçar uma nova notificação no notify-osd a aparecer sem esperar pela saída anterior?
sem patches você pode simplesmente fazer
Marcador:
Como uso o 'notificar-enviar' para substituir imediatamente uma notificação existente?
Envia um erro notify-osd (2592): Operação não permitida. O que isso significa?
Isso pode significar que os privilégios são inadequados, exigindo:
fonte
notify-osd(2592): Operation not permitted
. O que isso significa?Eu criei um script python simples que funciona quase da mesma forma que o envio de notificação, mas tem suporte para
--replaces-id
.notify-send.py
web: https://github.com/phuhl/notify-send.py
Um script python para enviar notificações da área de trabalho a partir do shell.
Sobre
O Libnotify faz parte de muitos scripts no mundo Linux. Ele utiliza muitos dos recursos especificados da Especificação de notificações da área de trabalho e os torna acessíveis para shell-scripts. No entanto, não permite substituir uma notificação existente pelo
replaces-id
. Este é um bug conhecido desde 2008 e possui um patch desde 2012. O patch ainda não está disponível no momento (2018).Esse script python utiliza o pacote notify2 e expõe a funcionalidade ao shell.
Diferenças entre notify-send.py e notify-send
notify-send.py -h
shows ajuda em vez de ser o parâmetro para dicas. Para dicas, use--hint
.notify-send.py -r ID
enotify-send.py --replaces-id ID
existe. Para substituir uma chamada de notificaçãonotify-send.py
pelo ID retornado pela notificação a ser substituída.notify-send.py
retorna o ID da notificação recém-criada.notify-send.py --replaces-process NAME
existe. Toda notificação criada com o mesmo NAME substituirá todas as notificações anteriores pelo mesmo NAME. Se chamado com esse parâmetronotify-send.py
pode bloquear, é melhor chamar com um final&
.Instalação
Requer python3.
Uso
notificar-enviar [.py] como usuário root
Para exibir notificações, mesmo que libnotify ou
é usado a partir do usuário root, esses dois scripts são úteis.
Com
notify-send.sh
assim:Veja também
Também dê uma olhada no meu daemon de notificação inspirado em Dunst , mas com várias melhorias, incluindo a possibilidade de um plano de fundo transparente e um centro de notificações que armazena notificações.
fonte