Submission checklist
Feature type
Integration support
Feature summary
Allow calendar settings to pull in user calendars from GNOME online accounts
Motivation / use case
Parity with v4, integration with common user patterns
Proposed solution
something along the lines of:
// calendar_service.h — new members
std::unique_ptr<GoaBackend> m_goaBackend;
std::vector<GoaBackend::GoaAccount> m_goaAccounts;
In tick():
- For each GOA account with
isOAuth2: call GetAccessToken(), use result as bearer in CalDavClient (or GoogleClient for Google, bypasses api.noctalia.dev entirely)
- For password-based GOA: call
GetPassword(), feed into CalDavClient with calDavUri
// New module: src/calendar/goa_backend.h/.cpp
class GoaBackend {
public:
struct GoaAccount {
std::string objectPath; // /org/.../account_1234
std::string displayName;
std::string providerName; // "google", "nextcloud", etc.
std::string calDavUri; // from Calendar.Uri
bool isOAuth2;
};
void start(TickCallback onChange);
std::vector<GoaAccount> accounts() const;
// Called before each sync — returns fresh token or password
std::variant<std::string /*bearer*/, std::string /*password*/>
getCredential(const GoaAccount&);
};
No config changes, GOA accounts are auto-detected and live beside manual accounts
Alternatives considered
- manually add accounts (duplicative, time consuming)
- khal
References / related projects
No response
Additional context
No response
Submission checklist
Feature type
Integration support
Feature summary
Allow calendar settings to pull in user calendars from GNOME online accounts
Motivation / use case
Parity with v4, integration with common user patterns
Proposed solution
something along the lines of:
// calendar_service.h — new members std::unique_ptr<GoaBackend> m_goaBackend; std::vector<GoaBackend::GoaAccount> m_goaAccounts;In tick():
isOAuth2:callGetAccessToken(),use result as bearer inCalDavClient(orGoogleClientfor Google, bypasses api.noctalia.dev entirely)GetPassword(),feed intoCalDavClientwithcalDavUriNo config changes, GOA accounts are auto-detected and live beside manual accounts
Alternatives considered
References / related projects
No response
Additional context
No response