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

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

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

Beitrag von scientific » 11.01.2018 01:21:07

Hi Leute!

Ich hab einen neuen Artikel über Desktop-Notifications von Hintergrund- und System-Services geschrieben, welche das Problem elegant löst, dass man notify-send für jeden einzelnen eingeloggten User separat mittels sudo oder runuser ausführen muss und zuvor testen ob die Session auch tatsächlich eine graphische Session ist.

Wiki-Artikel zum Thema Desktop-Notification_von_Systemservice_mittels_dbus

Bitte um Test und Ergänzung/Korrektur.

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
smutbert
Moderator
Beiträge: 8314
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

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

Beitrag von smutbert » 11.01.2018 23:46:18

Danke
(und schade, dass etwas vergleichbares bei Debian/freedesktop.org/... nicht schon von Haus dabei ist, so muss jeder Dienst seinen eigenen „notification-daemon-Clientdienst“ mitbringen, zum Beispiel Debianapparmor-notify).

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

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

Beitrag von inne » 12.01.2018 14:10:41

Code: Alles auswählen

inne@mydebian:~
$ dbus-send Testmessage Body
Must use org.mydomain.Interface.Signal notation, no dot in "Body"
EXIT STATUS: 1
inne@mydebian:~
$ 

Code: Alles auswählen

inne@mydebian:~
$ /usr/local/bin/desktop-notify.py
  File "/usr/local/bin/desktop-notify.py", line 5
    systembus = dbus.SystemBus()|sessionbus = dbus.SessionBus()
SyntaxError: can't assign to operator
EXIT STATUS: 1
inne@mydebian:~
$ 
Mehr konnte ich nicht testen, weil das obige ja schon bei mir nicht funktioniert!

Und was ich auch nicht verstehe ist, das im Kapitel "User-Dienst der Graphischen Session" und "Senden der Message an den Systembus von der Shell" beide Skripte /usr/local/bin/desktop-notify.py als Pfad haben. Sind das nicht zwei verscheide? Einmal der Deamon und einmal das Programm...

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

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

Beitrag von smutbert » 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).

Dass die Pfade übereinstimmen ist tatsächlich etwas unglücklich.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
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 00:12:16

smutbert hat geschrieben: ↑ zum Beitrag ↑
12.01.2018 23:46:53
Dass die Pfade übereinstimmen ist tatsächlich etwas unglücklich.
Da kann scientific ja einfach dein "d" an den Namen des Deamon anhängen. Ansonsten wäre es schön den Artikel technisch fehlerfrei zu bekommen, weil das kann man gut brauchen!

Schöne Idee, ich habe da gleich 2mal Verwendung für :-)

Benutzeravatar
jph
Beiträge: 1049
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 » 13.01.2018 08:05:55

Hier (Stretch 64 Bit mit GNOME) der gleiche Fehler:

Code: Alles auswählen

jan@x220:~$ dbus-send Testmessage Body
Must use org.mydomain.Interface.Signal notation, no dot in "Body"
Da müsste der Artikel m.E. überarbeitet werden.

Was mir auch nicht ganz klar ist, was der Lauschdienst ist. Ist das „nur“ ein Vehikel, um die Nachricht auf den Bus zu legen?

One more thing: Ich würde mir an deiner Stelle, wenn der Artikel fertig ist, noch mal die Gliederung vornehmen. Aktuell wiederholst du den Namen des Artikels als erste Überschrift und hängst da alle weiteren Überschriften drunter. Ich würde mit einer Einleitung/Zielsetzung des Artikels beginnen (die kann der Leser überfliegen und weiß dann, ob der Artikel für ihn relevant ist) und die Grundlagen und die Umsetzung in gleichgeordneten Folgeabschnitten unterbringen, die du wiederum unterteilen kannst.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
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 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).
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

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
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 12:18:21

jph hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 08:05:55
Hier (Stretch 64 Bit mit GNOME) der gleiche Fehler:

Code: Alles auswählen

jan@x220:~$ dbus-send Testmessage Body
Must use org.mydomain.Interface.Signal notation, no dot in "Body"
Da müsste der Artikel m.E. überarbeitet werden.
Ist hier vlt. sogar notify-send(1) aus Debianlibnotify-bin gemeint und nicht dbus-send?

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

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

Beitrag von habakug » 13.01.2018 14:14:55

inne hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 12:18:21
Ist hier vlt. sogar notify-send(1) aus Debianlibnotify-bin gemeint und nicht dbus-send?
Ja. [1]

Gruss, habakug

[1] https://wiki.archlinux.org/index.php/De ... ifications
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

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

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

Beitrag von smutbert » 13.01.2018 15:39:51

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 […]
Ja, bis dorthin habe ich den Artikel jetzt inklusive notify-send korrigiert und hoffentlich keine neuen Fehler eingebaut.

scientific
Beiträge: 3020
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 20:47:39

Vielen Dank für eure Anmerkungen und Korrekturen.
Ich komm beruflich grad weniger dazu ins Debianforum zu schreiben.

Ich checks nochmal mit meiner Lösung quer, was ich da falsch getippt hab.

Ich mein übrigens schon dbus-send. Das sendet auch an den Systembus und kann vom Serviceskript als root benutzt werden.
Notify-send funzt ja nur innerhalb einer Session eines einzelnen Users.
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
Moderator
Beiträge: 8314
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

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

