All checks were successful
Test / Create distribution (push) Successful in 31s
Test / Sandbox (push) Successful in 1m52s
Test / Hakurei (push) Successful in 3m3s
Test / Planterette (push) Successful in 3m38s
Test / Hakurei (race detector) (push) Successful in 4m48s
Test / Sandbox (race detector) (push) Successful in 1m14s
Test / Flake checks (push) Successful in 1m6s
These packages loosely belong in the "system" package and "system" provides high level wrappers for all of them. Signed-off-by: Ophestra <cat@gensokyo.uk>
41 lines
911 B
Go
41 lines
911 B
Go
// 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]
|
|
}
|