Skip to content
/ grus Public

A hierarchical task manager for the terminal

License

Notifications You must be signed in to change notification settings

metent/grus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grus

grus is a command-line hierarchial task manager. This means that instead of organizing tasks as a long, unmaintainable list, tasks can be organized in a hierarchy. This allows tasks which may seem unfeasible to be repeatedly broken down into smaller, more doable tasks, making it easier to plan for the long term. grus builds onto this idea by representing tasks as nodes of a multitree, which allows multiple tasks to have a same subtask as a child, since two different tasks can depend on the same subtask.

Task management should be quick and should not require much thought. grus helps the user by listing only what it considers the most important tasks, so that the user can narrow down their choice instead of getting overwhelmed by tasks. This makes scrolling for tasks mostly unnecessary. It has vi-like key bindings, so most operations: adding, deleting, renaming, take the least amount of keystrokes to perform.

Warning

grus is currently undergoing early stages of development. It is unfinished and unstable. Storage format might change between releases, so task storage may be incompatible between releases.

Features

  • Quick workflow, minimizes number of keystrokes required for each operation
  • BFS-based view of tasks inspired by broot
  • Multiple tasks can have the same child task, inspired by grit
  • vi-like key bindings
  • Light on resources

Installation

From crates.io

cargo install grus

Make sure to include $HOME/.cargo/bin in the PATH variable.

Keybindings

Tree View

Key Action
k or up Move cursor up
j or down Move cursor down
l Make selected task the root task
h Make previously selected task up the heirarchy, the root task
v View all sessions of the current task
a Add a subtask of the selected task with given name
D Delete the selected task and all of its descendents
r Rename the selected task
z Add a due date to the selected task
Z Unset due date of the selected task
s Add a session to the selected task
K Increase the relative priority of current task among siblings
J Decrease the relative priority of current task among siblings
space Select the current task
x Make the selected tasks children of current task while detaching it from the previous parent
. Make the selected tasks children of current task while retaining its link with the previous parent
q Quit grus
2 Switch to session view
I Import database from ~/sync/tasks
E Export database to ~/sync/tasks

Session View

Key Action
k or up Move cursor up
j or down Move cursor down
v Toggle sub-mode
D Delete current session
q Quit grus
1 Switch to tree view

Roadmap

  • Basic todo functionality
  • Configuration
    • Config file
      • Keybinding configuration
      • Import and Export path configuration
    • Command-line arguments
      • Config file path
  • Notifications
  • Recurring tasks/Repeating sessions
  • Task sorting by score
  • Decorations
  • Fuzzy search tasks

About

A hierarchical task manager for the terminal

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages