func New() (*Conn, error) {
	return newConnection(dbus.SystemBusPrivate)
}
New establishes a connection to the system bus and authenticates.
Callers should call Close() when done with the connection.
package dbus
import (
	"fmt"
	"os"
	"strconv"
	"strings"
	"sync"
	"github.com/godbus/dbus"
)
const (
	alpha        = `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`
	num          = `0123456789`
	alphanum     = alpha + num
	signalBuffer = 100
)
func needsEscape(i int, b byte) bool {
	return strings.IndexByte(alphanum, b) == -1 ||
		(i == 0 && strings.IndexByte(num, b) != -1)
}
func PathBusEscape(path string) string {
	if len(path) == 0 {
		return "_"
	}
	n := []byte{}
	for i := 0; i < len(path); i++ {
		c := path[i]
		if needsEscape(i, c) {
			e := fmt.Sprintf("_%x", c)
			n = append(n, []byte(e)...)
		} else {
			n = append(n, c)
		}
	}
	return string(n)
}
type Conn struct {
	sysconn *dbus.Conn
	sysobj  *dbus.Object
	sigconn *dbus.Conn
	sigobj  *dbus.Object
	jobListener struct {
		jobs map[dbus.ObjectPath]chan<- string
		sync.Mutex
	}
	subscriber struct {
		updateCh chan<- *SubStateUpdate
		errCh    chan<- error
		sync.Mutex
		ignore      map[dbus.ObjectPath]int64
		cleanIgnore int64
	}
}