nvda-addon-kit
Scaffold, build, translate and install NVDA add-ons from a single
addon.toml.
This is the successor to the SCons-based addonTemplate. Instead of forking a template repository and editing buildVars.py, you install a tool:
pip install nvda-addon-kit
nvaddon init myAddon
cd myAddon
nvaddon build
Commands
| Command | Does |
|---|---|
nvaddon init [dir] |
Create a new add-on, interactively or from flags |
nvaddon build |
Produce <name>-<version>.nvda-addon |
nvaddon install |
Build, then hand the add-on to NVDA to install |
nvaddon install --link |
Link the working tree into NVDA's add-ons directory for development |
nvaddon pot |
Generate <name>.pot from Python sources and addon.toml |
nvaddon locale-add <lang>… |
Start a new translation |
nvaddon locale-update |
Merge new messages into every existing translation |
nvaddon locale-compile |
Compile .po files and translated manifests |
nvaddon check |
Validate addon.toml against add-on store rules |
nvaddon clean |
Remove generated build outputs |
nvaddon migrate |
Convert an existing buildVars.py to addon.toml |
nvaddon release <version> |
Set version and channel, commit, tag <version>-<channel>, and push |
nvaddon crowdin |
Sync translations with Crowdin |
Run nvaddon <command> --help for the flags each one accepts.
Releasing
nvaddon release 1.2.0 --channel beta
This writes the version and channel into addon.toml, commits, tags
1.2.0-beta, and pushes the commit and tag with git push --atomic so the
remote takes both or neither. If anything fails the working tree is restored to
where it started, leaving no half-made release behind. Use --no-push to stop
before publishing.
addon.toml
[addon]
name = "myAddon"
# Translators: Summary/title for this add-on, shown on install and in the add-on store.
summary = "Add-on user visible name"
# Translators: Long description shown for this add-on in the add-on store.
description = """Description for the add-on.
It can span multiple lines."""
version = "1.0.0"
author = "Name <name@domain.com>"
minimumNVDAVersion = "2024.1"
lastTestedNVDAVersion = "2025.3"
[build]
pythonSources = ["addon/globalPlugins/**/*.py"]
[l10n]
baseLanguage = "en"
The comment above a translatable key becomes that string's translator note in the generated
.pot, exactly as # Translators: comments in buildVars.py did:
#. Translators: Summary/title for this add-on, shown on install and in the add-on store.
#: addon.toml:3
msgid "Add-on user visible name"
msgstr ""
Migrating an existing add-on
cd myExistingAddon
pip install nvda-addon-kit
nvaddon migrate
nvaddon check
nvaddon build
migrate leaves buildVars.py, sconstruct and site_scons/ in place; delete them once you
are satisfied the build output matches.
Licence
GNU General Public License version 2 or later. See COPYING.txt.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nvda_addon_kit-0.1.0.tar.gz.
File metadata
- Download URL: nvda_addon_kit-0.1.0.tar.gz
- Upload date:
- Size: 54.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c01cb1021c9a50b9a2540350293b9f298140f1f0cc1f5070bcdd87f3d97d97a8
|
|
| MD5 |
573047be112f81f4a2b0f270911a4f70
|
|
| BLAKE2b-256 |
6dfcd9b7914990b9c8924c9c3b5c917acd9e7349bc939f382ea5535c6c97e4ac
|
File details
Details for the file nvda_addon_kit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nvda_addon_kit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 75.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cadef89ebe795194e37d04599f386ece15912e0456ec89e831d6c48a08e50034
|
|
| MD5 |
8f6a939fb642775f8639a0840954ace6
|
|
| BLAKE2b-256 |
11efa9bba00f54b6593f711bf70537e2cba16c69178b50f157114fcb501de05f
|