Alarma#
Reads events from Evolution Data Server (EDS).
Installation#
Requirements#
- Linux with GNOME desktop environment
- Evolution Data Server (libedataserver-1.2)
- pkg-config
- Rust 1.70 or later
sudo apt-get install libedataserver1.2-dev pkg-config
Usage#
List calendar sources#
alarma sources list
List events#
# List all events for the next 60 days
alarma events list
# Filter by specific calendar source
alarma events list --source "my-calendar-uid"
# Custom date range
alarma events list --date-from 2026-01-01 --date-until 2026-12-31
# JSON output
alarma events list --format json
Development#
Architecture#
The project follows clean architecture principles:
- Domain Layer: Pure Rust business logic with no external dependencies
- Infrastructure Layer: Platform-specific implementations (EDS, future: CalDAV, Google Calendar)
- Presentation Layer: CLI and future UI implementations
crates/
├── alarma-core/
│ └── src/
│ ├── domain/ # Domain models (Event, CalendarSource, etc.)
│ ├── repository.rs # Repository trait definitions
│ ├── service.rs # Business logic layer
│ └── error.rs # Error types
├── alarma-eds/
│ └── src/
│ ├── bindings/ # Generated FFI bindings
│ ├── ffi/ # Safe FFI wrappers
│ └── repository.rs # EDS repository implementation
└── alarma-cli/
└── src/
├── commands/ # Command handlers
├── output/ # Output formatters
└── main.rs
┌─────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ (alarma-cli) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Commands │ │ Output │ │ CLI Args │ │
│ │ Handlers │ │ Formatters │ │ Parsing │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ Domain Layer │
│ (alarma-core) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Domain │ │ Repository │ │ Service │ │
│ │ Models │ │ Traits │ │ Layer │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ • CalendarEvent • CalendarSource • DateRange │
│ • EventTime • AlarmaError • CalendarService │
└─────────────────────────────────────────────────────────┘
↑
│
┌─────────────────────────────────────────────────────────┐
│ Infrastructure Layer │
│ (alarma-eds) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ FFI │ │ Bindings │ │ Repository │ │
│ │ Wrappers │ │ (Generated) │ │ Impl │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ • RAII Safety • Bindgen • EdsRepository │
│ • Error Mapping • Memory Mgmt • EDS Integration │
└─────────────────────────────────────────────────────────┘
│
↓
┌──────────────────────┐
│ Evolution Data │
│ Server (C library) │
└──────────────────────┘