aboutsummaryrefslogtreecommitdiffhomepage
path: root/dbus/config.go
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-09-09 03:11:50 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-09-09 03:11:50 +0900
commit357cc4ce4d2888033a8163fe39861c8a88301da6 (patch)
treea6dbdd09fc5ef2dea82ad1c85627b6455c2f3477 /dbus/config.go
parent3242ce340621839d03ecf34bb3ed20d7c6f3cbb3 (diff)
dbus: implement xdg-dbus-proxy wrapper
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'dbus/config.go')
-rw-r--r--dbus/config.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/dbus/config.go b/dbus/config.go
new file mode 100644
index 00000000..9173d78d
--- /dev/null
+++ b/dbus/config.go
@@ -0,0 +1,59 @@
+package dbus
+
+type Config struct {
+ See []string `json:"see"`
+ Talk []string `json:"talk"`
+ Own []string `json:"own"`
+
+ Log bool `json:"log,omitempty"`
+ Filter bool `json:"filter"`
+}
+
+func (c *Config) Args(address, path string) (args []string) {
+ argc := 2 + len(c.See) + len(c.Talk) + len(c.Own)
+ if c.Log {
+ argc++
+ }
+ if c.Filter {
+ argc++
+ }
+
+ args = make([]string, 0, argc)
+ args = append(args, address, path)
+ for _, name := range c.See {
+ args = append(args, "--see="+name)
+ }
+ for _, name := range c.Talk {
+ args = append(args, "--talk="+name)
+ }
+ for _, name := range c.Own {
+ args = append(args, "--own="+name)
+ }
+ if c.Log {
+ args = append(args, "--log")
+ }
+ if c.Filter {
+ args = append(args, "--filter")
+ }
+
+ return
+}
+
+// NewConfig returns a reference to a Config struct with optional defaults.
+// If id is an empty string own defaults are omitted.
+func NewConfig(id string, defaults, mpris bool) (c *Config) {
+ c = &Config{Filter: true}
+
+ if defaults {
+ c.Talk = []string{"org.freedesktop.DBus", "org.freedesktop.portal.*", "org.freedesktop.Notifications"}
+
+ if id != "" {
+ c.Own = []string{id}
+ if mpris {
+ c.Own = append(c.Own, "org.mpris.MediaPlayer2."+id)
+ }
+ }
+ }
+
+ return
+}