RemindMe is a CLI reminder application written in Rust. It provides a simple way to manage reminders directly from your terminal, with automatic desktop notifications when reminders are due, without the need to be connected to the internet.
- Simple CLI Interface: Easy-to-remember commands for managing reminders
- Recurring Reminders: Set daily, weekly, monthly, or yearly recurring reminders
- Desktop Notifications: Get notified with desktop alerts when reminders are due
- Automatic Background Checks: System integration checks for due reminders every minute
- Flexible Management: List, add, edit, and delete reminders easily
- Smart Date Defaults: Automatically uses today or tomorrow when only time is specified
- Rust/Cargo (1.56.0 or newer)
- Linux system with systemd (for automatic notifications)
- libdbus development libraries (for desktop notifications)
-
Clone this repository:
git clone https://github.com/Skeleton-Hacker/CLI_Reminder.git
-
Run the setup script:
./setup.sh
The script will:
- Build the application from source
- Install it to your
~/.local/bindirectory - Set up systemd services for automatic notifications
- Create an uninstall script and documentation
# Show help and available commands
remindme help
# Add a new reminder (with automatic date selection)
remindme add --text "Buy groceries" --time "18:00"
# Add a reminder with specific date
remindme add --text "Doctor appointment" --time "14:30" --date "2023-09-18"
# Add a recurring reminder
remindme add --text "Weekly team meeting" --time "10:00" --recurrence weekly
# List all reminders
remindme list
# Delete a reminder by ID
remindme delete --id c7613d0e
# Delete a reminder by index
remindme delete --index 2
# Edit a reminder
remindme edit --id c7613d0e --text "Updated reminder text" --time "10:00"
# Check for due reminders manually
remindme notify
# With desktop notifications
remindme notify --desktopAdding Reminders:
# Basic syntax
remindme add --text "Your reminder text" --time "HH:MM" [--date "YYYY-MM-DD"] [--recurrence daily|weekly|monthly|yearly]
# When only time is provided, date defaults to:
# - Today if the time hasn't passed yet
# - Tomorrow if the time has already passed todayListing Reminders:
remindme listEditing Reminders:
remindme edit --id [ID] [--text "New text"] [--time "HH:MM"] [--date "YYYY-MM-DD"] [--recurrence none|daily|weekly|monthly|yearly]Deleting Reminders:
remindme delete --id [ID]
# or
remindme delete --index [NUMBER]After installation, RemindMe will check for due reminders every second and display desktop notifications automatically. This is handled by a systemd user service.
All reminders are stored in ~/.config/remindme/reminders.json. While you shouldn't need to edit this file directly, it's a simple JSON format for your reminders.
RemindMe now features an interactive Text User Interface (TUI) mode:
# Launch RemindMe in TUI mode
remindme --tuiIn TUI mode, you can:
- View all reminders in a scrollable list
- Add new reminders with a form interface
- Delete reminders with a single keystroke
- Navigate with keyboard shortcuts
q: Quit the applicationa: Add a new remindere: Edit a current reminderd: Delete the selected reminderh: View help screenl: Return to reminder list↑/↓: Navigate through reminders
To uninstall RemindMe:
~/.config/remindme/uninstall.sh- No desktop notifications: Make sure your system's notification daemon is running
- Service not running: Check systemd status with
systemctl --user status remindme-check.timer - Missing command: Run
source ~/.bashrcor restart your terminal if the command isn't found
RemindMe is built with Rust and uses the following major components:
- clap: For command-line argument parsing
- chrono: For date and time handling
- serde/serde_json: For JSON serialization and storage
- notify-rust: For desktop notifications
- anyhow: For error handling
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For additional help or questions, please open an issue in the GitHub repository.