All Projects → naggie → Dstask

naggie / Dstask

Licence: mit
Single binary terminal-based TODO manager with git-based sync + markdown notes per task

Programming Languages

go
31211 projects - #10 most used programming language
bash
514 projects

Projects that are alternatives of or similar to Dstask

Taskline
Tasks, boards & notes for the command-line habitat
Stars: ✭ 78 (-81.9%)
Mutual labels:  todo, cli, terminal, task
Taskwarrior
Taskwarrior - Command line Task Management
Stars: ✭ 2,239 (+419.49%)
Mutual labels:  todo, gtd, cli, task
Vdirsyncer
📇 Synchronize calendars and contacts.
Stars: ✭ 872 (+102.32%)
Mutual labels:  todo, cli, sync
Nodo
☑ Command line TODO app
Stars: ✭ 73 (-83.06%)
Mutual labels:  todo, cli, terminal
Cw
The best way to tail AWS CloudWatch Logs from your terminal
Stars: ✭ 368 (-14.62%)
Mutual labels:  cli, terminal, zsh
Typin
Declarative framework for interactive CLI applications
Stars: ✭ 126 (-70.77%)
Mutual labels:  terminal-based, cli, terminal
Topydo
A powerful todo list application for the console, using the todo.txt format.
Stars: ✭ 511 (+18.56%)
Mutual labels:  todo, cli, task
Taskbook
Tasks, boards & notes for the command-line habitat
Stars: ✭ 8,326 (+1831.79%)
Mutual labels:  todo, cli, task
cheq
A command-line checklist app
Stars: ✭ 17 (-96.06%)
Mutual labels:  task, todo, gtd
Nord Gnome Terminal
An arctic, north-bluish clean and elegant GNOME Terminal color theme.
Stars: ✭ 258 (-40.14%)
Mutual labels:  cli, terminal, zsh
Spotify Tui
Spotify for the terminal written in Rust 🚀
Stars: ✭ 11,061 (+2466.36%)
Mutual labels:  terminal-based, cli, terminal
Caporal.js
A full-featured framework for building command line applications (cli) with node.js
Stars: ✭ 3,279 (+660.79%)
Mutual labels:  cli, terminal, zsh
Void
terminal-based personal organizer
Stars: ✭ 831 (+92.81%)
Mutual labels:  terminal-based, terminal, task
Tsukae
🧑‍💻📊 Show off your most used shell commands
Stars: ✭ 345 (-19.95%)
Mutual labels:  terminal-based, cli, terminal
Chafa
📺🗿 Terminal graphics for the 21st century.
Stars: ✭ 774 (+79.58%)
Mutual labels:  terminal-based, cli, terminal
Geo
🌎 A Bash utility for easy wan, lan, router, dns, mac address, and geolocation output, with clean stdout for piping
Stars: ✭ 225 (-47.8%)
Mutual labels:  cli, terminal, zsh
Nord Terminal App
An arctic, north-bluish clean and elegant Terminal.app color theme.
Stars: ✭ 198 (-54.06%)
Mutual labels:  cli, terminal, zsh
Nord Xresources
An arctic, north-bluish clean and elegant Xresources color theme.
Stars: ✭ 210 (-51.28%)
Mutual labels:  cli, terminal, zsh
Tasklite
The CLI task manager for power users
Stars: ✭ 91 (-78.89%)
Mutual labels:  todo, cli, task
Spotui
Spotify in the terminal 💻🎶
Stars: ✭ 302 (-29.93%)
Mutual labels:  terminal-based, cli, terminal

icon

dstask

Single binary terminal-based TODO manager with git-based sync + markdown notes per task




Dstask is a personal task tracker designed to help you focus. It is similar to taskwarrior but uses git to synchronise instead of a special protocol.

Features:

Packaging status
  • Powerful context system (automatically applies filter/tags to queries and new tasks)
  • Git powered sync/undo/resolve (passwordstore.org style) which means no need to set up a sync server, and sync between devices is easy!
  • Task listing won't break with long task text (unlike taskwarrior, currently)
  • note command -- edit a full markdown note for each task. Checklists are useful here.
  • open command -- open URLs found in specified task (including notes) in the browser
  • zsh/bash completion for speed
  • A single statically-linked binary
  • import tool which can import GitHub issues or taskwarrior tasks.

Non-features:

  • Collaboration. This is a personal task tracker. Use another system for projects that involve multiple people. Note that it can still be beneficial to use dstask to track what you are working on in the context of a multi-person project tracked elsewhere.

Requirements:

  • Git
  • A 256-color capable terminal

Screenshots

Next command (default when no command is specified)

Show-resolved command to review completed tasks by week. Useful for meetings.

Editing a task with $EDITOR (which happens to be vim)

Adding a task

Sync command (which uses git)

 

Installation

  1. Copy the executable (from the [releases page][1]) to somewhere in your path, named dstask and mark it executable. /usr/local/bin/ is suggested.
  2. Enable bash completions by copying .bash-completion.sh into your home directory and sourcing it from your .bashrc. There's also a zsh completion script.
  3. Set up an alias in your .bashrc: alias task=dstask or alias t=dstask to make task management slightly faster.
  4. Create or clone a ~/.dstask git repository for the data, if you haven't already: mkdir ~/.dstask && git -C ~/.dstask init.

There are also unofficial packages for:

Moving from Taskwarrior

We have a migration guide to make the transition from taskwarrior to dstask a simple process.

Future of dstask

See etc/FUTURE.md

Usage

Usage: dstask [id...] <cmd> [task summary/filter]

Where [task summary] is text with tags/project/priority specified. Tags are
specified with + (or - for filtering) eg: +work. The project is specified with
a project:g prefix eg: project:dstask -- no quotes. Priorities run from P3
(low), P2 (default) to P1 (high) and P0 (critical). Text can also be specified
for a substring search of description and notes.

Cmd and IDs can be swapped, multiple IDs can be specified for batch
operations.

run "dstask help <cmd>" for command specific help.

Add -- to ignore the current context. / can be used when adding tasks to note
any words after.

Available commands:

next              : Show most important tasks (priority, creation date -- truncated and default)
add               : Add a task
template          : Add a task template
log               : Log a task (already resolved)
start             : Change task status to active
note              : Append to or edit note for a task
stop              : Change task status to pending
done              : Resolve a task
context           : Set global context for task list and new tasks (use "none" to set no context)
modify            : Set attributes for a task
edit              : Edit task with text editor
undo              : Undo last action with git revert
sync              : Pull then push to git repository, automatic merge commit.
open              : Open all URLs found in summary/annotations
git               : Pass a command to git in the repository. Used for push/pull.
remove            : Remove a task (use to remove tasks added by mistake)
show-projects     : List projects with completion status
show-tags         : List tags in use
show-active       : Show tasks that have been started
show-paused       : Show tasks that have been started then stopped
show-open         : Show all non-resolved tasks (without truncation)
show-resolved     : Show resolved tasks
show-templates    : Show task templates
show-unorganised  : Show untagged tasks with no projects (global context)
import-tw         : Import tasks from taskwarrior via stdin
help              : Get help on any command or show this message
version           : Show dstask version information

Syntax

Priority

Symbol Name Note
P0 Critical Must be resolved immediately. May appear in all contexts in future.
P1 High
P2 Normal Default priority
P3 Low Shown at bottom and faded.

Operators

Symbol Syntax Description Example
+ +<tag> Include tag. Filter/context, or when adding task. dstask add fix server +work
- -<tag> Exclude tag. Filter/context only. dstask next -feature
-- -- Ignore context. When listing or adding tasks. dstask --, task add -- +home do guttering
/ / When adding a task, everything after will be a note. dstask add check out ipfs / https://ipfs.io
project: project:<project> Set project. Filter/context, or when adding task. dstask context project:dstask
-project: -project:<project> Exclude project, filter/context only. dstask next -project:dstask -work
template: template:<id> Base new task on a template. dstask add template:24

