Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NVDA Sync

A small portable Windows utility for mirroring selected NVDA components from one primary NVDA folder to up to five secondary NVDA folders.

The intended use is to keep a main installed NVDA profile and one or more portable NVDA copies aligned without manually copying add-ons, gestures, dictionaries, profiles, or other configuration files every time.

Behaviour

  • One primary folder pushes to up to five secondary folders, with optional per-folder overrides.
  • Settings are stored beside the app in Settings\settings.json.
  • Folder pickers accept an NVDA folder, portable NVDA folder, NVDA configuration folder, or known component folder.
  • The primary folder is shown read-only and can be chosen with Browse or found with Detect.
  • Supported components are add-ons, input gestures through gestures.ini, nvda.ini, speech dictionaries, configuration profiles with profileTriggers.ini, other root configuration files, other root configuration folders, and optional portable NVDA program-file updates.
  • Add-ons are selected by default; add-on sync can copy all add-ons, update only add-ons already present in a secondary, or be disabled per target. Potentially machine-specific configuration is opt-in.
  • Python cache files and log files are excluded by default.
  • Transient Chrome/WebView-style cache and session files created by add-ons are skipped so locked browser-profile files do not create noisy sync failures.
  • Auto-sync watches the primary folder and pushes changes after a 1.5 second debounce.
  • Unavailable removable-drive secondary folders are skipped without interrupting the user. Their return is checked at a configurable interval from 1 to 1440 minutes, defaulting to 60 minutes, and a sync runs only after a folder becomes available again.
  • Manual sync is available from the main window or tray menu.
  • Normal GUI launches are single-instance across NVDA Sync copies: same-folder launches show the running copy, and different-folder launches close the older copy before the new one starts.
  • Folders, Add-ons, Options, and Help menus provide keyboard-first access to folder management, one grouped INI cleanup submenu for orphaned nvda.ini and gestures.ini sections, add-on pack export, local add-on install, Preferences, updates, project links, contact, donate, and About.
  • The nvda.ini cleanup tool lists top-level sections in a chosen NVDA data folder and can delete, copy, or move them into a configured secondary folder, keeping nested subsections with their parent. Its orphan selector leaves NVDA core and current add-on sections unchecked, selecting only non-core sections that cannot be tied to an add-on currently present in that NVDA folder.
  • The gestures.ini cleanup tool uses the same workflow for input gesture sections, preserving raw gesture lines such as None = kb:h and comma-separated bindings.
  • Both section cleanup tools include primary, secondary, and custom location choices, a dedicated list of sections checked for the pending operation, and a read-only preview for the selected section.
  • Existing INI files are backed up before cleanup writes, and live NVDA profile edits warn before proceeding because NVDA can overwrite external edits from memory.
  • Section cleanup logs requested section changes, NVDA close and reopen activity, backup creation, file sizes before and after edits, and line counts removed.
  • The speech dictionary entry manager can sync one dictionary file, import a received .dic file into a chosen NVDA folder and inferred dictionary location, or delete, copy, and move selected dictionary entries between NVDA folders while preserving NVDA's dictionary format.
  • Existing speech dictionaries are backed up before dictionary-entry writes, and live NVDA profile edits warn before proceeding for dictionary files too.
  • Add-on pack export writes readable JSON metadata for installed add-ons from the primary folder.
  • Local add-on install copies valid unpacked add-on folders and .nvda-addon archives into configured secondary folders only.
  • Preferences applies changes live and contains sync component choices, stale deletion, Python cache exclusion, log-file exclusion, optional rolling file logging, auto-sync, an unavailable-folder retry interval, Windows startup, start-minimized behavior, and update checks.
  • Optional stale-item deletion makes selected secondary components match the primary exactly. Existing-add-ons-only mode updates matching add-ons without adding new ones or removing target-only add-ons.
  • Folder validation prevents syncing a folder into itself or into a child/parent folder. Portable program-file updates compare before writing, create optional ZIP backups beside the portable folder, exclude user content from backups, refuse installed NVDA targets, and refuse portable copies that are currently running.
  • Command-line switches support closing, showing, syncing the running app, one-shot syncs, component selection, and cache handling.
  • The main window shows a visible log for the current run. Rolling file logging to Logs\NVDASync.log is optional and off by default; Options > Save log saves the visible log to a chosen file.
  • GitHub release update checks and self-updates use https://github.com/OnjLouis/NVDASync.
  • Automatic update checks default to startup for new users and can be set to never, startup, hourly, or daily, with optional silent install when a release ZIP is available.

Keyboard

  • F1: open the manual.
  • Shift+F1: check for updates.
  • Ctrl+F1: open the GitHub project page.
  • Ctrl+,: open Preferences.
  • Alt+D: detect the primary NVDA folder from likely user-profile locations.
  • Alt+A: open the Add-ons menu.
  • Enter: open properties for the selected secondary folder.
  • Delete: remove the selected secondary folder when the secondary list has focus.
  • Escape: hide to the notification area.

Command line

  • --show
  • --close
  • --sync-running
  • --startup-minimized
  • --sync
  • --primary <folder>
  • --secondary <folder>
  • --component <id>
  • --all-components
  • --export-addon-pack <file>
  • --install-addons <folder>
  • --delete-stale
  • --no-delete-stale
  • --exclude-python-cache
  • --include-python-cache
  • --exclude-log-files
  • --include-log-files
  • --save
  • --apply-update
  • --version
  • --help

Build

Run:

powershell -ExecutionPolicy Bypass -File .\Build.ps1

The portable app is written to portable.

About

Portable Windows utility for syncing selected NVDA configuration components between installed and portable copies.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages