Синтаксис для отправки подсказки с уведомлением с помощью модуля dbus gdbus или python

Я пытаюсь обновить предыдущее уведомление (которое отображает яркость экрана после изменения с помощью индикатора выполнения) с помощью gdbus, поскольку notify-send не поддерживает обновление.

Ранее я использовал обходной путь, убивая предыдущее уведомление, но оно заставляет уведомление исчезать, а затем снова появляться, вместо плавного обновления индикатора выполнения:

#!/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

Я пробовал dbus-send, но никакое уведомление не показывалось, даже если я удаляю часть подсказок. После некоторого поиска, я обнаружил, что gdbus работает, но только без подсказок.

По сути, это то, где я до сих пор добираюсь с помощью 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

Однако я застрял в этой ошибке:

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

Может кто-нибудь помочь мне с синтаксис уведомлений, отправленных gdbus?

Я где-то читал, что могу использовать какую-то нестандартную исправленную версию уведомления-отправки, однако мне не нравится идея введения неофициальных двоичных файлов в мою стабильную систему.

Кстати, я использую xfce4-notifyd в xubuntu.

ОБНОВЛЕНИЕ:

Я постарался быть менее свирепым и попробовал модуль Python dbus для этой работы. И снова я застрял в подсказках. Это работало только если я убрал подсказки. Вот новый код:

#!/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)

И ошибка:

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
1
задан 20 June 2016 в 19:16

1 ответ

Это - просто недопустимый синтаксис Python. То, что Вы делаете со строками для подсказки, не имеет никакого смысла. Попытайтесь видеть соответствие кавычкам, например.

подсказка должна быть: hint = {'type':'i', 'name':'value', 'value':int(os.system('xbacklight -get'))}

-1
ответ дан 20 June 2016 в 19:16

Другие вопросы по тегам:

Похожие вопросы: