RTNT is a terminal user interface for taking timestamped notes with support for syncing with external clocks. It was originally developed for taking notes during flight tests, but it can be useful for many other situations. RTNT allows you to capture the time of an event with a key press, and describe it later. This is useful when many complicated events are happening in rapid succession. Notes can be organized into titled sections and exported to CSV for further processing. All active key bindings are always visible at the bottom of the UI.
- Capture the time an event happens with a key press and describe it later
- Millisecond accurate timestamps
- Section markers to organize discussions
- Edit existing entries
- Save and load notes from CSV
- Fully keyboard driven with customizable bindings for maximum speed and efficiency
- Manual time hacks for syncing with external clocks
- Current time with source indicator shown in the status line
Add the binary with Cargo once the crate is published:
cargo install real_time_note_takercargo run --releaseAdditional CLI options are available:
--save-dir <PATH>to override the default save location--config <FILE>to load key bindings from a custom file-v/--verboseincrease logging outputcompletions <SHELL>generate shell completion scripts
Passing --file <PATH> will load notes from the given file and save them back on exit.
Press the key shown as Keys in the help line to open the binding menu. Use the arrow keys to select an action and press Enter to assign a new key. Bindings are stored in keybindings.json inside the configuration directory (typically ~/.config/rtnt).
The keybindings.json file contains a mapping of actions to key names. An example configuration looks like:
{
"up": "Up",
"down": "Down",
"edit": "e",
"new_note": "Enter",
"new_section": "s",
"save": "w",
"load": "l",
"file_menu": "f",
"quit": "q",
"cancel": "Esc",
"bindings": "b",
"theme": "t",
"time_hack": "h"
}use real_time_note_taker::{run, App};
fn main() -> std::io::Result<()> {
let app = App::new();
let _app = run(app)?;
Ok(())
}Files are written to [App::default_save_dir] which resolves to a platform appropriate directory and is created on first use.
This project is licensed under the MIT or Apache-2.0 licenses at your option.
