www/docs/development/setup.md
This guide is for contributors who want to build, run, and debug Wox locally.
The repository contains four parts that usually move together during development:
wox.core/: Go backend, built-in plugins, settings, storage, packaging entrypointwox.core/ui/: native Go UI compiled in the same Go module and processwox.plugin.host.nodejs/: Node.js plugin hostwox.plugin.host.python/: Python plugin hostThe top-level Makefile wires these pieces together. In most cases you should start from the repository root instead of running each subproject manually.
Install these tools first:
Recommended editor:
.dmgMINGW64 shellpatchelfappimagetool, or point APPIMAGE_TOOL at a local binary when building AppImage packagesdpkg-dev (provides dpkg-deb) when building .deb packagesrpm (provides rpmbuild) when building .rpm packagesFrom the repository root:
make dev
What this does:
go:embedwoxmr under wox.coremake dev prepares the shared runtime pieces. Use make build when you need a runnable package with the embedded Go UI.
From the repository root:
make dev
make test
make test-go-ui-unit
make test-go-ui-smoke
make build
What they mean:
make dev: prepare the local development environmentmake test: run the Go integration-style test suite under wox.core/testmake test-go-ui-unit: run retained-widget and automation contract tests without opening a windowmake test-go-ui-smoke: build the test-only automation binary and run a real native launcher smokemake build: compile the Go UI into wox.core, then build plugin hosts and platform packaging outputIf you are changing backend/plugin contracts, make build is the safest final verification because it catches cross-project drift.
wox.core)Typical tasks:
Useful command:
make -C wox.core build
wox.core/ui)Typical tasks:
Useful command:
make test-go-ui-unit
make test-go-ui-smoke
Useful commands:
make -C wox.plugin.host.nodejs build
make -C wox.plugin.host.python build
Use these when you are only changing host/runtime behavior and want a faster loop than make build.
The docs live in www/docs. To preview them locally:
cd www
pnpm install
pnpm docs:dev
To generate a production build:
cd www
pnpm docs:build
Wox keeps runtime data under the user's home directory:
~/.woxC:\Users\<username>\.woxUseful subdirectories:
~/.wox/log/wox.log: core log~/.wox/log/ui.log: UI log~/.wox/plugins/: local plugin development directoryIf make dev fails early:
go, node, pnpm, and uv are all on PATHnuget is also on PATHMINGW64 shell instead of PowerShell or CMDpatchelf, appimagetool, dpkg-deb, and rpmbuild are installedIf a change compiles in one subproject but Wox still breaks end to end, run make build from the repository root. That is the fastest way to catch contract mismatches between wox.core, the Go UI, and the plugin hosts.