With Nix installed:
nix run github:getviset/Viset -- init demo
nix run github:getviset/Viset -- capture demo/capture.luaOpen demo/output/example.png. That is a complete, self-contained first
capture; edit demo/capture.lua to point it at your page.
The capture file keeps its configuration and browser actions together:
--[[
# viset
version = 1
output = "output/{device}-{theme}.png"
[devices.desktop.viewport]
width = 1280
height = 720
[matrix]
theme = ["light", "dark"]
]]
viset.page.navigate("https://example.com")
viset.snapshot()Viset expands the matrix and writes both outputs. The same model supports multiple devices, framed captures, and continuous animated WebP recording.
viset init generates the capture scaffold and LuaLS metadata. The optional
editor integrations below only add highlighting for embedded TOML and
JavaScript. They do not execute captures or replace initialization.
- Neovim 0.12+: install
getviset/viset.nvimwith your plugin manager and the Lua, TOML, and JavaScript Tree-sitter parsers. - Emacs 30.1+: install
getviset/viset.elfrom Git withpackage-vc-install. Emacs needs Tree-sitter support and compatible Lua, TOML, and JavaScript grammars. - VS Code 1.130+: install the
getviset.visetv0.1.0 VSIX from its GitHub release.getviset.visetis not currently listed on the Marketplace.
- Single-file intent. The strict TOML header and trusted Lua actions live in execution order.
- Matrix-native output. Declare devices and axes once; Viset expands them deterministically.
- Screenshots and motion. Capture PNG stills or pauseable animated WebPs.
- Direct ownership. Outputs are ordinary files ready for Git, docs, tests, or publishing.
| Read the wiki | Install Viset and learn the capture format and Lua API. |
| Try the examples | Start small, then explore device and theme matrices. |
| Review the benchmarks | See measured capture, encoder, pipeline, and decoder results. |
| Contribute | Build, test, format, and propose changes. |
Viset is pre-release software. The Nix flake is the supported public route today; release archives and package-manager channels will follow once they are verified.
Capture files are trusted local programs and are not sandboxed. Read a capture before running it.
Viset is available under the MIT License.