State

State Description
Pending Tasks that have never been started
Active Tasks that have been started
Paused Tasks that have been started but then stopped
Resolved Tasks that have been done/close/completed

Contexts

When dstask runs, a context can be set to filter the task output. Run dstask help context for more examples. There are two ways to set a context.

  1. The context command, which sets a global context on disk.
  2. The DSTASK_CONTEXT environment variable. Contexts set by this environment variable override the global context on disk.

Use the context to set a context that will apply by default, no matter what terminal window you're using.

Use the DSTASK_CONTEXT environment variable to override context in specific uses. For instance, a direnv config can set a context for particular directories.

Context is not synchronised between machines.

Dealing with merge conflicts

Dstask is written in such a way that merge conflicts should not happen, unless a task is edited independently on 2 or more machines without synchronising. In practice this happens rarely; however when it does happen dstask will fail to commit and warn you. You'll then need to go to the underlying ~/.dstask git repository and resolve manually before committing and running dstask sync. In some rare cases the ID can conflict. This is something dstask will soon be equipped to handle automatically when the sync command runs.

Performance

See etc/PERFORMANCE.md

General tips

  • Overwhelmed by tasks? Try focussing by prioritising (set priorities) or narrowing the context. The show-tags and show-projects commands are useful for creating a context.
  • Use dstask to track things you might forget, rather than everything. SNR is important. Don't track tasks for the sake of it, and don't track ideas. Track ideas separately.
  • Spend regular time reviewing tasks. You'll probably find some you've already resolved, and many you've forgotten. The show-unorganised command is good for this.
  • Try to work through tasks from the top of the list. Dstask sorts by priority then creation date -- the most important tasks are at the top.
  • Use start/stop to mark what you're genuinely working on right now; it makes resuming work faster. Paused tasks will be slightly highlighted, so you won't lose track of them. show-paused helps if they start to pile up.
  • Keep a github-style check list in the markdown note of complex or procedural tasks
  • Failing to get started working? Start with the smallest task
  • Record only required tasks. Track ideas separately, else your task list will grow unboundedly! I keep an ideas.md for various projects for this reason.
  • Use a today tag/context to get a lot of small things done in one day

Database

See etc/DATABASE_FORMAT.md

The default database location is ~/.dstask/, but can be configured by the environment variable DSTASK_GIT_REPO.

Alternatives

Alternatives listed must be capable of running in the terminal.

  • TaskLite -- The CLI task manager for power users, written in Haskell
  • Taskwarrior -- the closest analogue
  • Taskbook -- board metaphor, note support
  • todo.txt-cli
  • etm -- event and task manager
  • t -- a minimal todo list with an amusing philosophy

FAQ

Does dstask encrypt tasks?

Encryption is not a design goal of dstask. If you want to have your remote repository encrypted, you may consider git-remote-gcrypt or git-crypt. Note that dstask has not been tested with these tools, nor can any claims be made about the security of the tools themselves.

Is it possible to modify more than one task at once with a filter?

Yes.

  1. Set a context:
  2. Run a modify command without and ID
  3. Hit y to confirm to modify all tasks in context

This means it's natural to review the tasks that would be modified before modifying by listing all tasks in the current context first, instead of potentially operating blindly by matching tags or numbers.

You can also specify multiple task numbers at one time, as with any other command.

Is there a GUI or web interface?

Not as part of dstask itself. However, dstask can be used as a library -- @botto has started developing a web GUI, specifically to allow task management on-the-go via a smartphone: https://github.com/botto/dstask-gui . It's in early stages but is meaningful as having no smartphone-based control is a blocker for a lot of people.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].