12 releases (breaking)
Uses new Rust 2024
| new 0.9.0 | Aug 1, 2026 |
|---|---|
| 0.8.0 | Jul 25, 2026 |
| 0.7.0 | Jul 18, 2026 |
#64 in Text editors
2MB
22K
SLoC
calki 🧮 📝
A terminal-based Markdown note-taking tool and interactive math sheet calculator with local wiki-style link navigation.
calki combines real-time document-based calculations with the inter-linked organization of a personal wiki, all inside a fast, Vim-friendly terminal interface.
🚀 Key Features
-
Interactive Math Sheets: Real-time evaluation of mathematical equations. Write assignments or expressions, end them with
=>, and watch them calculate instantly when you exit Insert mode. -
Inline Math Evaluation: Run calculations right inside your sentences using backticks:
`10m * 5m =>`. -
Powerful Calculation Engine: Far beyond basic arithmetic — trigonometry, statistics (
mean,median,stddev,variance), vectors and matrices ([[1, 2], [3, 4]]with*,transpose,det,inv, and linear systems vialinsolve(A, b)), complex numbers, symbolic differentiation (diff) and equation solving (solve— symbolic rearrangement, algebraic inversion, or Newton-Raphson with an optional initial guess for nonlinear equations), higher-order list operations (map,filter,reduce,zip),for/whileloops and conditionals, financial functions (pmt,fv,pv), hex/binary literals, and inlinesparklines. -
Dimensional & Currency Analysis: Supports physical units (length, speed, data size, temperature, time) and live-updated currency conversion (fetched via a background thread to prevent startup latency).
-
Export: Compile the current note to HTML, or the entire wiki to a single Markdown document (
Ctrl-e). -
Wiki Link Navigation: Create double-bracket links like
[[Project Goals]]to connect notes. PressEnteron a link in Normal mode to jump to it, andBackspaceorCtrl-oto navigate back. -
Todo List Checkboxes: Press
tin Normal mode while hovering over any list line to toggle the checkbox state[ ]<->[x], or convert a plain list bullet into a checkbox item automatically. -
Custom Functions: Define custom functions directly in your notes (e.g.
f(x) = x^2 + 2*x) and use them elsewhere in the same file. They are also displayed under the Variables panel. -
Triple-Panel Layout:
- Left Panel (Wiki Map): View references and incoming backlinks for the current note.
- Center Panel (Editor): Full-featured editor powered by
edtuiwith Vim motion bindings. - Right Panel (Variables Inspector): View active variable scopes and mathematical evaluations.
-
Persistent Session & Customization: Automatically saves your panel layout, cursor position, and preferences in
~/.config/calki/config.json. -
Automatic Version Checking: Checks for new updates on launch from GitHub in a non-blocking background thread and provides an option to skip/ignore warnings for the current update.
🛠️ Installation & Updating
To install calki, you will need the Rust toolchain installed on your machine. If you do not have it, install it via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
📦 Install via Cargo (Recommended)
Install the latest version of calki directly from crates.io:
cargo install calki
This compiles and installs the binary to your Cargo binary path (typically ~/.cargo/bin/), allowing you to run it anywhere by simply typing:
calki
🛠️ Build from Source
If you prefer to compile directly from the git repository:
-
Clone the repository:
git clone https://github.com/kemika180/calki.git cd calki -
Build the release binary:
cargo build --release -
(Optional) Install the binary globally:
cargo install --path . -
Run the compiled binary directly:
./target/release/calki
🔄 How to Update
-
If installed via Cargo: Re-run the install command to fetch the latest version:
cargo install calki -
If installed from Source: Pull the latest commits and rebuild:
cd /path/to/calki git pull origin main cargo install --path .
⌨️ Keybindings & Navigation
calki uses Vim-like modal editing. You can navigate the editor using standard Vim motions (h, j, k, l, w, b, etc.). Repeat multipliers are supported for repeatable motions (e.g., 5j moves 5 lines down, 12w jumps forward 12 words, and 3x deletes 3 characters).
Panel Controls
| Key | Action |
|---|---|
F2 |
Toggle Left Panel (Wiki Map) |
F3 |
Toggle Right Panel (Variables Inspector) |
Ctrl-h / Shift-H |
Move focus to the panel on the left |
Ctrl-l / Shift-L |
Move focus to the panel on the right |
Help & Reference Modals
| Key | Action |
|---|---|
F1 |
Toggle the unified Help & Math Function Guide |
Global Actions
| Key | Action |
|---|---|
/ |
Search the entire wiki for a keyword |
Ctrl-s |
Save the current note |
Ctrl-e |
Open the Export menu (HTML / Markdown) |
F4 |
Toggle editor word wrapping |
Ctrl-q or ZZ |
Save and quit |
Wiki Navigation (Normal Mode)
| Key | Action |
|---|---|
Enter |
Follow [[Wiki Link]] under the cursor / Create note |
Backspace or Ctrl-o |
Go back to the previous note in history |
Editor Actions
| Key (Mode) | Action |
|---|---|
t (Normal) |
Toggle todo item checkbox [ ] <=> [x] / Convert plain list bullet to todo checkbox |
Ctrl-d (Normal) |
Delete the current wiki note (with confirmation) |
Enter (Visual) |
Wrap the highlighted selection in a [[Wiki Link]] |
⚙️ Configuration
calki stores configuration files in your OS-appropriate configuration directory (typically ~/.config/calki/ on Linux/macOS).
The config.json file supports customization of the following options:
scrolloff(integer, default:5): The number of lines to keep visible above and below the cursor when scrolling.mouse_focus_on_hover(boolean, default:true): Iftrue, panel focus changes automatically when hovering the mouse pointer. Iffalse, mouse click is required to focus a panel.expand_variables_on_select(boolean, default:false): Iftrue, the variables panel will dynamically expand to show full variable names/values when it is selected/focused.line_numbers(string, default:"None"): Line numbering mode inside the editor. Supported options are"None","Absolute", and"Relative".word_wrap(boolean, default:false): Wrap long lines in the editor instead of scrolling horizontally. Toggle live withF4.
Example configuration file (~/.config/calki/config.json):
{
"scrolloff": 5,
"mouse_focus_on_hover": true,
"expand_variables_on_select": false,
"line_numbers": "None",
"word_wrap": false
}
📄 License
This project is licensed under the GPL v3 License. See the LICENSE file for details.
Dependencies
~12–30MB
~410K SLoC