From 82561d62b66f17c05604e87f18187bb3a91f00d2 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 2 Jul 2025 21:52:07 +0900 Subject: system: move system access packages These packages loosely belong in the "system" package and "system" provides high level wrappers for all of them. Signed-off-by: Ophestra --- system/dbus/dbus.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 system/dbus/dbus.go (limited to 'system/dbus/dbus.go') diff --git a/system/dbus/dbus.go b/system/dbus/dbus.go new file mode 100644 index 00000000..c5b4e812 --- /dev/null +++ b/system/dbus/dbus.go @@ -0,0 +1,40 @@ +// Package dbus wraps xdg-dbus-proxy and implements configuration and sandboxing of the underlying helper process. +package dbus + +import ( + "fmt" + "os" + "sync" +) + +const ( + SessionBusAddress = "DBUS_SESSION_BUS_ADDRESS" + SystemBusAddress = "DBUS_SYSTEM_BUS_ADDRESS" +) + +var ( + addresses [2]string + addressOnce sync.Once +) + +func Address() (session, system string) { + addressOnce.Do(func() { + // resolve upstream session bus address + if addr, ok := os.LookupEnv(SessionBusAddress); !ok { + // fall back to default format + addresses[0] = fmt.Sprintf("unix:path=/run/user/%d/bus", os.Getuid()) + } else { + addresses[0] = addr + } + + // resolve upstream system bus address + if addr, ok := os.LookupEnv(SystemBusAddress); !ok { + // fall back to default hardcoded value + addresses[1] = "unix:path=/run/dbus/system_bus_socket" + } else { + addresses[1] = addr + } + }) + + return addresses[0], addresses[1] +} -- cgit v1.3.1