An open API service indexing awesome lists of open source software.

https://github.com/yaaama/totui

Todo list manager written in C
https://github.com/yaaama/totui

c ncurses ncurses-tui tui

Last synced: over 1 year ago
JSON representation

Todo list manager written in C

Awesome Lists containing this project

README

          

**Table of Contents**

- [Table of Contents](#table-of-contents)
- [Totui](#totui)
- [Demonstration](#demonstration)
- [Building](#building)
- [Usage guide](#usage-guide)
- [Things to do (no pun intended)](#things-to-do-no-pun-intended)
- [Core functionality](#core-functionality)
- [Aesthetics](#aesthetics)
- [Perhaps in the future](#perhaps-in-the-future)

# Totui

Totui is a terminal todo list manager. The name *Totui* is from the words “TOdo” and “TUI” (terminal user interface).

## Demonstration

![demonstration](assets/totui-demonstration.GIF)

## Building

You can:

1. Clone the repo: `git clone https://github.com/yaaama/totui`
2. Go into the cloned folder: `cd totui`
3. Create a build directory: `mkdir build`
4. Make the project: `make install`
5. There should be an executable inside your current working directory called *totui*.
6. Run the program: `./totui`.

# Usage guide

The keybindings are simple. They are inspired by **vim** keys.

- Move up:
- k
- Move down:
- j
- Insert new todo:
- a
- Delete the currently selected todo item:
- d
- Quit the program:
- q
- Toggle the todo status:
- SPACE

# Things to do (no pun intended)

Please note that I have basically done what I wanted to do and may stop updating this project as often as I have been.
I was mostly using this project as a reason for me to learn how `ncurses` works.

## Core functionality

- [X] Can traverse through todo items displayed on the screen.
- [X] User can add a new todo item.
- [X] Todo items can be deleted.
- [X] Toggle todo items
- [X] Resize application as the window is resized.
- [X] Echo bar on the bottom (displays information about user actions and program processes).
- [ ] Help bar on the top (displays q to quit, etc).
- [ ] Warnings for when the user may insert too long of a todo.

## Aesthetics

- [X] Colour lines based on status.
- [ ] A line containing something longer than the terminal width should be truncated on the screen.
- Program should calculate how many lines the new item is occupying, and then move the cursor so that it is below the new item.
- [ ] Lines that overflow the buffer should be rejected

## Perhaps in the future

- [ ] User can specify the default file they want to use.
- [ ] A split plane where the user can add more information about each todo (not limited by character counts).
- [ ] Configuration file where the user can specify the file to store the todo items in.