Sintaxe para enviar dicas de notificação usando o módulo dbus do gdbus ou do python

1

Estou tentando atualizar uma notificação anterior (que exibe o brilho da tela depois de ser alterada usando uma barra de progresso) com o gdbus, já que o notify-send não suporta a atualização.

Anteriormente, eu usei uma solução alternativa ao eliminar a notificação anterior, mas ela faz com que a notificação desapareça e reapareça, em vez de atualizar a barra de progresso:

#!/bin/bash
for i in {0..100..10}
    do
        kill $(pgrep ^xfce4-notifyd$)
        notify-send "Brightness" -h int:value:$(xbacklight -get) -h string:synchronous:volume -i weather-clear -t 1
    done

Eu tentei dbus-send, mas nenhuma notificação apareceu, mesmo se eu remover a parte de dicas. Depois de algum googling, descobri o gdbus e consegui que funcionasse, mas apenas sem sugestões.

Basicamente, aqui é onde eu tenho até agora com o gdbus:

#!/bin/bash
gdbus call --session --dest org.freedesktop.Notifications \
--object-path /org/freedesktop/Notifications \
--method org.freedesktop.Notifications.Notify \
brightness \
42 \
notification-display-brightness-full \
"Message" "Body" [] \
"{'value':i, 'name':'value', 'value':'$(xbacklight -get)'}" "{'type':'string', 'name':'synchronous', 'value':'volume'}" \
1

No entanto, estou preso a este erro:

Error parsing parameter 7 of type 'a{sv}': expected value:
  {'value':i, 'name':'value', 'value':'0.000000'}
           ^

Alguém pode me ajudar com a sintaxe de dicas de notificação enviadas pelo gdbus?

Eu li em algum lugar que eu posso usar alguma versão personalizada de remeter-enviar, no entanto, eu não gosto da idéia de introduzir binários não oficiais no meu sistema estável.

Btw, estou usando o xfce4-notifyd no xubuntu.

ATUALIZAÇÃO:

Eu tentei ter menos cabeça de porco e tentei o módulo dbus do Python para o trabalho. E mais uma vez, estou preso a sugestões. Só funcionou se eu remover as dicas. Aqui está o novo código:

#!/usr/bin/env python3
"""Creates a Notification pop-up bubble"""
import dbus
item              = "org.freedesktop.Notifications"
path              = "/org/freedesktop/Notifications"
interface         = "org.freedesktop.Notifications"
app_name          = "brightness"
id_num_to_replace = 0
icon              = "weather-clear"
title             = "Message"
text              = "Body"
actions_list      = ''
hint              = '"{'type':i, 'name':'value', 'value':'$(xbacklight -get)'}" "{'type':'string', 'name':'synchronous', 'value':'volume'}"'
time              = 5000   # Use seconds x 1000

bus = dbus.SessionBus()
notif = bus.get_object(item, path)
notify = dbus.Interface(notif, interface)
notify.Notify(app_name, id_num_to_replace, icon, title, text, actions_list, hint, time)

E o erro:

File "/home/pygeek03/bin/brightness.py", line 13
 hint              = '"{'type':i, 'name':'value', 'value':'$(xbacklight -get)'}" "{'type':'string', 'name':'synchronous', 'value':'volume'}"'
                           ^
SyntaxError: invalid syntax
    
por PyGeek03 18.06.2016 / 20:38

1 resposta

-1

É apenas sintaxe python inválida. O que você faz com as cordas para a sugestão não faz nenhum sentido. Tente ver citações correspondentes, por exemplo.

a sugestão deve ser: hint = {'type':'i', 'name':'value', 'value':int(os.system('xbacklight -get'))}

    
por Cyrille Pontvieux 08.12.2016 / 14:51