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:

  1. 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.
  2. 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.
  3. 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:

flowchart LR A[Launch Calcurse] --> B[Main Interface] B --> C(Calendar Pane) B --> D(Appointments Pane) B --> E(To-Do List Pane) C -->|Selects Day| D

⚡ 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.

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 Tab to cycle forward through the panes.
  • Press Shift + Tab to 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:

    • h or Left Arrow: Move to the previous day.
    • l or Right Arrow: Move to the next day.
    • k or Up Arrow: Move to the previous week (same day of week).
    • j or Down Arrow: Move to the next week (same day of week).
    • Ctrl + h or Ctrl + Left Arrow: Move to the previous month.
    • Ctrl + l or Ctrl + 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:

    • j or Down Arrow: Move to the next appointment/event.
    • k or Up Arrow: Move to the previous appointment/event.
  • To-Do List Pane:

    • j or Down Arrow: Move to the next to-do item.
    • k or Up 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.

  1. Navigate to the desired day: In the Calendar pane, use the arrow keys (h, l, j, k) or t for today to select the day you want to add the appointment to.

  2. Switch to the Appointments pane: Press Tab until the Appointments pane is active.

  3. Press a to add: Pressing a (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:

  4. Enter appointment details:

    • First, enter the start time and end time in HH:MM-HH:MM format. 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 Meeting
    

    Press Enter.

    ⚠️ Common mistake: Forgetting the HH:MM-HH:MM format 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.

  5. 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.

  1. Navigate to the desired day: Ensure the correct day is selected in the Calendar pane.

  2. Switch to the Appointments pane: Activate the Appointments pane using Tab.

  3. Press e to add an event: Pressing e (for event) will prompt you for event details.

    You’ll see a prompt like this: Event on YYYY-MM-DD:

  4. 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 Deadline
    

    Press Enter.

  5. 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), press E (Shift+e) to edit. You’ll be prompted to modify the existing details.
  • Deleting: With the Appointments pane active and an item selected, press d to delete. Calcurse will ask for confirmation (Are you sure? (y/n)). Press y to 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

  1. Switch to the To-Do List pane: Press Tab until the To-Do List pane is active.

  2. Press a to add: Just like with appointments, a is for add.

    You’ll see a prompt: To-do item:

  3. Enter the to-do item description:

    Let’s add “Write monthly report”:

    To-do item: Write monthly report
    

    Press Enter.

  4. 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.

  1. Select a to-do item: In the To-Do List pane, use j and k to select “Write monthly report”.

  2. Press P to change priority: Pressing P (Shift+p) will cycle through priority levels.

    • A: Highest priority
    • B: High priority
    • C: Medium priority (default)
    • D: Low priority
    • E: Lowest priority

    Press P a few times and observe how the letter next to your to-do item changes. Let’s set “Write monthly report” to A priority.

    A Write monthly report
    

Marking To-Do Items as Done

