A simple journal: A place to dump your brain just one command away.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A simple journal: A place to dump your brain just one command away.


  • Quickly accessible
    Done: Only one command to an editor with the current page and time
    Done: Convenient setup with pip or something
  • Simple and human readable
    Done: Simple plaintext files written in markdown
    Done: Easier configuration and sane default values
    ToDo: Documentation
  • Tags and search
    Done: Entries can be tagged
    Done: Search for one or more tags
    Done: Search before, after or inbetween dates
    ToDo: Search only in specific page ToDo: Open search result in viewer
  • Cross platform
    Done: Linux
    Working: Pandora
    Untested: Windows, Mac OS X, other desktop os
    ToDo: Android
  • Encryption
    ToDo: GPG encryption
    Working: Container encryption like Truecrypt, encfs or ecryptfs
  • Synchronisation
    Done: Internal (local) merge tool
    ToDo: Merge over ssh/rsync/ftp
    Working: SCM like git
    Working: Remote merge over sshfs/ftpfs
  • Information separation for publishing
    Done: Information can be separated by tag search
    Working: Search returns parsable markdown
    Working: Export single entry based on tag search
    ToDo: Export multiple entries based on tag search
    ToDo: Parse exported entries ToDo: Use Python's markdown module to search and export in one go


  • (Python 2.6 only) install argparse
  • install appdirs
  • install diarium
  • run diarium once
  • set a command for your favorite texteditor
    make sure it runs in foreground and doesn't fork and detach. Gvim needs the --nofork flag for example. Consult the manual of your favorite texteditor for more information
  • set a command for your favorite textreader or reuse your editor
  • run diarium -h

  • (optional) set a different path to your journal

  • (optional) set a different date- and timeformat see Python's strftime function
  • (optional) set a file extension like .txt, .md, .journal or .whatever. Don't leave it blank.


Currently you can't synchronize over remote protocols except when you mount your remote directories via sshfs or similar.
Because entries are identified by their time, changing an existing entry can create a conflict between two journals. While synchronizing you will be asked which version should be kept. The other version will NOT be backed up.

File format

# filename without extension

time comma, separated, tags  (two spaces to get a <br \> after parsing the markdown)
As much content as your filesystem allows.

Also new lines and stuff.

time tags, for new, entry  (tags can be multiple words, just separate the tags with commas)
more content

My 2013-02-18.txt file for example:

# 2013-02-18

05:11:40 public, example  
It's really hard to come up with example text.

05:13:16 example, public  
Really hard.