Como você sabe o que (UINT32 id)
é ou não é?
Considerando a declaração You ... need a way to get that ID ...
nesta resposta e as seguintes observações empíricas, talvez o título da pergunta deva ser alterado para " Como gdbus ... -m org.freedesktop.Notifications.CloseNotification ...
pode fechar uma notificação? "
É por implicação ou processo de eliminação que a declaração "... apenas declara que o ID deve ser único, diferente de zero e menor que MAXINT ...", encontrado na descrição de 9.1.2. org.freedesktop.Notifications.Notify , também se aplica ao parâmetro CloseNotification
(UINT32 id)
? O UINT32
pelo processo de eliminação é o único fator comum como um tipo de atributo na documentação e há a implicação de que deve haver algum tipo de ID comum "handle", mas ...
Os detalhes do valor retornado de Notify
e seu parâmetro UINT32 replaces_id
são bastante explícitos, mas não está claro se CloseNotification
' (UINT32 id)
tem alguma coisa a ver com isso, conforme demonstrado com testes empíricos abaixo. / p>
Citando 9.1.3. org.freedesktop.Notifications.CloseNotification in toto:
9.1.3. org.freedesktop.Notifications.CloseNotification
void org.freedesktop.Notifications.CloseNotification (UINT32 id);
Causes a notification to be forcefully closed and removed from the user's view.
It can be used, for example, in the event that what the notification pertains to
is no longer relevant, or to cancel a notification with no expiration time.
The NotificationClosed signal is emitted by this method.
If the notification no longer exists, an empty D-BUS Error message is sent back.
Isso não caracteriza nem explica o significado de (UINT32 id)
.
Uma omissão evidente é a falta de uma tabela para descrever o parâmetro NotificationClosed (UINT32 id)
. Todos os outros parâmetros para métodos e sinais são qualificados com essas tabelas.
Testes empíricos mostram que as notificações não são fechadas usando o valor de retorno de Notify
:
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification \
$(gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.Notify \
"" 0 "" "sigma-ry" "corpus" [] {} 200 \
| sed -e 's/(uint32\(.*\),)//g' )
ou
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification \
$(gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.Notify \
"" 5 "" "sigma-ry" "corpus" [] {} 20 \
| sed -e 's/(uint32\(.*\),)//g' )
A notificação não é encerrada, o que seria o caso se (UINT32 id)
fosse identificado com o valor retornado de Notify
.
Mais alguns testes:
gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.CloseNotification \
$(gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.Notify \
"" 0 "" "sigma-ry" "corpus" [] {} 0 \
| sed -e 's/(uint32\(.*\),)//g' )
e até mesmo coagindo uma ID constante, definindo UINT32 replaces_id
a 42 e expire_timeout
a 0, é visto que CloseNotification
não tem influência
gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.CloseNotification \
$(gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.Notify \
"" 42 "" "sigma-ry" "corpus" [] {} 0 \
| sed -e 's/(uint32\(.*\),)//g' )
A notificação não é encerrada, embora o 42
faça a ida e volta pelos métodos confirmados por
dbus-monitor "interface='org.freedesktop.Notifications'"
na saída
method call sender=:1.332 -> dest=org.freedesktop.Notifications serial=3 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify string "" uint32 42 string "" string "sigma-ry" string "corpus" array [ ] array [ ] int32 0 method call sender=:1.333 -> dest=org.freedesktop.Notifications serial=3 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=CloseNotification uint32 42
Observe também a falha na notificação de um tempo limite -1 (a documentação é contraditório ):
gdbus call --session \
-d org.freedesktop.Notifications \
-o /org/freedesktop/Notifications \
-m org.freedesktop.Notifications.Notify \
"" 42 "" "sigma-ry" "corpus" [] {} -1
embora isso "funcione"
notify-send "test" -t -1
ref:
Qual é o nome do programa que exibe as notificações? (contradições do documento)
Como forçar uma nova Notificação em notificar-osd a aparecer sem esperar que a anterior saia ?
Como uso 'notify-send' para substituir imediatamente uma notificação existente?
Bookmark:
O org.freedesktop.Notifications.CloseNotification (uint id) pode ser acionado e chamado pelo DBus?