forget

Command line todo in Rust.


Keywords
todo, productivity, terminal, cli, console
Licenses
MIT/Apache-2.0

Documentation

Forget

Customizable, Simple, Cross-platform Terminal "todo" app.

Build Status Latest Version

A beautiful (thanks to tui.rs) command line app to keep you from forgetting!! forget uses termion for rendering as such it is cross platform (fonts may differ). forget is highly customizable, key bindings, colors, icons, text and titles. forget's configuration and "database" files will save to $HOME/.forget/ this is where the config file can be edited. forget is a multi-threaded application the UI event loop and input loop each run on a separate thread as well as any command spawned, everything is cleaned up when the main thread exits.

forget keeps track of adding and removing sticky notes, sticky note items (todos), and editing the items that have been created. Along with each sticky note item a command can be run when the item is selected (press Enter while highlighted) this will run in a separate process and will not affect the UI.

forget-demo

Install

cargo install forget

Run

forget

Use

In order to navigate around forget:

  • up arrow & down arrow
    • selects item or question.
  • left arrow & right arrow
    • selects "tab" or Sticky Note.
  • backspace
    • cross an item off without removing it.
  • delete
    • remove an item.
  • ctrl-h
    • add new sticky note.
  • ctrl-n
    • add new todo item to current sticky note.
  • ctrl-e
    • edit currently selected todo item of current sticky note.
  • ctrl-k
    • add new note to current sticky note.
  • ctrl-u
    • removes current sticky note.
  • ctrl-s
    • save everything to "data base".

Customize

Everything is customizable with the ./.forget/config.json file unfortunately spelling and capitalization matter. Note: Ctrl-j, Ctrl-i and Ctrl-m are all highjacked by bash to be output as different characters DO NOT USE THEM FOR KEY MAPPINGS.

{
  "title": "Forget It",
  "new_sticky_note_char_ctrl": "h",
  "new_note_char_ctrl": "k",
  "new_todo_char_ctrl": "n",
  "edit_todo_char_ctrl": "e",
  "mark_done": "Backspace",
  "remove_todo": "Delete",
  "remove_sticky_note_char_ctrl": "u",
  "save_state_to_db_char_ctrl": "s",
  "exit_key_char_ctrl": "q",
  "highlight_string": "✔️",
  "command_string": "💾",
  "app_colors": {
    "normal": {
      "fg": "White",
      "bg": "Reset",
      "modifier": "RESET"
    },
    "highlight": {
      "fg": "Yellow",
      "bg": "Reset",
      "modifier": "BOLD"
    },
    "tabs": {
      "fg": "Cyan",
      "bg": "Reset",
      "modifier": "BOLD"
    },
    "titles": {
      "fg": "Red",
      "bg": "Reset",
      "modifier": "BOLD"
    },
    "text": {
      "fg": "Green",
      "bg": "Reset",
      "modifier": "UNDERLINED"
    }
  }
}

Options are listed below.

Options

When changing any of these care must be taken to match capitalization and spelling.

Character

All Valid Utf-8 single character byte sequences.

Keys, not characters or strings

Backspace Left Right Up Down Home End PageUp PageDown BackTab Delete Insert F(u8) Null Esc

Colors

Reset, Black, Red, Green, Yellow, Blue, Magenta, Cyan, Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White, Rgb(u8, u8, u8), Indexed(u8),

Text Modifiers

BOLD DIM ITALIC UNDERLINED SLOW_BLINK RAPID_BLINK REVERSED HIDDEN CROSSED_OUT RESET

Titles and Icons

Any valid Utf-8 characters will work.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.