aboutsummaryrefslogtreecommitdiff
path: root/home/.local/bin/dbusmonitor
blob: f3b3d4aa3e856900c21853c432204765febb6695 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/python3
# dbus-monitor --system "path=/org/freedesktop/NetworkManager,interface=org.freedesktop.DBus.Properties,type=signal,member=PropertiesChanged"

from gi.repository import GLib
import pydbus
loop = GLib.MainLoop()
systemd = pydbus.SessionBus().get(".systemd1")
nm = pydbus.SystemBus().get("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager")

# https://developer.gnome.org/NetworkManager/stable/nm-dbus-types.html#NMMetered
# 0 = The metered status is unknown
# 1 = Metered, the value was statically set
# 2 = Not metered, the value was statically set
# 3 = Metered, the value was guessed
# 4 = Not metered, the value was guessed
def check_metered(changed):
    value=nm.Metered
    if (value == 2 or value == 4):
        # start unit (replace any conflicting requests that might have been
        # enqueued to systemctl but not yet run)
        systemd.StartUnit("unmetered-internet.target", "replace")
    else:
        systemd.StopUnit("unmetered-internet.target", "replace")

nm.PropertiesChanged.connect(check_metered)
loop.run()