Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Diskussion rund um unser Wiki.
scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 13.01.2018 22:08:59

inne hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 12:14:26
smutbert hat geschrieben: ↑ zum Beitrag ↑
12.01.2018 23:46:53
Den ersten Fehler wird man los indem man statt »systembus = dbus.SystemBus()|sessionbus = dbus.SessionBus()«

Code: Alles auswählen

systembus = dbus.SystemBus()
sessionbus = dbus.SessionBus()
schreibt.



Der Client-Teil läuft dann fehlerfrei, aber löst leider noch keine Benachrichtigungen aus. Ich weiß noch nicht was ich hier übersehe (sonst würde ich im Wikiartikel mitmischen).
Hab ich da beim Schreiben des Wiki-Artikels einen Formatierungsfehler gemacht? Mir war anfangs die Syntax des Wiki-Markdowns nicht ganz klar...
inne hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 12:14:26
Das liegt aber nur noch am letzten Skript aus "Senden der Message an den Systembus aus einem Python3-Programm", denn das " Senden der Message an den Systembus von der Shell" funktioniert dann.der Message an den Systembus von der Shell" funktioniert dann.

Code: Alles auswählen

$ dbus-send --system /my/desktop my.desktop.Notification string:test string:bla
Ich komm jetzt nicht ganz dahinter... Scheinbar hast du deinen Satz zu Tode editiert... :)
Von der Shell aus kannst du an den Lauschdienst eine Message mit dbus-send schicken, die dann auch vom Notification-Daemon angezeigt wird.
Aus dem Python-Programm heraus aber klappt es nicht?


Ich denke, ich werde den Wiki-Artikel noch vereinfachen. Denn der Teil mit der signatur ist nicht unbedingt notwendig, wenn man ausschließlich Strings schickt.

Dass ich beidemale den selben Dateipfad verwendet habe, liegt daran, dass die Programme bei mir spezifischere Namen haben und an anderer Stelle im Dateisystem liegen, da ich sie per Paket installiere... und dann sind sie mir beim Schreiben des Wikiartikels durcheinander gekommen... :hail: Asche auf mein Haupt!!!

Das Python-Programm. welches die Message an den Systembus losschickt ist ja nur ein Beispielprogramm zum Testen. Dieses Codeschnipsel kann an dann in eigene Python-Programme einbauen (wie ich es bei meinem BTRFS-Backup-Programm gemacht habe).
Für einfache Shell-Skripte die von Cron aufgerufen werden ist natürlich dbus-send --system.... vollkommen ausreichend. Aber aus anderen Programmiersprachen sind systemcalls immer heikel, daher verwende ich für Python auch die entsprechenden Bindings.
Wäre fein, wenn Kenner anderer Programmiersprachen auch Codeschnipsel mit den entsprechenden dbus-bindings in den Wiki-Artikel schreiben könnten...

Wenn freedesktop.org sowas nicht liefert, könnt ich ja dieses Beispiel soweit ausbauen, dass es für Debian allgemein interessant und aufgenommen wird :)
Ich denke, sowas fehlt nämlich wirklich essentiell.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

inne
Beiträge: 2077
Registriert: 25.06.2013 15:45:12
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von inne » 13.01.2018 22:23:52

scientific hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 22:08:59
Das Python-Programm. welches die Message an den Systembus losschickt ist ja nur ein Beispielprogramm zum Testen. Dieses Codeschnipsel kann an dann in eigene Python-Programme einbauen (wie ich es bei meinem BTRFS-Backup-Programm gemacht habe).
Dennoch sollte auch das desktop-notify.py Beispiel-Skript/Listing mit dem obigen desktop-notifyd.py zusammen funktionieren.
(Ich vermute es muss nur /at/xundeenergie/ at.xundeenergie.mkbackup zu /my/desktop my.desktop.Notification geändert werden.)
Für einfache Shell-Skripte die von Cron aufgerufen werden ist natürlich dbus-send --system.... vollkommen ausreichend.
Richtig. Und schön dass du das mit aufzeigst.
Wäre fein, wenn Kenner anderer Programmiersprachen auch Codeschnipsel mit den entsprechenden dbus-bindings in den Wiki-Artikel schreiben könnten...
Genau daran dachte ich auch schon. Aber meine Skills mit DBus sind weak/whack/k.A.^^
(=_=)

Vorsicht vor Leuten!

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 13.01.2018 23:46:39

So. Ich hab jetzt nochmal den Artikel überarbeitet.

Ja, du hattest recht, es lag an /at/xundeenergie/... und /my/desktop
Jetzt müsste es funktionieren.

Ich hab den Artikel auch neu gegliedert und die Texte überarbeitet. Leider hat mir jemand in der Zwischenzeit während ich schrieb etwas ausgebessert, und ich bin noch nicht so fix im Wiki, dass ich jetzt wüsste, was geändert wurde. Ich hab als letztgültige Version das gespeichert, was ich verfasst habe. Sorry!

Klappt es jetzt?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

inne
Beiträge: 2077
Registriert: 25.06.2013 15:45:12
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von inne » 14.01.2018 00:04:32

Leider Nein.

ohne Erkennung der Variablentypen in der Message

Code: Alles auswählen

