32 lines
933 B
Nim
32 lines
933 B
Nim
# SPDX-FileCopyrightText: ☭ 2022 Emery Hemingway
|
|
# SPDX-License-Identifier: Unlicense
|
|
|
|
## See the rofi-script(5) manpage for documentation.
|
|
|
|
import std/[cmdline, envvars, strutils, tables]
|
|
import preserves, syndicate, syndicate/relays
|
|
import ./schema/rofi
|
|
|
|
if getEnv("ROFI_OUTSIDE") == "":
|
|
quit("run this program in rofi")
|
|
|
|
runActor("rofi_script_actor") do (turn: var Turn):
|
|
resolveEnvironment(turn) do (turn: var Turn; ds: Cap):
|
|
case paramCount()
|
|
of 0:
|
|
let pat = ?:Options
|
|
onPublish(turn, ds, pat) do (options: seq[string]):
|
|
stdout.writeLine options.join("\n")
|
|
quit()
|
|
|
|
of 1:
|
|
var select = Select(option: commandLineParams()[0])
|
|
for (key, val) in envPairs():
|
|
if key.startsWith "ROFI_":
|
|
select.environment[Symbol key] = val
|
|
message(turn, ds, select)
|
|
sync(turn, ds, stopActor)
|
|
|
|
else:
|
|
quit("rofi passed an unexpected number of arguments")
|