Expand description
The configuration file: accounts, admin windows, the notes folder.
Default location: $XDG_CONFIG_HOME/sioul/config.toml, else
~/.config/sioul/config.toml. Passwords never go in it: they belong in the
system keyring (docs/architecture.md). See examples/config.toml.
Sioul writes to this file too, when you add or remove an account. It edits
it in place with toml_edit, so your comments and your order stay.
Structs§
- Account
- Agenda
Settings - Bitwarden
Settings - Call
Settings - The devices of calls in sites, by the names the system gives them; unsaid, the system’s own.
- Config
- Contact
Settings - How the contacts read phone numbers (docs/client.md, “Duplicates”).
- Github
Settings - What GitHub brings, once asked; its token is in the keyring.
- Invoice
Settings - Letter
Settings - Paper letters (docs/porch.md): the folder their scans arrive in.
- Mail
Settings - MapSettings
- McpSettings
- What an AI agent connected to
sioul mcpmay use, beyond reading and adding ([mcp], docs/mcp.md). - Named
Value - A name and what it stands for.
- Planning
Settings - What a day holds, as the plan learns it from your days (docs/capacity.md).
- Porch
Settings - What the Porch shows of what Sioul knows.
- Quiet
Settings - What quiet time keeps: the categories of tasks that are yours (family,
friends, leisure). Read through the word lists (
words::TaskWords:personal,work), which these settings replace while written. - Reach
Settings - Who may reach you when, channel by channel, as an older Sioul wrote it
before
[attention]: each row the columns ticked for it (“work”, “admin”, “leisure”, “meals”, “sleep”, “pause”); mail’s rows at the top of[reach], calls’ in[reach.calls], messages’ in[reach.messages]; a row left out kept its usual times, an empty one was never. Read once, to seed the matrix of what reaches you (attention::seeded). - Reading
- How long text reads (docs/client.md, “Calm first”): lines need air.
- Reminder
Settings - Reminders before dates (docs/reminders.md): one quiet notification each, never again.
- Rename
Value - One name changed.
- RowSettings
- One channel’s rows, each the columns ticked for it; a row left out keeps its usual times.
- Source
- A folder of mail to read, the account it belongs to, and the provider ids to trust for it.
- Spam
Settings - Sioul’s own spam filter (
[spam], docs/spam-filter.md): what it does with each verdict, and how sure it must be. One filter for every account. - Task
Kind - A kind of task, as you named it.
- Task
Settings - TimeOff
- Days off, from one day to another, both included.
- Time
OffValue - Days off, as the settings edit them.
- Weather
Settings - Window
Value - A day’s hours, as the settings edit them.
Enums§
- Account
Kind - Priority
- How an account’s mail ranks against the others’.
- Security
- How the connection to the mail server is encrypted. There is no plain option.
- Setting
Value - A setting’s value, as the window gives it back.
Constants§
- DEFAULT_
FETCH_ MINUTES - Minutes between two fetches of the folders the server does not push.
- DEFAULT_
HISTORY_ WEEKS - Weeks of history when the configuration says nothing.
- DEFAULT_
SYNC_ DAYS - Days of mail the first sync brings, when the account does not say.
Functions§
- add_
dav_ account - Adds a contacts-and-calendars account at the end of the configuration file.
- add_
imap_ account - Adds a mail account at the end of the configuration file, creating the file if needed.
- add_
portal - Adds a site: a web-only mailbox, a chat, opened in Sioul’s Sites.
- add_
site - Adds a site with the name it shows.
- add_
site_ as - Adds a site as the Sites page offers it: its name, address, type (“mailbox”, “chat”…), what it is for (“” for its type’s), the domains whose mail announces it, your categories (“Banque”).
- append_
account 🔒 - append_
site 🔒 - before_
sites_ path - The copy of
config.tomlkept before the sites moved:config-before-sites.toml, beside it. - cache_
dir $XDG_CACHE_HOME/sioul, else~/.cache/sioul: copies made to open attachments.- change_
kind - A kind renamed (
fromandto), taken away (toempty) or added (fromempty,toits name). Tasks keep the kind they have: taking a kind away only takes it off the choices. The kinds are read under the file’s lock, which the sharing takes too, as the file holds them then: a kind another device’s change brought in meanwhile stays. - config_
dir $XDG_CONFIG_HOME/sioul, else~/.config/sioul.- data_
dir $XDG_DATA_HOME/sioul, else~/.local/share/sioul: the mail.- default_
kinds 🔒 - Sioul’s kinds, before you name your own.
- default_
path - Where the configuration lives by default.
- downloads_
dir - Where the desktop puts downloads:
XDG_DOWNLOAD_DIRon Linux, the system’s elsewhere. - expand_
home - Expands a leading
~to the home folder (USERPROFILEon Windows): “/Notes”, and “\Notes” as Windows writes it. - fifteen 🔒
- filter_
table 🔒 - One filter as its table, through what
rules::Filterwrites (the usual values left out); its lists of conditions and actions inline. - history_
days - Days of history from a setting in weeks: two weeks by default, None for everything (0).
- make_
private_ dirs - Makes Sioul’s own folders (configuration, data, state, cache) yours alone, as they hold mail, keys, drafts and caches: made with mode 0700 on Unix, and narrowed to it when they exist already. Their parents are made as usual and never changed, and a folder that is a link is left as it is. Nothing to do elsewhere: a Windows profile’s folders are the user’s own. Called at start; what cannot be done is left, said by the first write that fails.
- migrate_
sites - Sites written as
[[account]]of kind “portal” by older files, moved to[[site]], in their order, each with the comments above it; their kind goes. Returns whether any moved. - migrate_
sites_ at_ start - The sites migration as the window runs it at each start (
migrate_sites), while the file still holds a site among its accounts: the file copied aside first (before_sites_path), once only, so that a migration that fails at each start never writes over the first copy, the file as it was. Returns whether any site moved. - move_
account - Moves an account
deltaplaces among those of its kind (sites among sites): the order the lists show them in. At either end, it stays. - move_
site - Moves a site
deltaplaces in the list: the order the Sites page shows (site_order, then the file’s). At either end, it stays. The file’s tables take that order. Withorder(the sharing writes format 2, where each site travels apart: docs/database.md, “The format of what travels”),site_ordersays it too, for your other devices; without, the list’s own order travels with it, as it always did, andsite_order, if there, follows it. - private_
dir 🔒 - One folder of Sioul’s own, made or narrowed to 0700.
- read_
document 🔒 - remove_
account - Removes an account from the configuration. Its mail and its password are not touched here.
- remove_
site - Takes a site out of the configuration; what its pages kept (sign-ins, cookies) stays in its profile.
- set_
account_ 🔒item - set_
auth - How an account signs in:
Some("google")for Google’s sign-in (an access token), None for a password (an app password given instead). - set_
enabled - An account switched on or off: off, it keeps its settings and is neither synced nor shown.
- set_
filters - Writes the mail filters whole, in their order, as
[[mail.filter]]tables, each condition and each action an inline table on a line of its own (rules::Filter); the rest of the file and its comments stay. None: the list is taken out. - set_
history - Sets how far back mail and the agenda reach, in weeks (0 for everything).
- set_
priority - Sets an account’s priority; “average”, the default, is written too, so the choice shows.
- set_
smtp - Records an account’s sending server (found from its address when first needed).
- set_
table - A table’s keys written at once, each a list of words (
Some) or taken out (None), the table kept even empty (it says it was written); andremove, keys or tables taken out (“reach”, “pause.doses”): one write, the comments kept (attention’s rows, the older keys they replace). - set_
trusted_ ids - Records the authserv-ids to trust for an account (learned at its first sync).
- set_
value - Sets one setting in the file, in place, keeping its comments and order:
history_weeks,reading.size(a table’s key),account.<id>.priority(an account’s),window(every admin window at once). An empty value removes the key, so its default comes back. - set_
writing - Sets your name as recipients see it and your signature (Markdown); empty removes them.
- sioul_
authserv_ id - The name under which Sioul writes its own checks of a message (RFC 8601
authserv-id): unique to this installation and under
.invalid, so no sender can write results that pass for Sioul’s. Made once, kept in the state folder. - slug
- Lowercase letters, digits and dashes: safe as a folder name and a TOML value.
- state_
dir $XDG_STATE_HOME/sioul, else~/.local/state/sioul: where sync and the Porch stopped.- swap_
tables 🔒 - Two tables trade places. Each read from the file keeps its place in it
(
Table::position), which orders the file when written: the places stay with the slots, or the file would come back in its old order. - two 🔒
- write_
document 🔒 - Writes next to the file, then renames, so a crash never leaves half a configuration. A configuration that is a link (kept in a dotfiles folder) is written where it points, the link kept.
- xdg 🔒
$<variable>/sioulwhen the variable is set, on every system (tests set them); else Linux’s XDG fallback, and the system’s own folders on Windows (%APPDATA%,%LOCALAPPDATA%) and macOS (~/Library/Application Support).- yes 🔒