26 lines
665 B
Nim
26 lines
665 B
Nim
# SPDX-FileCopyrightText: ☭ 2022 Emery Hemingway
|
|
# SPDX-License-Identifier: Unlicense
|
|
|
|
import std/asyncdispatch
|
|
import preserves
|
|
import syndicate
|
|
import mpdclient
|
|
|
|
type
|
|
XdgOpen {.preservesRecord: "xdg-open".} = object
|
|
uris: seq[string]
|
|
ListenOn {.preservesRecord: "listen-on".} = ref object
|
|
dataspace: Preserve[Ref]
|
|
|
|
bootDataspace("main") do (root: Ref; turn: var Turn):
|
|
connectStdio(root, turn)
|
|
let mpd = newMPDClient()
|
|
|
|
onPublish(turn, root, ?ListenOn) do (a: Assertion):
|
|
stderr.writeLine "got listen-on ", a
|
|
let ds = unembed a
|
|
onMessage(turn, ds, ?XdgOpen) do (uris: seq[string]):
|
|
for uri in uris: mpd.add uri
|
|
|
|
runForever()
|