# Forget ## Customizable, Simple, Cross-platform Terminal "todo" app. [![Build Status](https://travis-ci.com/DevinR528/forget.svg?branch=master)](https://travis-ci.com/DevinR528/forget) [![Latest Version](https://img.shields.io/crates/v/forget.svg)](https://crates.io/crates/forget) A beautiful (thanks to [tui.rs](https://github.com/fdehau/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](https://github.com/DevinR528/forget/blob/master/resources/forget-demo.gif) # Install ```bash cargo install forget ``` # Run ```bash 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. ```json { "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": "✔️", "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.