Coder Social home page Coder Social logo

smallhadroncollider / taskell Goto Github PK

View Code? Open in Web Editor NEW
1.7K 27.0 66.0 3.56 MB

Command-line Kanban board/task manager with support for Trello boards and GitHub projects

Home Page: https://taskell.app

License: BSD 3-Clause "New" or "Revised" License

Haskell 100.00%
task-manager command-line opensource kanban haskell homebrew macos linux vim-keybindings markdown

taskell's Introduction

I'm going to be taking a break from development of Taskell for a while. Trying to do it alongside my day job was proving a bit much. Feel free to continue to submit issues, but I won't be able to work on any of them immediately. Pull requests also welcome. Thanks for understanding ๐Ÿ™‚

Taskell

Build Status

A CLI kanban board/task manager for Mac and Linux

  • Per project task lists
  • vim style key-bindings
  • Stored using Markdown
  • Clean diffs for easy version control
  • Support for sub-tasks and due dates
  • Trello board imports
  • GitHub project imports

Buy Me A Coffee

Follow @taskellcli on Twitter for updates

Demo


Contents

Installation

Homebrew (Mac)

You can install Taskell on your Mac using Homebrew:

brew install taskell

Debian/Ubuntu

A .deb package is available for Debian/Ubuntu. Download it and install with dpkg -i <package-name>. You may also need to install the libtinfo5 package (sudo apt install libtinfo5).

Fedora

Not officially supported, but try running sudo dnf install ncurses-compat-libs then download and run the binary as described below. If that doesn't work you may need to build from scratch (Cabal/Stack).

Binaries

A binary is available for Mac and Debian/Ubuntu. Download it and copy it to a directory in your $PATH (e.g. /usr/local/bin or /usr/bin).

Cabal

You can install Taskell with cabal:

cabal install taskell

Make sure you run cabal update if you haven't run it recently.

Stack

If none of the above options work you can build taskell using Stack. First install Stack on your machine. Then clone the repo and run stack build && stack install: this will build taskell and then install it in ~/.local/bin (so make sure that directory is in your $PATH). Building from scratch can take a long time and occasionally doesn't work the first time (if this happens try running it again).

Using Taskell

  • taskell: will use taskell.md in the pwd - offers to create if not found
  • taskell filename.md: will use filename.md in the pwd - offers to create if not found

Options

  • -h: show help
  • -v: show version number
  • -t <trello-board-id>: import a Trello board (see below)
  • -g <github-project-id>: import a GitHub project (see below)

Tips

  • If you're using a simple two-column "To Do" and "Done" then use the space bar to mark an item as complete while staying in the "To Do" list. If you're using a more complicated column setup then you will want to use H/L to move tasks between columns.

Storage

By default stores in a taskell.md file in the working directory:

## To Do

- Do this

## Done

- Do That

Importing Trello Boards

Taskell includes the ability to fetch a Trello board and store it as local taskell file.

Authentication

Before fetching a Trello board, you'll need to create an access token and store it in ~/.taskell/config.ini.

  • First, get a Trello token

  • Then add it to ~/.taskell/config.ini:

    [trello]
    token = <your-trello-access-token>

You can revoke access tokens on Trello

Fetching

Running the following would pull down the Trello board with the ID "TRe1l0iD" into a file named trello.md and then open taskell with that file.

taskell -t TRe1l0iD trello.md

Make sure you have permission to view the Trello board, otherwise you'll get an error.

Limitations

  • This is a one-off procedure: it effectively imports a Trello board to taskell
  • Currently imports:
    • Lists
    • Cards
    • Card descriptions
    • Card due dates
    • Card checklists (merged into one list per card)

Importing GitHub Projects

Taskell includes the ability to fetch a GitHub project and store it as local taskell file.

Authentication

Before fetching a GitHub board, you'll need to create a person access token and store it in ~/.taskell/config.ini.

You can delete personal access tokens on GitHub

Fetching

Projects can belong to organisations or to individual repositories.

Make sure you have permission to view the GitHub project, otherwise you'll get an error.

GitHub Demo

Organisations

To import a project for an organisation called "test-org" you would use the following:

taskell -g orgs/test-org github.md

This would then show you a list of possible projects to import. Enter the number of the project you wish to import.

Repositories

