What you’ll build: Learn to install, configure, and effectively use Calcurse to manage appointments, events, and to-do items directly from the Linux command line.
Time needed: ~25 minutes
Prerequisites: A Linux operating system (e.g., Ubuntu, Fedora, Arch), Access to a terminal/command line, Basic familiarity with Linux commands (e.g., sudo, package managers)
Version used: unknown
Prerequisites and Installation: Bringing Calcurse to Your Terminal
Welcome! In this tutorial, we’re going to explore Calcurse, a powerful yet minimalist calendar and scheduling application designed for the Linux command line. If you spend a lot of time in your terminal, Calcurse can be an incredibly efficient way to manage your schedule without ever leaving the keyboard. It’s lightweight, customizable, and keeps your data local, giving you full control.
Before we dive in, let’s make sure your system is ready and install Calcurse.
Checking Your Linux Environment
You’ll need a Linux operating system and access to a terminal. We’ll use common package managers for installation, so having sudo privileges is essential.
Installing Calcurse
Calcurse is available in the official repositories of most Linux distributions, making installation straightforward. Open your terminal and follow the instructions for your specific distribution.
For Debian/Ubuntu-based systems:
If you’re using a system like Ubuntu, Debian, or Linux Mint, you’ll use apt to install packages. First, it’s a good practice to update your package lists.
sudo apt update
This command refreshes the list of available software packages. Once that’s complete, you can install Calcurse:
sudo apt install calcurse
This command downloads and installs the Calcurse package and any necessary dependencies.
For Fedora/RHEL-based systems:
If you’re on Fedora, CentOS, or a similar Red Hat-based distribution, you’ll use dnf (or yum on older systems).
sudo dnf install calcurse
This command will fetch and install Calcurse for your system.
For Arch Linux-based systems:
Arch Linux users will use pacman for package management.
sudo pacman -S calcurse
This command synchronizes the package database and then installs Calcurse.
Verifying the Installation
After running the installation command, you can verify that Calcurse is installed and accessible by checking its version or simply trying to launch it.
calcurse --version
You should see output similar to this (the version number might differ):
calcurse version 4.8.0
If you see a version number, congratulations! Calcurse is ready to go. If you encounter an error like command not found, double-check your installation command and ensure there were no errors during the installation process.
⚡ Note: Calcurse stores its data in a hidden directory within your home folder, typically
~/.calcurse/. This is where your appointments, events, and to-do items will be saved, along with your configuration. It’s a good idea to know where this is for backups!
At this point, you’ve successfully installed Calcurse on your Linux system. We’re now ready to launch it for the first time and explore its interface.
First Launch and Interface Overview
Now that Calcurse is installed, let’s launch it and get acquainted with its interactive interface. This is where you’ll spend most of your time managing your schedule.
Launching Calcurse
To start Calcurse, simply type calcurse in your terminal and press Enter:
calcurse
Understanding the Default Layout
Upon first launch, Calcurse presents a clean, text-based interface divided into three main panes. This layout is designed to give you a quick overview of your schedule.
Here’s a simple representation of how the screen is typically divided:
+-------------------+---------------------+
| | |
| Calendar | Appointments |
| | |
+-------------------+---------------------+
| | |
| To-Do List | |
| | |
+-------------------+---------------------+
Let’s break down each pane:
- Calendar (Top-Left): This pane displays a monthly calendar. The current day is highlighted, and days with events or appointments might be marked differently (e.g., with a dot). You can navigate this calendar to see different months.
- Appointments (Top-Right): This pane shows your appointments and events for the currently selected day in the Calendar pane. This is where you’ll see your detailed schedule for a specific date.
- To-Do List (Bottom-Left): This pane is for your ongoing tasks. Unlike appointments, to-do items aren’t tied to a specific date but can have priorities.
Here’s a visual flow of the main components:
⚡ Note: If this is your very first launch, all panes will likely be empty, except for the current date highlighted in the calendar. Don’t worry, we’ll fill them up soon!
Exiting Calcurse
To exit Calcurse at any time, simply press the q key. Calcurse will automatically save your changes and return you to your terminal prompt.
You’ve successfully launched Calcurse and identified its core interface components. This foundational understanding will make navigating and interacting with your calendar much easier.
Navigating the Calcurse Interface
Calcurse is designed for keyboard-centric interaction. Mastering a few key presses will allow you to move swiftly between panes, days, and items.
Switching Between Panes
The most fundamental navigation is switching between the three main panes: Calendar, Appointments, and To-Do List.
- Press
Tabto cycle forward through the panes. - Press
Shift + Tabto cycle backward through the panes.
Try it now: launch calcurse and press Tab a few times. Observe which pane becomes active (usually indicated by a different color or cursor).
Moving Within Panes
Once a pane is active, you can use arrow keys or common Vim-like keybindings to move around:
Calendar Pane:
horLeft Arrow: Move to the previous day.lorRight Arrow: Move to the next day.korUp Arrow: Move to the previous week (same day of week).jorDown Arrow: Move to the next week (same day of week).Ctrl + horCtrl + Left Arrow: Move to the previous month.Ctrl + lorCtrl + Right Arrow: Move to the next month.n: Go to the next day with an appointment or event.p: Go to the previous day with an appointment or event.t: Jump to today’s date.
Appointments Pane:
jorDown Arrow: Move to the next appointment/event.korUp Arrow: Move to the previous appointment/event.
To-Do List Pane:
jorDown Arrow: Move to the next to-do item.korUp Arrow: Move to the previous to-do item.
⚡ Note: The current date in the Calendar pane dictates what appears in the Appointments pane. If you navigate to a different day in the Calendar, the Appointments pane will update accordingly.
Quitting Calcurse
To exit Calcurse and return to your terminal, press q. All your changes are saved automatically.
Practice these navigation commands for a moment. Get comfortable moving between panes and exploring different dates. This fluidity is key to efficient use of Calcurse.
You’ve now learned how to navigate Calcurse’s interface, allowing you to move between different views and dates effortlessly. Next, we’ll start populating your schedule.
Adding Appointments and Events
Calcurse distinguishes between appointments (which have a specific start and end time) and events (which are all-day occurrences). Let’s learn how to add both.
Adding Your First Appointment
An appointment is something that happens at a specific time on a specific day.
Navigate to the desired day: In the Calendar pane, use the arrow keys (
h,l,j,k) ortfor today to select the day you want to add the appointment to.Switch to the Appointments pane: Press
Tabuntil the Appointments pane is active.Press
ato add: Pressinga(for add) will prompt you for appointment details at the bottom of the screen.You’ll see a prompt like this:
Appointment (HH:MM-HH:MM) on YYYY-MM-DD:Enter appointment details:
- First, enter the start time and end time in
HH:MM-HH:MMformat. Use 24-hour format. - Then, enter the description of your appointment.
Let’s add an appointment for a “Team Sync Meeting” today from 10:00 AM to 11:00 AM. Assuming today is 2026-05-12:
Appointment (HH:MM-HH:MM) on YYYY-MM-DD: 10:00-11:00 Team Sync MeetingPress
Enter.⚠️ Common mistake: Forgetting the
HH:MM-HH:MMformat or using AM/PM. Calcurse expects 24-hour time. If you only provide one time, it assumes a one-hour duration starting at that time.- First, enter the start time and end time in
Verify: The “Team Sync Meeting” should now appear in your Appointments pane for the selected day.
Adding an All-Day Event
Events are things that happen all day and don’t have a specific start or end time, like a holiday or a birthday.
Navigate to the desired day: Ensure the correct day is selected in the Calendar pane.
Switch to the Appointments pane: Activate the Appointments pane using
Tab.Press
eto add an event: Pressinge(for event) will prompt you for event details.You’ll see a prompt like this:
Event on YYYY-MM-DD:Enter event details: Just enter the description of your all-day event.
Let’s add an event for “Project Deadline” today:
Event on YYYY-MM-DD: Project DeadlinePress
Enter.Verify: “Project Deadline” should now appear in your Appointments pane for the selected day, often prefixed with
[ALL]to indicate it’s an all-day event.
Editing and Deleting Items
- Editing: With the Appointments pane active and an item selected (using
j/k), pressE(Shift+e) to edit. You’ll be prompted to modify the existing details. - Deleting: With the Appointments pane active and an item selected, press
dto delete. Calcurse will ask for confirmation (Are you sure? (y/n)). Pressyto confirm.
You’ve successfully added, edited, and deleted both appointments and all-day events in Calcurse. Your schedule is starting to take shape!
Managing To-Do Items
Beyond scheduled appointments and events, Calcurse also provides a dedicated space for managing your ongoing tasks or “to-do” items. These are not tied to specific dates but can be prioritized.
Adding a New To-Do Item
Switch to the To-Do List pane: Press
Tabuntil the To-Do List pane is active.Press
ato add: Just like with appointments,ais for add.You’ll see a prompt:
To-do item:Enter the to-do item description:
Let’s add “Write monthly report”:
To-do item: Write monthly reportPress
Enter.Verify: The item “Write monthly report” should now appear in your To-Do List pane.
Prioritizing To-Do Items
Calcurse allows you to assign priorities to your to-do items, helping you focus on what’s most important.
Select a to-do item: In the To-Do List pane, use
jandkto select “Write monthly report”.Press
Pto change priority: PressingP(Shift+p) will cycle through priority levels.A: Highest priorityB: High priorityC: Medium priority (default)D: Low priorityE: Lowest priority
Press
Pa few times and observe how the letter next to your to-do item changes. Let’s set “Write monthly report” toApriority.A Write monthly report
Marking To-Do Items as Done
Once you’ve completed a task, you can mark it as done.
Select the completed to-do item: Select “Write monthly report” in the To-Do List pane.
Press
mto mark as done: Pressingm(for mark) will toggle the item’s status. It will typically be marked with a*or similar indicator, or moved to a “done” section (depending on your configuration).* Write monthly reportPress
magain to unmark it.
Editing and Deleting To-Do Items
- Editing: With the To-Do List pane active and an item selected, press
E(Shift+e) to edit its description. - Deleting: With the To-Do List pane active and an item selected, press
dto delete it. Confirm withy.
You’ve now mastered managing your to-do items, including adding, prioritizing, marking as done, editing, and deleting them. This provides a simple but effective way to track your tasks alongside your scheduled events.
Viewing Your Calendar and Schedule
Calcurse offers flexible ways to view your schedule, both interactively within the application and quickly from the command line without launching the full interface.
Navigating Your Interactive Calendar
We’ve already touched on this, but let’s reinforce the interactive viewing options:
- Daily View:
- Use
h(left arrow) andl(right arrow) in the Calendar pane to move day-by-day. - The Appointments pane will always reflect the selected day.
- Use
- Weekly View:
- Use
k(up arrow) andj(down arrow) in the Calendar pane to move week-by-week (keeping the same day of the week).
- Use
- Monthly View:
- Use
Ctrl + handCtrl + lto jump to the previous and next months respectively.
- Use
- Jump to Today:
- Press
tat any time to return the Calendar pane’s focus to the current day.
- Press
- Jump to Next/Previous Item:
- Press
nto jump to the next day with an appointment/event. - Press
pto jump to the previous day with an appointment/event. This is very useful for quickly reviewing your upcoming or past busy days.
- Press
Quick Views from the Command Line
Calcurse also has a powerful non-interactive mode, allowing you to query your schedule directly from the terminal without opening the full TUI. This is great for quick checks or scripting.
View today’s appointments and events:
calcurse -aThis command will print all appointments and events for the current day and then exit.
View your to-do list:
calcurse -tThis command displays your entire to-do list.
View schedule for a specific number of days:
You can specify how many days from today you want to see. For example, to see your schedule for the next 3 days:
calcurse -d 3This will show today, tomorrow, and the day after tomorrow. You can also specify a negative number to look back. For example, to see yesterday and today:
calcurse -d -2⚡ Note: The
-doption’s behavior can be a little tricky.calcurse -d 1shows only today.calcurse -d 2shows today and tomorrow.calcurse -d -1shows only yesterday. It’s about the number of days relative to today, including today.View schedule for a specific date range:
You can specify a start and end date using the
-sand-eoptions. For example, to view your schedule from May 1st, 2026 to May 7th, 2026:calcurse -s 2026-05-01 -e 2026-05-07
You’ve now gained a comprehensive understanding of how to view your calendar and schedule, both interactively within Calcurse and through convenient command-line queries. This flexibility makes Calcurse a versatile tool for managing your time.
Common Commands and Shortcuts
To truly become efficient with Calcurse, it’s helpful to have a quick reference for the most frequently used commands and shortcuts. These are primarily used within the interactive Calcurse interface.
Here’s a summary of essential keybindings:
| Action | Keybinding | Pane(s) | Description |
|---|---|---|---|
| Navigation | |||
| Cycle Panes | Tab | All | Move focus to the next pane (Calendar -> Appointments -> To-Do -> Calendar). |
| Cycle Panes (Reverse) | Shift+Tab | All | Move focus to the previous pane. |
| Move Day (Left/Right) | h / l | Calendar | Navigate to the previous/next day. |
| Move Week (Up/Down) | k / j | Calendar | Navigate to the previous/next week (same day of week). |
| Move Month (Left/Right) | Ctrl+h / Ctrl+l | Calendar | Navigate to the previous/next month. |
| Jump to Today | t | Calendar | Set the Calendar focus back to the current date. |
| Next day with item | n | Calendar | Jump to the next day that has an appointment or event. |
| Previous day with item | p | Calendar | Jump to the previous day that has an appointment or event. |
| Move Item (Up/Down) | k / j | Appointments/To-Do | Move cursor to the previous/next item in the active list. |
| Adding Items | |||
| Add Appointment | a | Appointments | Add a new appointment for the selected day. |
| Add All-day Event | e | Appointments | Add a new all-day event for the selected day. |
| Add To-Do Item | a | To-Do List | Add a new to-do item. |
| Managing Items | |||
| Edit Item | E | Appointments/To-Do | Edit the currently selected appointment, event, or to-do item. |
| Delete Item | d | Appointments/To-Do | Delete the currently selected item (requires confirmation). |
| Change To-Do Priority | P | To-Do List | Cycle through priority levels (A-E) for the selected to-do item. |
| Mark To-Do as Done | m | To-Do List | Toggle the ‘done’ status for the selected to-do item. |
| Other | |||
| Quit Calcurse | q | All | Exit the Calcurse application (changes are saved automatically). |
⚡ Note: Many of these shortcuts are context-sensitive. For example,
awill add an appointment/event if the Appointments pane is active, but a to-do item if the To-Do List pane is active.
Command-Line Query Examples (Review)
These are useful for quick checks outside the interactive interface:
calcurse: Launch interactive mode.calcurse -a: Show today’s appointments and events.calcurse -t: Show the to-do list.calcurse -d N: Show schedule forNdays from today (including today).calcurse -s YYYY-MM-DD -e YYYY-MM-DD: Show schedule for a specific date range.
By familiarizing yourself with these common commands and shortcuts, you’ll significantly speed up your workflow and make managing your calendar with Calcurse a seamless experience.
Customization and Configuration Basics
One of Calcurse’s strengths is its configurability. You can tailor its appearance and some behaviors to better suit your preferences. All of Calcurse’s settings are stored in a simple text file.
Locating the Configuration File
Calcurse stores its configuration in your home directory, within the hidden .calcurse folder. The primary configuration file is config.
ls ~/.calcurse/
You should see files like apts, todo, config, and potentially others. The config file is what we’re interested in for customization.
Editing the Configuration
To make changes, you’ll need to open ~/.calcurse/config with your preferred text editor. We’ll use nano for simplicity, but vim, emacs, or any other terminal editor will work.
nano ~/.calcurse/config
This will open the configuration file. You’ll see various sections and key-value pairs.
Making a Simple Customization
Let’s try changing a basic setting, like the default view or the color scheme.
Scroll through the file. You’ll find sections like [general], [layout], [colors], etc.
Example: Changing the Default View
Under the [general] section, you might find a line like default-panel. This controls which panel is active when Calcurse first starts.
Find the
default-panelline. It might look like this:default-panel=apts(where
aptsmeans the Appointments panel)Change
aptstotodoif you prefer to start with your To-Do List active:default-panel=todo
Example: Modifying Colors
Under the [colors] section, you’ll find entries for different interface elements. Each line specifies an element and its foreground and background colors.
Find a line like
color-calendar-today=green,default. This sets the color for today’s date in the calendar.Change
greentoblue(or any other supported terminal color likered,yellow,magenta,cyan,white,black,default).color-calendar-today=blue,default⚡ Note:
defaultas a background color usually means transparent or your terminal’s default background.Save and Exit:
- If using
nano: PressCtrl + Oto save, thenEnterto confirm the filename, andCtrl + Xto exit. - If using
vim: PressEsc, then type:wqandEnter.
- If using
Verifying Your Changes
After saving the config file, relaunch Calcurse:
calcurse
You should observe your changes immediately. For instance, if you changed the default-panel, a different pane will be active on startup. If you changed a color, that element should now display in your chosen color.
Understanding Hooks (Advanced)
Calcurse also supports “hooks,” which are external scripts that can be triggered by certain events (e.g., when an appointment is due, or when Calcurse starts/exits). While beyond the scope of this beginner tutorial to implement, knowing they exist opens up possibilities for advanced automation, like sending desktop notifications or syncing with other tools. You can find more about them in the official Calcurse manual.
You’ve successfully customized Calcurse’s basic configuration, learning how to locate and modify its settings file. This allows you to personalize your Calcurse experience to better fit your workflow and aesthetic preferences.
Troubleshooting and Tips
Even with a straightforward tool like Calcurse, you might encounter minor hiccups or want to optimize your usage. Here are some common troubleshooting points and helpful tips.
Common Troubleshooting Scenarios
“Unexpected config key” error: If you see an error message like
error: "Unexpected config key in section General: ClientID", it usually means your~/.calcurse/configfile contains an entry that Calcurse doesn’t recognize or that’s specific to a newer/older version.- Solution: Open
~/.calcurse/configand carefully review the line mentioned in the error. If it’s something you added manually and it’s causing issues, try commenting it out by adding a#at the beginning of the line, or remove it. If you’re unsure, you can back up yourconfigfile and let Calcurse generate a fresh one (though this will reset all your customizations).
- Solution: Open
Calcurse doesn’t start / blank screen: This can sometimes happen if your terminal environment isn’t correctly configured for
ncursesapplications or if your terminal doesn’t support the necessary features.- Solution: Ensure your
TERMenvironment variable is set correctly (e.g.,echo $TERMshould outputxterm-256coloror similar). Try launching Calcurse in a different terminal emulator if you have one. Reinstalling Calcurse might also resolve dependency issues.
- Solution: Ensure your
Data loss concerns: Calcurse saves your data automatically, but like any local data, it’s susceptible to disk issues or accidental deletion.
- Solution: Regularly back up your
~/.calcurse/directory. You can simply copy the entire folder to a safe location. For example:This creates a timestamped backup of your Calcurse data.cp -r ~/.calcurse/ ~/calcurse_backup_$(date +%Y%m%d)
- Solution: Regularly back up your
Useful Tips for Daily Use
Use
calcurse -afor quick daily checks: Instead of launching the full TUI, a quickcalcurse -ain your terminal or even your shell prompt (if you configure it) gives you an instant overview of your day.Integrate with your shell: Some users integrate
calcurse -aorcalcurse -tinto their shell’srcfile (e.g.,~/.bashrc,~/.zshrc) to display upcoming appointments or tasks every time they open a new terminal session.Learn the
rkey for recurring items: If you have an appointment that repeats (e.g., a weekly meeting), select it in the Appointments pane and pressr. Calcurse will guide you through setting up recurrence rules (daily, weekly, monthly, yearly, or custom). This saves a lot of manual entry.Notifications: Calcurse has a built-in notification system. If you leave Calcurse running in a terminal, it can notify you of upcoming appointments. For desktop notifications, you might need to explore the
notify-sendhook (requires more advanced setup).Explore the manual: The official Calcurse manual (
man calcurseorcalcurse.org/files/manual.html) is an excellent resource for detailed information on every feature, including advanced configuration, hooks, and CalDAV synchronization (which is experimental).
By being aware of these common issues and tips, you can ensure a smoother and more efficient experience with Calcurse. Remember, consistency is key to making any calendar tool effective!
What to Build Next
You’ve successfully installed, configured, and learned the basics of managing your schedule with Calcurse. This is a solid foundation, but the power of a command-line tool often lies in how you integrate it into your wider workflow. Here are three ideas to extend your Calcurse usage:
Create a Custom Shell Alias for Daily Briefing: Instead of typing
calcurse -aevery time, create a shell alias (e.g.,cbrieffor “Calcurse Briefing”) that also shows your top-priority to-do items. You could add this to your~/.bashrcor~/.zshrcfile:alias cbrief='echo "--- Today''s Schedule ---" && calcurse -a && echo "\n--- High Priority To-Do ---" && calcurse -t | grep "^A "'This would give you a quick, personalized overview with a single command.
Set Up Basic Desktop Notifications via Hooks: Explore Calcurse’s hook system to trigger desktop notifications for upcoming appointments. This typically involves writing a small script (e.g.,
~/.calcurse/hooks/pre-notify) that usesnotify-send(a common Linux utility) to pop up a notification. You’ll need to consult the Calcurse manual for the exact hook name and parameters it passes to your script.Automate Calcurse Data Backup: Create a
cronjob that automatically backs up your~/.calcursedirectory daily or weekly. This ensures your schedule data is always safe. You could schedule a script that copies the directory to a cloud-synced folder (like Dropbox or Nextcloud) or another secure location on your system. For example, a simple daily cron entry could be:0 3 * * * cp -r /home/youruser/.calcurse /home/youruser/calcurse_backups/calcurse_$(date +\%Y\%m\%d)(Remember to replace
/home/youruserwith your actual home directory and create thecalcurse_backupsfolder.)