slate: A note taking CLI tool.

[ library, mit, program, unclassified ] [ Propose Tags ]

Please see the README on Github at

[Skip to Readme]
Versions [faq],,,,,,,,,,,,,
Change log
Dependencies base (>=4.7 && <5), directory (>=1.3), filepath (>=1.4), htoml (>=1.0), optparse-applicative (>=0.14), process (>=1.6), slate, string-conversions (>=0.2), unordered-containers (>=0.2) [details]
License MIT
Copyright Copyright (c) 2017, evuez
Author evuez
Home page
Bug tracker
Source repo head: git clone
Uploaded by evuez at 2019-05-10T12:25:14Z
Distributions NixOS:
Executables slate
Downloads 5439 total (8 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-05-10 [all 1 reports]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for slate-

[back to package description]

slate - a note taking tool.

A simple tool to take notes from your terminal (and sync them between your devices).

<code>slate status</code>

Generates markdown task lists.

Table of contents


You can install it using stack (requires stack >= 1.6).

$ stack install slate

Basic usage

<pre> $ slate --help slate - a note taking tool.

Usage: slate COMMAND Slate

Available options: -h,--help Show this help text

Available commands: add Add a note. done Mark a note as done when given a note ID, display done notes otherwise. todo Mark a note as todo when given a note ID, display todo notes otherwise. doing Toggle highlighting on a note when given a note ID, display notes marked as doing otherwise. remove Remove a note. display Display a slate. rename Rename a slate. wipe Wipe a slate. status Display the status of a slate. sync Sync every slate.

$ slate add "My first note." $ slate add "New note!" $ slate display 0 - My <b>first</b> note. 1 - New note!

$ slate done 0 $ slate display <s>0 - My <b>first</b> note.</s> 1 - New note!

$ slate display --only=todo # or just slate todo 1 - New note!

$ slate status 1 done, 1 todo (2 total). 50% · 1 done · 1 todo — sync ✔ ▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▯▯▯▯▯▯▯▯▯▯▯▯▯▯▯

$ slate add "Fake note" $ slate display <s>0 - My <b>first</b> note.</s> 1 - New note! 2 - Fake note

$ slate remove 2 $ slate display <s>0 - My <b>first</b> note.</s> 1 - New note!

$ slate wipe --only=todo $ slate display <s>0 - My <b>first</b> note.</s>

$ slate todo 0 $ slate display 0 - My <b>first</b> note. </pre>

Lists are stored in ~/.config/slate/ and their default name is the name of your current directory. You can use any other name you want using the --name option or by adding a .slate file containing the name you want to use.


The following configuration options can be set in ~/.config/slate/config.toml (you'll have to create this file).

You can check out config.example.toml for a configuration example.


You must define the commands in this section in a [callbacks] table:

key1 = value1
key2 = value2


You can use slate sync to synchronize your slates. There's no default configuration for this command, so for it to work you'll have to add your own sync command, for example:

sync = "git add . && git commit -m 'Update slates'; git pull --rebase origin master && git push origin master"

This would stage & commit every updates in ~/.config/slate/, update your local copy and push your updates to the origin remote.


By default, slate status only displays the number of notes by status. You can add a command in the status key that'll be used to check if the slate is synchronized or not, for example:

status = "git diff --exit-code $SLATE"

Where $SLATE will be set to ~/.config/slate/<slate name>.md. The command must return a non-zero exit code if the slate is out of sync and zero if it's synced.


You can use the following commands to generate a completion script for your shell:

  • Bash: slate --bash-completion-script $(which slate)
  • Zsh: slate --zsh-completion-script $(which slate)
  • Fish: slate --fish-completion-script (which slate)