Skip to content

Mario-SO/cronos

Repository files navigation

Cronos

A terminal calendar app built with OpenTUI.

CleanShot.2026-01-06.at.00.31.45.mp4

Some earlier versions previously written in Zig + Sokol

Usage

bun install
bun dev

Keyboard Shortcuts

Key Action
[ / ] Previous / Next month
h / l Previous / Next day
k / j Previous / Next week
t Jump to today
a Add event
v Toggle agenda side view
g Go to date
s Search events
q Quit

Adding a Shortcut

This is the full flow for adding a new shortcut and its behavior end-to-end.

  1. Add the command definition
    • Add a new entry in the relevant module under src/core/commands/.
    • Include id, title, keys, layers, and run.
  2. Pick a layer
    • Use an existing layer (global, agenda, modal:add, modal:goto, modal:search) in layers.
    • If you need a new context, add a new layer in src/core/commands/keymap.ts.
  3. Wire UI handlers (if needed)
    • For view-local behavior, register handlers in the component via set...CommandHandlers.
  4. Update docs
    • Add global bindings to the Keyboard Shortcuts table in this README.

Example (add n to jump to next year):

// src/core/commands/calendar.ts
export const calendarCommands = [
  // ...
  {
    id: "calendar.nextYear",
    title: "Next year",
    keys: ["n"],
    layers: ["global"],
    run: () => goToNextYear,
  },
];

Roadmap

  • Help on '?'
  • Yearly view
  • Settings modal
    • Google Calendar sync
    • iCal export/import
  • Multiple day events??
  • Recurring events
  • cli support (cronos add ...)
  • Agenda side view
  • Persistent storage
  • Search through event list

About

Best calendar TUI

Resources

Stars

Watchers

Forks