weekly-schedules
sidebar_position: 3
Weekly Schedules
Weekly schedule files (odd_weeks.toml and even_weeks.toml) define your day-to-day routine. The system automatically alternates between these files based on ISO week numbering.
File Structure
[monday]
# Monday-specific schedule
[tuesday]
# Tuesday-specific schedule
[wednesday]
# Wednesday-specific schedule
[thursday]
# Thursday-specific schedule
[friday]
# Friday-specific schedule
[saturday]
# Saturday-specific schedule
[sunday]
# Sunday-specific schedule
[common]
# Events that apply to all days
Event Types
1. Time Block References
Reference time blocks defined in settings.toml:
"09:00" = "pomodoro" # 25-minute work session
"10:00" = "long_break" # 40-minute break
"14:00" = "meeting" # 50-minute meeting
2. Time Point References
Reference time points defined in settings.toml:
"22:45" = "go_to_bed" # Bedtime reminder
"21:00" = "summary_time" # Daily summary reminder
"12:00" = "lunch_time" # Lunch reminder
3. Direct Messages
Write custom messages directly:
"15:00" = "Team standup meeting starts now! 👥"
"18:00" = "Time to wrap up your work day 🌅"
"08:00" = "Good morning! Let's make today productive 🚀"
4. Time Blocks with Custom Titles
Add custom titles to time blocks:
"09:00" = { block = "meeting", title = "Daily Standup" }
"14:00" = { block = "meeting", title = "Client Presentation" }
"16:00" = { block = "pomodoro", title = "Code Review" }
Complete Example
Here's a comprehensive weekly schedule for a developer:
[monday]
"08:00" = "wake_up"
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"13:00" = { block = "meeting", title = "Team Standup" }
"14:00" = "pomodoro"
"15:00" = "long_break"
"16:00" = "pomodoro"
"17:00" = "long_break"
[tuesday]
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"14:00" = { block = "meeting", title = "Sprint Planning" }
"15:00" = "pomodoro"
"16:00" = "long_break"
[wednesday]
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"13:00" = { block = "meeting", title = "Client Call" }
"14:00" = "pomodoro"
[thursday]
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"15:00" = { block = "meeting", title = "Code Review" }
[friday]
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"14:00" = { block = "meeting", title = "Demo Day" }
"15:00" = "pomodoro"
[saturday]
"09:00" = "pomodoro"
"10:00" = "long_break"
"11:00" = "pomodoro"
"14:00" = "exercise"
[sunday]
"10:00" = "pomodoro"
"11:00" = "long_break"
"14:00" = "exercise"
"16:00" = "planning"
[common]
"07:00" = "hydrate"
"12:00" = "lunch"
"15:00" = "stretch_time"
"19:00" = "dinner"
"21:00" = "summary_time"
"22:45" = "go_to_bed"
Important Considerations
Avoid Overlapping Events
Time blocks have durations, so avoid scheduling events that overlap:
# ❌ BAD: These overlap
"09:00" = "pomodoro" # Ends at 09:25
"09:15" = "meeting" # Starts while pomodoro is still running
# ✅ GOOD: Proper spacing
"09:00" = "pomodoro" # Ends at 09:25
"09:30" = "meeting" # Starts after pomodoro ends
Use Meaningful Titles
When using custom titles, make them descriptive:
"09:00" = { block = "meeting", title = "Daily Standup - Team Alpha" }
"14:00" = { block = "pomodoro", title = "Feature Implementation - User Auth" }
Balance Specificity and Reusability
Find the right balance between specific schedules and reusable components:
# Reusable time blocks in settings.toml
[time_blocks]
focus_work = 45
admin_work = 15
# Specific schedule in weekly files
[monday]
"09:00" = { block = "focus_work", title = "Deep Work - Project Planning" }
"10:00" = { block = "admin_work", title = "Email & Admin Tasks" }
Testing Your Schedule
Always test your schedule configuration:
# Check for configuration errors
reminder status
# View your complete schedule
reminder status -v
# Generate a visual schedule
reminder view
Common Patterns
Developer Schedule
[weekday]
"08:30" = "pomodoro"
"09:30" = "long_break"
"10:30" = "pomodoro"
"11:30" = "long_break"
"13:00" = { block = "meeting", title = "Team Standup" }
"14:00" = "pomodoro"
"15:00" = "long_break"
"16:00" = "pomodoro"
Student Schedule
[weekday]
"07:00" = "wake_up"
"08:00" = "breakfast"
"09:00" = { block = "study", title = "Morning Study Session" }
"11:00" = "long_break"
"13:00" = "lunch"
"14:00" = { block = "study", title = "Afternoon Study Session" }
"16:00" = "long_break"
Flexible Worker Schedule
[weekday]
"09:00" = { block = "deep_work", title = "Creative Work" }
"11:00" = "long_break"
"13:00" = { block = "meeting", title = "Client Check-in" }
"14:00" = { block = "admin", title = "Administrative Tasks" }
"15:00" = "long_break"
Troubleshooting
Schedule Not Loading
- Check TOML syntax with an online validator
- Ensure all referenced time blocks exist in
settings.toml - Verify file permissions and paths
Events Not Triggering
- Check system time and timezone settings
- Verify the service is running:
launchctl list | grep schedule - Review logs for error messages
Overlapping Events
- Use
reminder status -vto identify overlaps - Adjust timing to prevent conflicts
- Consider using shorter time blocks