Once you’ve completed a task, you can mark it as done.

  1. Select the completed to-do item: Select “Write monthly report” in the To-Do List pane.

  2. Press m to mark as done: Pressing m (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 report
    

    Press m again 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 d to delete it. Confirm with y.

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.

We’ve already touched on this, but let’s reinforce the interactive viewing options:

  1. Daily View:
    • Use h (left arrow) and l (right arrow) in the Calendar pane to move day-by-day.
    • The Appointments pane will always reflect the selected day.
  2. Weekly View:
    • Use k (up arrow) and j (down arrow) in the Calendar pane to move week-by-week (keeping the same day of the week).
  3. Monthly View:
    • Use Ctrl + h and Ctrl + l to jump to the previous and next months respectively.
  4. Jump to Today:
    • Press t at any time to return the Calendar pane’s focus to the current day.
  5. Jump to Next/Previous Item:
    • Press n to jump to the next day with an appointment/event.
    • Press p to jump to the previous day with an appointment/event. This is very useful for quickly reviewing your upcoming or past busy days.

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.

  1. View today’s appointments and events:

    calcurse -a
    

    This command will print all appointments and events for the current day and then exit.

  2. View your to-do list:

    calcurse -t
    

    This command displays your entire to-do list.

  3. 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 3
    

    This 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 -d option’s behavior can be a little tricky. calcurse -d 1 shows only today. calcurse -d 2 shows today and tomorrow. calcurse -d -1 shows only yesterday. It’s about the number of days relative to today, including today.

  4. View schedule for a specific date range:

    You can specify a start and end date using the -s and -e options. 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:

ActionKeybindingPane(s)Description
Navigation
Cycle PanesTabAllMove focus to the next pane (Calendar -> Appointments -> To-Do -> Calendar).
Cycle Panes (Reverse)Shift+TabAllMove focus to the previous pane.
Move Day (Left/Right)h / lCalendarNavigate to the previous/next day.
Move Week (Up/Down)k / jCalendarNavigate to the previous/next week (same day of week).
Move Month (Left/Right)Ctrl+h / Ctrl+lCalendarNavigate to the previous/next month.
Jump to TodaytCalendarSet the Calendar focus back to the current date.
Next day with itemnCalendarJump to the next day that has an appointment or event.
Previous day with itempCalendarJump to the previous day that has an appointment or event.
Move Item (Up/Down)k / jAppointments/To-DoMove cursor to the previous/next item in the active list.
Adding Items
Add AppointmentaAppointmentsAdd a new appointment for the selected day.
Add All-day EventeAppointmentsAdd a new all-day event for the selected day.
Add To-Do ItemaTo-Do ListAdd a new to-do item.
Managing Items
Edit ItemEAppointments/To-DoEdit the currently selected appointment, event, or to-do item.
Delete ItemdAppointments/To-DoDelete the currently selected item (requires confirmation).
Change To-Do PriorityPTo-Do ListCycle through priority levels (A-E) for the selected to-do item.
Mark To-Do as DonemTo-Do ListToggle the ‘done’ status for the selected to-do item.
Other
Quit CalcurseqAllExit the Calcurse application (changes are saved automatically).

⚡ Note: Many of these shortcuts are context-sensitive. For example, a will 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 for N days 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.

  1. Find the default-panel line. It might look like this:

    default-panel=apts
    

    (where apts means the Appointments panel)

  2. Change apts to todo if 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.

  1. Find a line like color-calendar-today=green,default. This sets the color for today’s date in the calendar.

  2. Change green to blue (or any other supported terminal color like red, yellow, magenta, cyan, white, black, default).

    color-calendar-today=blue,default
    

    ⚡ Note: default as a background color usually means transparent or your terminal’s default background.

  3. Save and Exit:

    • If using nano: Press Ctrl + O to save, then Enter to confirm the filename, and Ctrl + X to exit.
    • If using vim: Press Esc, then type :wq and Enter.

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

  1. “Unexpected config key” error: If you see an error message like error: "Unexpected config key in section General: ClientID", it usually means your ~/.calcurse/config file contains an entry that Calcurse doesn’t recognize or that’s specific to a newer/older version.

    • Solution: Open ~/.calcurse/config and 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 your config file and let Calcurse generate a fresh one (though this will reset all your customizations).
  2. Calcurse doesn’t start / blank screen: This can sometimes happen if your terminal environment isn’t correctly configured for ncurses applications or if your terminal doesn’t support the necessary features.

    • Solution: Ensure your TERM environment variable is set correctly (e.g., echo $TERM should output xterm-256color or similar). Try launching Calcurse in a different terminal emulator if you have one. Reinstalling Calcurse might also resolve dependency issues.
  3. 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:
      cp -r ~/.calcurse/ ~/calcurse_backup_$(date +%Y%m%d)
      
      This creates a timestamped backup of your Calcurse data.

Useful Tips for Daily Use

  1. Use calcurse -a for quick daily checks: Instead of launching the full TUI, a quick calcurse -a in your terminal or even your shell prompt (if you configure it) gives you an instant overview of your day.

  2. Integrate with your shell: Some users integrate calcurse -a or calcurse -t into their shell’s rc file (e.g., ~/.bashrc, ~/.zshrc) to display upcoming appointments or tasks every time they open a new terminal session.

  3. Learn the r key for recurring items: If you have an appointment that repeats (e.g., a weekly meeting), select it in the Appointments pane and press r. Calcurse will guide you through setting up recurrence rules (daily, weekly, monthly, yearly, or custom). This saves a lot of manual entry.

  4. 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-send hook (requires more advanced setup).

  5. Explore the manual: The official Calcurse manual (man calcurse or calcurse.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:

  1. Create a Custom Shell Alias for Daily Briefing: Instead of typing calcurse -a every time, create a shell alias (e.g., cbrief for “Calcurse Briefing”) that also shows your top-priority to-do items. You could add this to your ~/.bashrc or ~/.zshrc file:

    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.

  2. 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 uses notify-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.

  3. Automate Calcurse Data Backup: Create a cron job that automatically backs up your ~/.calcurse directory 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/youruser with your actual home directory and create the calcurse_backups folder.)