Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Login, files and the CLI

Start at Login

Start Capycal at login (Settings > General) registers the app as a login item; it appears in System Settings > General > Login Items. If the app does not run from an app bundle, or macOS refuses, it writes a LaunchAgent to ~/Library/LaunchAgents/app.capycal-ui.plist instead. Turning it off removes the registration.

Sponsoring

30 days after the first successful sync, the app asks whether you’d like to sponsor Capycal, and after that about once a year. It only asks at a quiet moment: no sync running, no problem shown. The dialog has a button per way to sponsor, Sponsor on GitHub (GitHub Sponsors) and Support on Ko-fi (Ko-fi). Choosing one opens its page.

  • Sponsor on GitHub, Support on Ko-fi and Already Sponsoring ask again a year later, with a thank-you, in case the sponsorship was a one-time one or has ended.
  • Not Now (also Return, Esc or closing the dialog) asks again half a year later the first time, then a year later.
  • I’d Rather Not ends the asking for good.

The About dialog and Support Capycal at the end of Settings > General always list the same links; opening one there does not change when the app asks.

A line below the buttons says when the app asks again.

The app keeps this in its user defaults (SponsorFirstSeen, SponsorNext, SponsorSponsoring, SponsorNever in app.capycal). A capycal-ui binary started outside the app bundle, for example with cargo run, keeps them in the domain capycal-ui instead; use that name in the commands below. To see the dialog without waiting, start the app with CAPYCAL_ASK_SPONSOR=1; it then asks at the next quiet moment, whatever the defaults say:

CAPYCAL_ASK_SPONSOR=1 /Applications/Capycal.app/Contents/MacOS/capycal-ui

To see the thank-you a sponsor gets a year later, set SponsorSponsoring first:

defaults write app.capycal SponsorSponsoring -bool true

defaults delete app.capycal resets it all.

Another config file

The app uses the default config path, ~/Library/Application Support/capycal/capycal.toml. To run another config, start it with:

open -a Capycal --args -c /path/to/capycal.toml

Running alongside the CLI

The app takes the same config lock as the CLI. Don’t run the same config in the app and in a capycal daemon (for example the LaunchAgent from contrib/) at the same time: the second one shows or logs the first one’s pid and does not sync. Using the CLI for one-off commands such as --validate or --discover-eventkit while the app runs is fine.

A second copy of the app (for example Capycal.app/Contents/MacOS/capycal-ui started from a terminal while the app runs) says “Capycal is already running” and quits; Finder and open bring the running app forward anyway.

The CLI inside the bundle is at /Applications/Capycal.app/Contents/MacOS/capycal.

Where files live

WhatPath
Config~/Library/Application Support/capycal/capycal.toml
State~/Library/Application Support/capycal/state/ (or state_dir)
Config locks<state dir>/locks/
Log files~/Library/Logs/capycal/capycal-ui.log*
Login item fallback~/Library/LaunchAgents/app.capycal-ui.plist
Sponsor dialog answersuser defaults app.capycal

Calendar access is granted to “Capycal” in System Settings > Privacy & Security > Calendars.