v0.39 · Lua scripting

Make spotatui yours, in Lua.

spotatui runs user-written Lua plugins. They react to playback events, add commands and key bindings, draw popups and playbar segments, restyle the theme, and make async HTTP requests, all through a small, curated API.

plugins/now-playing/main.lua
spotatui.require_api(4)

-- toast + playbar segment on every track change
spotatui.on("track_changed", function(t)
  spotatui.notify(t.artist .. " - " .. t.title)
end)

spotatui.command("accent_cycle", function()
  spotatui.set_accent(next_color())
end)
One command to install

Plugins are just git repos.

Any plugin published as a repository installs, updates and removes with a single command. It is cloned into your config directory and loaded at startup.

shell
# add, list, update, remove
$ spotatui plugin add owner/repo
$ spotatui plugin list
$ spotatui plugin new my-plugin
Ships with examples

First-party plugins to learn from

track-notifier

A now-playing toast and a playbar segment on every track change.

track-info-popup

A command that pops up the full details of the current track.

accent-cycler

A command that rotates the theme accent color on demand.

now-playing-webhook

POSTs a JSON payload to a webhook whenever the track changes.

session-stats

A directory plugin, with a required helper, that tracks session plays.

Read the API reference

Full reference in docs/scripting.md, plus the ecosystem overview in PLUGINS.md. API v4.

⚠
Plugins are not sandboxed.

A plugin runs with the same privileges as spotatui, with full standard library and network access. Treat installing one like running any program from the internet: only install plugins whose source you have read or whose author you trust.