To import a project for the repository "test-repo" for the user "test-user":

taskell -g repos/test-user/test-repo github.md

This would then show you a list of possible projects to import. Enter the number of the project you with to import.

Limitations

  • This is a one-off procedure: it effectively imports a GitHub project to taskell
  • Currently imports:
    • Columns
    • Cards

Configuration

Taskell uses the XDG Base Directory Specification, so it will look for an $XDG_CONFIG_HOME environmental variable and create a directory named taskell inside it. If this variable is not found it will create the taskell directory in ~/.config/. (If you've been using Taskell since <= 1.3.5 then it will be in a ~/.taskell directory, feel free to move this to the XDG directory.)

Taskell has a config.ini file:

[general]
; the default filename to create/look for
filename = taskell.md

[layout]
; top/bottom padding for the taskell window
padding = 1

; the width of a column
column_width = 30

; the padding of a column
; for both sides, so 3 would give a gap of 6 between two columns
column_padding = 3

; the icon to use when a task has a description
; the default icon may not display on all systems
description_indicator = "โ‰ก"

; whether to show the statusbar
statusbar = true

[markdown]
; the markdown to start a title line with
title = "##"

; the markdown to start a task line with
task = "-"

; the markdown to start a sub-task line with
subtask = "    *"

; by default times are stored in UTC to avoid diffs if you
; change locations. Set this to true if it will always be
; edited in the same timezone
localTimes = false

Make sure that the values in the [markdown] section are surrounded by double-quotes.

If you always use sub-tasks, an alternative setup for [markdown] might be:

[markdown]
title = "##"

; each task is a header
task = "###"

; subtasks are list items under the header
subtask = "-"

Warning: currently if you change your [markdown] settings any older files stored with different settings will not be readable.

Template

You can edit the template.md config file to change what a new taskell file looks like.

Controls

You can edit keyboard bindings in the bindings.ini config file.

The default bindings can be found in bindings.ini.

Available special keys: <Space>, <Enter>, <Backspace>, <Left>, <Right>, <Up>, <Down>

On a Mac you can use the alt characters: e.g. quit = ล“ is equivalent to alt+q.

You shouldn't try to assign the 1-9 keys, as it will not overwrite the default behaviour.

Due Dates

Due dates must be input with the format YYYY-MM-DD or YYYY-MM-DD HH:MM. The date will not be accepted otherwise.

You can also pass in relative times such as 1w 2d (for 1 week and 2 days). Valid units are:

  • s (seconds)
  • m (minutes)
  • h (hours)
  • d (days)
  • w (weeks)

These can be used in any combination. If the time is made up only of days and/or weeks, the due date will not include a time.

By default times are stored in the Markdown file as UTC. If you would like local times (and are unlikely to open the file in lots of different timezones) then you can set localTimes to true in the markdown section of the config file. If you have this setting on and you change timezone, you'll get a diff on all your times the next time you make changes to the file.

Theming

You can edit Taskell's colour-scheme by editing theme.ini:

[other]

; list title
title.fg = green

; status bar
statusBar.bg = blue
statusBar.fg = black

; current list title
titleCurrent.fg = blue

; current task
taskCurrent.fg = magenta

; subtasks
; selected
subtaskCurrent.fg = magenta
; incomplete
subtaskIncomplete.fg = blue
; complete
subtaskComplete.fg = yellow

; disabled
disabled.fg = yellow

You can also change the background and default text colour:

[default]

; the app background colour
default.bg = brightBlack

; the app text colour
default.fg = white

The available colours are: black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, or default


Roadmap

See roadmap.md for planned features


Contributing

Please check the roadmap.md before adding any bugs/feature requests to Issues.

Anyone is welcome to contribute to the project, but please read through CONTRIBUTING.md and make sure that you agree with the Code of Conduct before getting involved.

Core Contributors


Acknowledgements

Built using Brick. Thanks to Jonathan Daugherty for answering all my questions and pointing me in the right direction. Also thanks to Jack Leigh and Thom Wright for helping me get started. Also thanks to Katja Durrani for submitting Taskell to homebrew-core.

taskell's People

Contributors

alinisarahmed avatar felixonmars avatar jelly avatar mstruebing avatar mulholo avatar smallhadroncollider avatar toniogela avatar tsoernes avatar vapourismo avatar vvv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.