Settings reference
Every key in settings.json, the file in your data directory that the app’s Settings writes. Keys are dotted paths into the file: appearance.theme is {"appearance": {"theme": …}}. For what each section of Settings does, see Settings.
| Key | Value | Default | What it does |
|---|---|---|---|
appearance.theme | "system", "dark", "light" | "system" | The theme of the app and of every plugin view. system follows the operating system. |
appearance.text_size | "small", "default", "large" | "default" | The size of the interface’s text. |
autostart | true or false | false | Start Pinrail when you log in. |
close_window | "hide", "quit" | "hide" | What closing the window does: hide it and keep running in the menu bar, or quit. |
menu_bar_icon | true or false | true | Show the menu bar icon, with the number of waiting reviews. |
sidebar.open | true or false | true | Whether the sidebar is open. The app keeps it, so a new window matches the last. |
notifications.enabled | true or false | true | Announce new reviews with a system notification. |
notifications.paused_until | an RFC 3339 time, or null | null | No notifications until this time. The menu bar and Settings pause them for a while. |
notifications.sound | true or false | true | Play the system sound with each notification. |
notifications.muted_plugins | a list of non-empty strings | [] | Plugins whose reviews are not announced. They are still counted in the menu bar. |
notifications.quiet_hours | {"from": "HH:MM", "to": "HH:MM"}, or null | null | No notifications between from and to, local time. A review that arrives then is not announced later. |
shortcut.global | a non-empty string | "alt+shift+w" | The shortcut that brings Pinrail forward from any app. |
shortcut.global_opens | "oldest", "inbox" | "oldest" | What the global shortcut opens: the oldest pending review, or the inbox. |
port | a port, 1 to 65535 | 4747 | The port of the server on 127.0.0.1. Takes effect after a restart; the CLI follows it. |
history.keep_days | a positive number of days, or null | null | Delete ended reviews older than this many days. null keeps them forever. |
updates.check | true or false | true | Look for a new version of Pinrail at start and every few hours, and download it in the background. It is installed when Pinrail restarts. |
welcome.seen | true or false | false | Whether the setup has been finished or skipped. While false, Pinrail opens on it. |
Plugin settings
Section titled “Plugin settings”Under plugins.<name>, each plugin keeps the settings its manifest declares in settings_schema, checked against that schema. See Settings and keys of a plugin.
Link permissions
Section titled “Link permissions”Under links.<name>, Pinrail keeps the sites a plugin may open without asking: source, where the plugin was installed from when the sites were allowed, and origins, such as ["https://github.com"]. The permission applies only while the plugin is installed from that source, and removing the plugin removes it. The app writes it when you allow a site, and a plugin’s view cannot change it.
Changing settings
Section titled “Changing settings”The app writes the file as settings change, and notices an edit made outside it. A key it does not know is kept as it is. A script can read and change settings through the local API, which checks every change the same way:
curl http://127.0.0.1:4747/api/v1/settingscurl -X PATCH http://127.0.0.1:4747/api/v1/settings \ -H 'content-type: application/json' -d '{"notifications": {"sound": false}}'