43 lines
1.3 KiB
Nim
43 lines
1.3 KiB
Nim
|
import strformat
|
||
|
import osproc
|
||
|
|
||
|
type DbusProxy* = object
|
||
|
args: seq[string]
|
||
|
|
||
|
proc addSee*(proxy: var DbusProxy, name: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"--see={name}")
|
||
|
proxy
|
||
|
|
||
|
proc addTalk*(proxy: var DbusProxy, name: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"--talk={name}")
|
||
|
proxy
|
||
|
|
||
|
proc addOwn*(proxy: var DbusProxy, name: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"--own={name}")
|
||
|
proxy
|
||
|
|
||
|
proc addCall*(proxy: var DbusProxy, name: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"--call={name}")
|
||
|
proxy
|
||
|
|
||
|
proc addBroadcast*(proxy: var DbusProxy, name: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"--broadcast={name}")
|
||
|
proxy
|
||
|
|
||
|
proc paths*(proxy: var DbusProxy, systembus: string, filterbus: string): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add(&"unix:path={systembus}")
|
||
|
proxy.args.add(filterbus)
|
||
|
proxy
|
||
|
|
||
|
proc log*(proxy: var DbusProxy): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add("--log")
|
||
|
proxy
|
||
|
|
||
|
proc filter*(proxy: var DbusProxy): var DbusProxy {.discardable.} =
|
||
|
proxy.args.add("--filter")
|
||
|
proxy
|
||
|
|
||
|
proc exec*(proxy: DbusProxy): Process {.discardable.} =
|
||
|
# todo: start dbus proxy in bwrap
|
||
|
# todo: pass arguments as fd
|
||
|
startProcess("xdg-dbus-proxy", args = proxy.args, options = {poEchoCmd, poParentStreams, poUsePath})
|