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