$ /usr/local/bin/desktop-notify.py 
Traceback (most recent call last):
  File "/usr/local/bin/desktop-notify.py", line 22, in <module>
    notify.send_signal('a', 'b')
  File "/usr/local/bin/desktop-notify.py", line 17, in send_signal
    message.append(signature=signature, *msg)
NameError: name 'signature' is not defined
EXIT STATUS: 1
inne@mydebian:~
$ 
Und nimmt man die Zeile "message.append(signature=none, *msg)" raus, dann gibt /usr/local/bin/desktop-notifyd.py aus:

Code: Alles auswählen

inne@mydebian:~
$ /usr/local/bin/desktop-notifyd.py 
Gtk-Message: Failed to load module "canberra-gtk-module"
ERROR:dbus.connection:Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 230, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/bin/desktop-notifyd.py", line 16, in notify_updates
    notifications.Notify("Backup finished", 0, icon, "%s-Backup" % (str(args[0])), str(' '.join(args[1:])), "", {}, 0)
IndexError: tuple index out of range
(=_=)

Vorsicht vor Leuten!

inne
Beiträge: 2077
Registriert: 25.06.2013 15:45:12
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von inne » 14.01.2018 00:07:08

.
Zuletzt geändert von inne am 14.01.2018 00:52:46, insgesamt 1-mal geändert.
(=_=)

Vorsicht vor Leuten!

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 14.01.2018 00:10:22

inne hat geschrieben: ↑ zum Beitrag ↑
14.01.2018 00:04:32
Leider Nein.

ohne Erkennung der Variablentypen in der Message

Code: Alles auswählen

$ /usr/local/bin/desktop-notify.py 
Traceback (most recent call last):
  File "/usr/local/bin/desktop-notify.py", line 22, in <module>
    notify.send_signal('a', 'b')
  File "/usr/local/bin/desktop-notify.py", line 17, in send_signal
    message.append(signature=signature, *msg)
NameError: name 'signature' is not defined
EXIT STATUS: 1
inne@mydebian:~
$ 
Und nimmt man die Zeile "message.append(signature=none, *msg)" raus, dann gibt /usr/local/bin/desktop-notifyd.py aus:

Code: Alles auswählen

inne@mydebian:~
$ /usr/local/bin/desktop-notifyd.py 
Gtk-Message: Failed to load module "canberra-gtk-module"
ERROR:dbus.connection:Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 230, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/bin/desktop-notifyd.py", line 16, in notify_updates
    notifications.Notify("Backup finished", 0, icon, "%s-Backup" % (str(args[0])), str(' '.join(args[1:])), "", {}, 0)
IndexError: tuple index out of range
Ah ja klar. Die signatur ist beim Beispiel ohne signatur natürlich nicht definiert. Ich hab das Beispiel angepasst.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 14.01.2018 00:14:36

Habs jetzt bei mir mit den Beispielen aus dem Wiki nachgestellt, und es funktioniert einwandfrei.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 14.01.2018 10:43:36

In welche Kategorie würdet ihr denn den Artikel einordnen?
Serverbetrieb? Graphische Oberflächen? Gehört eigentlich in beide...

Oder?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
jph
Beiträge: 361
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von jph » 14.01.2018 11:22:54

Grafische Oberfläche, weil die Benachrichtigungen dort angezeigt werden.

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 14.01.2018 23:21:08

Hab den Wikiartikel noch um einen Link zu meinem Github-Repo ergänzt, wo ich ein fixfertiges Debian-Paket für den Lauschdienst samt xdg-autostart-Eintrag und Testimplementation in python für das Senden einer Testmessage anbiete.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 17.01.2018 18:07:40

Möchte mal jemand das Debian-Paket, welches im Wiki-Artikel verlinkt ist, testweise installieren und die Notification damit testen?

Dann könnt man nämlich das Review aus dem Artikel rausnehmen.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
jph
Beiträge: 361
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von jph » 17.01.2018 18:49:01

Ich habe das Paket gerade installiert und mich ab- und wieder angemeldet (Stretch, GNOME 3). Der Lauschdienst wird gestartet und taucht in der Prozessliste auf.

Was ich nicht verstehe: was macht dieser Lauschdienst? Das geht für mich aus dem Wiki-Artikel nicht hervor. Über notify-send abgesetzte Benachrichtigungen werden bei mir sowohl mit und als auch ohne deinen Dienst angezeigt.

scientific
Beiträge: 2972
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von scientific » 17.01.2018 20:02:19

Nicht notify-send.
Damit testest du nur, ob ein notification-daemon läuft.

Versuch mal als root von einem TTY mit notify-send etwas zu schicken... Oder vom cronjob. Du wirst scheitern.

Verwendest du hingegen dbus-send wie im Abschnitt "Shell" angegeben (das muss ich noch an das Paket anpassen, bzw, du nimmst den Befehl von github), dann hast du die Nachricht bei allen graphisch angemeldeten Usern. Gleichzeitig.

Danke für deinen Hinweis. Da muss ich wohl die Beschreibung noch eindeutiger ausführen.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Beiträge: 6324
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Neuer Wiki-Artikel über Desktop-Notifications von System-Services mittels dbus

Beitrag von smutbert » 17.01.2018 21:36:33

Unter stretch funktioniert es perfekt.

Antworten