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})