mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-04 04:42:05 -04:00
38 lines
839 B
Go
38 lines
839 B
Go
package utils
|
|
|
|
import (
|
|
"slices"
|
|
|
|
"github.com/godbus/dbus/v5"
|
|
)
|
|
|
|
func IsDBusServiceAvailable(busName string) bool {
|
|
conn, err := dbus.ConnectSystemBus()
|
|
if err != nil {
|
|
return false
|
|
}
|
|
defer conn.Close()
|
|
|
|
obj := conn.Object("org.freedesktop.DBus", "/org/freedesktop/DBus")
|
|
var owned bool
|
|
if err := obj.Call("org.freedesktop.DBus.NameHasOwner", 0, busName).Store(&owned); err != nil {
|
|
return false
|
|
}
|
|
return owned
|
|
}
|
|
|
|
func IsDBusServiceActivatable(busName string) bool {
|
|
conn, err := dbus.ConnectSystemBus()
|
|
if err != nil {
|
|
return false
|
|
}
|
|
defer conn.Close()
|
|
|
|
obj := conn.Object("org.freedesktop.DBus", "/org/freedesktop/DBus")
|
|
var activatable []string
|
|
if err := obj.Call("org.freedesktop.DBus.ListActivatableNames", 0).Store(&activatable); err != nil {
|
|
return false
|
|
}
|
|
return slices.Contains(activatable, busName)
|
|
}
|