Important
Local Patch Block (2026-02-18)
This fork currently includes targeted addon patches for Linux/Flatpak usage:
- Themes: fixed Gramps 6.0 theme switching behavior for reliable
Auto/Dark/Lightoperation on GNOME/Fedora. - GrampsWebSync:
- switched credential storage to Python keyring only (no DB metadata fallback).
- password persistence requires
keyring; if unavailable, passwords are not persisted. - hardened media transfer logic for shared files/subfolder layouts:
- skip URL-based media paths for local file-missing checks and upload/download
- treat
uploadmissing=1HTTP409“same checksum already exists” as success (no-op) to avoid false sync errors when multiple media objects reference the same file.
- RiksarkivetMediaFetch (new local addon):
- batch fetches citation media from
sok.riksarkivet.se/bildvisning/... - supports protected pages with login flow and session handling
- supports cancel/abort of long-running fetch operations
- optional login save uses keyring only (no plaintext/metadata fallback).
- batch fetches citation media from
Why:
- Keep dark mode behavior predictable across Linux desktop environments.
- Keep WebSync credential handling secure and consistent via system keyring.
- Add a working workflow for large citation media imports from Riksarkivet.
Source code of contributed third-party addons for the Gramps genealogy program.
You can develop your own addon following the Addons Development wiki.
Note: The default git branch is master. The master branch should only be used to develop addons that require features or changes found in the Gramps master branch. Most of the time addons should be developed to work with the current released version of Gramps (maintenance/gramps60 for the Gramps 6.0.x versions for example).
So use care when creating your addon to base off of the correct branch, and also to select the correct branch when creating a PR on Github.
Use make.py for Gramps addons.
Clone both this repository and the packaged addons repository if you intend to rebuild and publish the addon.
Once you use the commands below the version number will be incremented and the resulting files will be in the addons repository, ready to be committed.
Examples:
- Creates the initial addon-source directories and .pot file for the addon.
python3 make.py gramps60 init AddonDirectory
- Creates the initial empty
AddonDirectory/po/fr-local.pofile for the addon.
python3 make.py gramps60 init AddonDirectory fr
- Updates
AddonDirectory/po/fr-local.powith the latest translations.
python3 make.py gramps60 update AddonDirectory fr
- Build
../download/AddonDirectory.addon.tgz
python3 make.py gramps60 build AddonDirectory
- Create or update the listing entry for your addon.
python3 make.py gramps60 listing AddonDirectory
- For the developer who is merging PRs or other commits and needs to rebuild. and list one or more addons
python3 make.py gramps60 as-needed
-
clean - Removes unnecessary files (locale etc.) from the addon.
-
init [subcommand: all] - Get all of the strings from the addon and create necessary subdirectories and the template.pot for the addon or all addons if all is used.
-
update - Updates the language xx-local.po file from the pot file.
-
compile [subcommand: all] - Compiles the language xx-local.po files into the locale/xx/LD_MESSAGES/addon.mo files for all languages in addon, or all addons if all is used.
-
build [subcommand: all] - Builds the addon for release.
-
manifest-check - Checks if all files are correct in addon release file?
-
unlist - Unlist the addon from the listing.
-
fix - If the listing shows a repeated addon entry, fix it.
-
check - Checks if the addon listing matches the addon download version or if missing from the listing.
-
listing [subcommand: all] - Builds/creates a listing for the addon in each supported language.
-
as-needed [no other parameters] - Builds/lists/cleans only out of date addons in one step. It also rebuilds the template.pot file so it is also up to date.