web-dev-qa-db-fra.com

Comment faire en sorte que mon programme QML utilise les notifications Unity7? Existe-t-il une API que je peux utiliser?

Je développe une application de capture d'écran en QML et je souhaite utiliser notifications Unity 7 , similaire à celle utilisée par Rhythmbox pour notifier à un utilisateur le lancement d'une nouvelle chanson ou la modification du volume.

Une API existe-t-elle pour cela? Un petit exemple de codage serait utile.

6
Async

Autant que je sache, aucune API de ce type n'existe pour appeler libnotify à partir d'un composant QML.

Pour éviter de créer un plug-in C++ uniquement pour recevoir des notifications pour une application de bureau, je voudrais utiliser pyotherside pour appeler un petit module python pour effectuer le travail:


Prérequis :

Installez pyotherside: Sudo ap-get install pyotherside


D'abord le QML:

import QtQuick 2.0
import Ubuntu.Components 1.1
import io.thp.pyotherside 1.2

Rectangle {
    width: 200
    height: 200

    Button {
        text: "press"
        anchors.centerIn: parent
        onClicked: {
            py.call('notify.pressme', [], function() {});
        }
    }

    Python {
        id: py
        Component.onCompleted: {
            addImportPath(Qt.resolvedUrl('.'));
            importModule('notify', function() {});
        }
    }
}

Et le code python (conserver les deux dans le même répertoire), un fichier nommé notify.py:

#!/usr/bin/env python3

import subprocess

def pressme():
    subprocess.call(["notify-send", "hello", "world"])

Après avoir appuyé sur le bouton QML, vous recevrez une notification comme celle-ci:

enter image description here

Veuillez lire le page de manuel notify-send pour plus d'options.

2
Sylvain Pineau