Beitrag von smutbert » 13.01.2018 21:04:55

scientific hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 20:47:39
[…]
Ich mein übrigens schon dbus-send. Das sendet auch an den Systembus und kann vom Serviceskript als root benutzt werden.
Notify-send funzt ja nur innerhalb einer Session eines einzelnen Users.
Dort wo du es tatsächlich meinst hat es niemand angezweifelt.

Gemeint ist es im Absatz zum Testen ob ein notification-daemon läuft - dort hast du imho schon notify-send gemeint (dort hab ich im Artikel auch dbus-send durch notify-send ersetzt). (Mir ist zuerst nur aufgefallen, dass die Befehlsoptionen nicht zu dbus-send passen, dass sie aber zu notify-send passen ist mir erst aufgefallen, nachdem Inne und Habakug es geschrieben haben).
Zuletzt geändert von smutbert am 13.01.2018 21:19:46, insgesamt 1-mal geändert.

scientific
Beiträge: 3020
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 21:19:04

Ja da hast du recht.
Bin noch nicht ganz bei der Sache... :)
Etwas später hab ich dann Ruhe und Muse, alles zu lesen und zu überarbeiten.

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: 3020
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 21:47:30

smutbert hat geschrieben: ↑ zum Beitrag ↑
11.01.2018 23:46:18
Danke
(und schade, dass etwas vergleichbares bei Debian/freedesktop.org/... nicht schon von Haus dabei ist, so muss jeder Dienst seinen eigenen „notification-daemon-Clientdienst“ mitbringen, zum Beispiel Debianapparmor-notify).
na das ist ja ein ganz schön umfangreiches Progrämmchen... Aber ich vermute, der tut auch nix anderes, als etwas auf Systembus schreiben, was dann am Sesseinbus abgefangen wird um es an einen Notification-Daemon weiterzuleiten...

Da ich perl nicht wirklich kann, tut ich mir schwer, das Programm jetzt näher zu analysieren.

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: 3020
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 21:55:58

jph hat geschrieben: ↑ zum Beitrag ↑
13.01.2018 08:05:55
Hier (Stretch 64 Bit mit GNOME) der gleiche Fehler:

Code: Alles auswählen

jan@x220:~$ dbus-send Testmessage Body
Must use org.mydomain.Interface.Signal notation, no dot in "Body"
Da müsste der Artikel m.E. überarbeitet werden.

Was mir auch nicht ganz klar ist, was der Lauschdienst ist. Ist das „nur“ ein Vehikel, um die Nachricht auf den Bus zu legen?

One more thing: Ich würde mir an deiner Stelle, wenn der Artikel fertig ist, noch mal die Gliederung vornehmen. Aktuell wiederholst du den Namen des Artikels als erste Überschrift und hängst da alle weiteren Überschriften drunter. Ich würde mit einer Einleitung/Zielsetzung des Artikels beginnen (die kann der Leser überfliegen und weiß dann, ob der Artikel für ihn relevant ist) und die Grundlagen und die Umsetzung in gleichgeordneten Folgeabschnitten unterbringen, die du wiederum unterteilen kannst.
Wie schon korrekt angemerkt und korrigiert (danke @smutbert) ist es notify-send und nicht dbus-send in diesem Falle.

Der "Lauschdienst" tut nix anderes als in einer graphischen Session am Systembus zu lauschen und Messages von dort übersetzen und an den Notification-Daemon dieser Session wiederum über dbus weiterzusenden.
Wie schon in der Einleitung des Artikels erläutert ist das Notwendig, da man von einem Systemdienst aus, der über cron, systemd oder ähnliches als root oder ein anderer User gestartet nicht direkt auf jeden einzelnen Notification-Daemon zugreifen kann - oder nur äußerst umständlich mit dem Auslesen der angemeldeten User, dem suchen der grafischen Sessions dieses Users und dann das Auslesen von Environment-Variablen. Das funktioniert einfach nicht zuverlässig, weil es von der verschiedenen Session- und Loginmanagern abhängt, wie man all diese Werte kriegt.

Daher sendet der Service eine Message an den SystemBus von dbus. Der Lauschdienst in jeder einzelnen Session lauscht am Systembus, ob eine Nachricht an ihn gerichtet kommt und leitet diese dann (ein wenig weiterverarbeitet - das genaue Design hängt vom Anwendungsfall ab) an den Notification-Daemon weiter, der dann die Message am Desktop darstellt.
Dieses Design funktioniert immer, wenn dbus installiert und gestartet ist (Soweit ich weiß, ist das in so gut wie allen modernen Linux-Systemen der Fall) und ein Notification-Daemon in der graphischen Session läuft.

Die Gliederung werd ich mir nochmal genauer zu Gemüte führen. Danke für die Hinweise!

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: 3020
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: 3273
Registriert: 29.06.2013 17:32:10
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.^^

scientific
Beiträge: 3020
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: 3273
Registriert: 29.06.2013 17:32:10
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

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
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 Anonymous am 14.01.2018 00:52:46, insgesamt 1-mal geändert.

scientific
Beiträge: 3020
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: 3020
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: 3020
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: 1049
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: 3020
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

Antworten