On 14.07.2021 19:30, m...@mike.franken.de wrote: > Hi, > > On Mittwoch, 14. Juli 2021 16:52:15 CEST Thomas Haller wrote: > [...] >>> so how can I use org.freedesktop.DBus.Properties.PropertiesChanged >>> then? >>> What would be the correct way instead? >>> Using >>> my $busobjpath = "/org/freedesktop/NetworkManager/Settings"; >>> as before? >>> This doesn't work either, though. >>> >>> Probably there is a fundamental misunderstanding regaring the concept >>> on my >>> side. >> >> Hi, >> >> I am not familiar with this Perl's Net::DBus, but in general: >> >> >> On D-Bus, you have the well-known name >> ("org.freedesktop.NetworkManager") where you find NetworkManager's D- >> Bus API. >> >> >> There, you find many D-Bus objects, at paths that start with >> "/org/freedesktop/NetworkManager". You see them with `busctl tree >> org.freedesktop.NetworkManager`. >> >> All of these objects also implement the standard D-Bus interface >> "org.freedesktop.DBus.Properties" -- as documented at >> https://dbus.freedesktop.org/doc/dbus-specification.html >> That interface, has (among) others a signal "PropertiesChanged". >> >> >> This "org.freedesktop.DBus.Properties.PropertiesChanged" signal works >> very similar to the earlier "PropertiesChanged" signals from the NM >> specific interfaces ( "org.freedesktop.NetworkManager*"). >> >> So, yes, there should be not much to do except replace the interface >> name "org.freedesktop.NetworkManager*" with >> "org.freedesktop.DBus.Properties". >> >> >> you mention specifically >> >> my $busobjpath = "/org/freedesktop/NetworkManager/Settings"; >> >> In `d-feet` you'll see that this object only has three properties. So >> you'll see few PropertiesChanged signals on that object... > > Yeah, my fault, I meant > my $busobjpath = "/org/freedesktop/NetworkManager"; > > 8-( > >> >> >> Does that help? Otherwise, please share a working, minimal example. > > Ok. > This is the working example I used before - btw. it stems from a suggestion > you made back in 2016/2017 :) > > #!/usr/bin/perl -w > > use strict; > > use Data::Dumper; > $Data::Dumper::Sortkeys = 1; > $Data::Dumper::Indent = 1; > use Net::DBus; > use Net::DBus::Dumper; > use Net::DBus::Reactor; > > my $oBUS = Net::DBus->system || die $!; > my $nm = "org.freedesktop.NetworkManager"; > my $oNM = $oBUS->get_service( $nm ) || die $!; > my $nmobjpath = "/org/freedesktop/NetworkManager"; > my $nmif = "org.freedesktop.NetworkManager"; > my $oNMIF = $oNM->get_object( $nmobjpath, $nmif ) || die $!; > > $nmobjpath = "/org/freedesktop/NetworkManager/Settings"; > $nmif = "org.freedesktop.NetworkManager.Settings"; > my $oNMIFS = $oNM->get_object( $nmobjpath, $nmif ) || die $!; > > $oNMIF->connect_to_signal( > "PropertiesChanged", sub { > &{ \&dbnm_onNMPropertiesChanged }( $oNM, $oNMIF, $oNMIFS, @_ ); > } > ); > my $reactor = Net::DBus::Reactor->main() || die $!; > $reactor->run() || die $!; > > sub dbnm_onNMPropertiesChanged { > my( $oNM, $oNMIF, $oNMIFS, $props ) = @_; > print "\n- props -\n", Dumper( $props ), "\n--\n"; > } >
NM PropertiesChanged and D-Bus org.freedesktop.DBus.Properties.PropertiesChanged have different signatures. You are dumping interface name, not properties dictionary. _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list