A terminal-based calendar application for Windows, inspired by calcurse. This app provides a text-based interface for managing appointments and todo lists, similar to the Unix/Linux calcurse application but designed specifically for Windows Console.
-
Three-panel interface:
- Left panel: Daily appointments view
- Center panel: Monthly calendar with navigation
- Right panel: TODO list with priorities
-
Calendar functionality:
- Navigate through months and days
- Visual highlighting of current date
- Week numbers display
- Appointments indicator on calendar days
-
Appointment management:
- Add appointments with time and duration
- View daily appointments
- Edit and delete appointments
- Automatic sorting by time
-
TODO list:
- Add tasks with priority levels (Normal, High, Urgent)
- Mark tasks as complete/incomplete
- Sort by priority and completion status
- Visual indicators for priority and status
-
Data persistence:
- Automatic saving of appointments and todos
- Binary file format for fast loading
- Windows 7 or later
- MSVC compiler (MinGW recommended)
- Windows Console (cmd.exe or Windows Terminal)
Just run build.bat in a VS Dev CMD windows
calcurse.exeNavigation:
Arrow Keys: Navigate calendar/listsTab: Switch between panelsPgUp/PgDn: Previous/Next month (calendar) or scroll listsHome: Jump to today's date
Actions:
a: Add appointment (in calendar/appointment view) or todo (in todo view)d: Delete selected iteme: Edit selected itemSpace: Toggle todo completionh: Show helpq: Quit application
Calendar Navigation:
Left/Right: Previous/Next dayUp/Down: Previous/Next weekPgUp/PgDn: Previous/Next month
calendar-app/
├── main.c # Entry point and main loop
├── ui.c/h # Terminal UI rendering
├── calendar.c/h # Calendar calculations
├── appointments.c/h # Appointment management
├── todo.c/h # TODO list management
├── storage.c/h # File I/O operations
├── input.c/h # Keyboard input handling
├── build.bat # Windows build script
├── Makefile # Make build configuration
└── README.md # This file
The application creates two data files in the current directory:
appointments.dat: Stores all appointmentstodos.dat: Stores all TODO items
These files are automatically created on first run and updated when you exit the application.
Colors can be customized by modifying the color definitions in ui.h:
#define BORDER_FG (COLOR_CYAN | COLOR_BRIGHT)
#define HEADER_FG (COLOR_YELLOW | COLOR_BRIGHT)
#define TODAY_FG (COLOR_RED | COLOR_BRIGHT)Panel sizes can be adjusted in the draw_ui() function in ui.c.
This Windows implementation differs from the original calcurse in several ways:
- Console API: Uses Windows Console API instead of ncurses
- File paths: Uses current directory for data files instead of ~/.calcurse/
- Key bindings: Adapted for Windows console (e.g., function keys work differently)
- Visual style: ASCII box-drawing characters optimized for Windows console
- Ensure GCC is installed and in your PATH
- Try using MinGW-w64 for better Windows compatibility
- The app uses code page 437 for box-drawing characters
- Best viewed in Windows Console or Windows Terminal
- Ensure console font supports box-drawing characters (Consolas recommended)
- Check write permissions in the current directory
- Ensure you exit with 'q' to save data properly
- Recurring appointments
- Import/Export to iCal format
- Notification system
- Configuration file support
- Unicode support for better graphics
- Mouse support in Windows Terminal
This project is inspired by calcurse (https://github.com/lfos/calcurse) but is a completely new implementation for Windows.
Feel free to submit issues, fork the repository, and create pull requests for any improvements.