id = "plover" name = "Plover" homepage = "https://www.openstenoproject.org/plover/" # The project's own repository description. description = "Open source stenotype engine" # The icon Plover ships with itself, from plover/assets in its repository. icon = "https://raw.githubusercontent.com/openstenoproject/plover/main/plover/assets/plover-icon.svg" executables = ["plover"] [dotfiles] # plover/oslayer/config.py (the project's own source, main branch) builds the # configuration directory as # # config_directories = [getattr(appdirs, t)("plover") # for t in ("user_config_dir", "user_data_dir")] # CONFIG_BASENAME = "plover.cfg" # # so the location is whatever `appdirs.user_config_dir("plover")` returns. # reqs/dist.txt requires `appdirs` unpinned, so that is the released 1.4.4, # whose user_config_dir reads (github.com/ActiveState/appdirs at tag 1.4.4): # # if system in ["win32", "darwin"]: # path = user_data_dir(appname, appauthor, None, roaming) # roaming=False # else: # path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) # # and whose user_data_dir gives `~/Library/Application Support/` on # darwin and `//` on win32 — appauthor # falling back to appname, which Plover does not pass. So: # # macOS ~/Library/Application Support/plover # — confirmed by the Homebrew cask's zap stanza, which trashes # exactly that directory: https://formulae.brew.sh/api/cask/plover.json # Linux $XDG_CONFIG_HOME/plover, defaulting to ~/.config/plover # Windows %LOCALAPPDATA%\plover\plover — local rather than roaming because # user_config_dir defaults to roaming=False, and the name twice # because appauthor falls back to appname. # # The three are written out rather than folded into one named root: the Windows # one is under LOCALAPPDATA and nested a level deeper than any root produces. # (A `plover.cfg` next to the executable wins over all of them; that is Plover's # portable mode, and it is not under the user's home.) paths = [ "~/Library/Application Support/plover/", "~/.config/plover/", "%LOCALAPPDATA%/plover/plover/", ] # Same source file: the config directory is also where Plover writes plover.log # (rotated debug output) and where pip-installed plugins land, neither of which # is settings. Each carve-out is repeated under every spelling, or it would only # take effect on one platform. exclude = [ "~/Library/Application Support/plover/plover.log*", "~/Library/Application Support/plover/plugins/", "~/.config/plover/plover.log*", "~/.config/plover/plugins/", "%LOCALAPPDATA%/plover/plover/plover.log*", "%LOCALAPPDATA%/plover/plover/plugins/", ] # plover.cfg holds the machine type, the enabled system and the dictionary # list; the dictionaries beside it are JSON steno-to-English mappings the user # writes. No account, no credential. secret = [] # No machine_lines: the one thing in plover.cfg that names hardware is the # serial port of a steno machine, and Plover writes it under the machine's own # section name rather than a fixed key, so a prefix rule would be a guess.