404
+ +Page not found
+ + +diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 323b3928..00000000 --- a/.github/stale.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 60 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - ':star:' - - security -# Label to use when marking an issue as stale -staleLabel: stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 2382cabe..00000000 --- a/.gitignore +++ /dev/null @@ -1,54 +0,0 @@ -*.py[cod] - -# C extensions -*.so -.python-version - -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -develop-eggs -.installed.cfg -lib -lib64 -.python-version - -# Installer logs -pip-log.txt -.DS_Store -.travis-solo -Icon - -# Documentation -_build -_sources -_static -objects.inv -searchindex.js - -# MS Visual Studio (PyTools) -obj -*.pyproj -*.sln -*.suo - -# virtaulenv -env/ -env*/ - -# PyCharm Project files -.idea/ - -# export testing director -exp/ - -_extras/ -*.sublime-* -site/ diff --git a/features/data/journals/work.journal b/.nojekyll similarity index 100% rename from features/data/journals/work.journal rename to .nojekyll diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 786e88c6..00000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -dist: xenial # required for Python >= 3.7 -language: python -python: "3.7" -before_install: - - pip install poetry -install: - # we run `poetry version` here to appease poetry about '0.0.0-source' - - poetry version - - poetry install -script: - - poetry run python --version - - poetry run behave -before_deploy: - - pip install poetry - - poetry config http-basic.pypi $PYPI_USER $PYPI_PASS - - poetry version $TRAVIS_TAG - - poetry build -deploy: - - provider: script - script: poetry publish - skip_cleanup: true - on: - branch: master - tags: true - - provider: pages - skip_cleanup: true - github_token: $GITHUB_TOKEN - on: - branch: master diff --git a/404.html b/404.html new file mode 100755 index 00000000..ae7ec6f3 --- /dev/null +++ b/404.html @@ -0,0 +1,154 @@ + + + +
+ + + + + + +Page not found
+ + +You can configure the way jrnl behaves in a configuration file. By
+default, this is ~/.jrnl_config
. If you have the XDG_CONFIG_HOME
+variable set, the configuration file will be saved as
+$XDG_CONFIG_HOME/jrnl/.jrnl_config
.
Note
+On Windows, The configuration file is typically found at C:\Users\[Your Username]\.jrnl_config
.
The configuration file is a simple JSON file with the following options +and can be edited with any plain text editor.
+journals
+ paths to your journal fileseditor
+ if set, executes this command to launch an external editor for
+ writing your entries, e.g. vim
. Some editors require special
+ options to work properly, see FAQ <recipes>
for details.encrypt
+ if true
, encrypts your journal using AES.tagsymbols
+ Symbols to be interpreted as tags. (See note below)default_hour
and default_minute
+ if you supply a date, such as last thursday
, but no specific
+ time, the entry will be created at this timetimeformat
+ how to format the timestamps in your journal, see the python docs for referencehighlight
+ if true
, tags will be highlighted in cyan.linewrap
+ controls the width of the output. Set to false
if you don't
+ want to wrap long lines.Note
+Although it seems intuitive to use the #
+character for tags, there's a drawback: on most shells, this is
+interpreted as a meta-character starting a comment. This means that if
+you type
+++
jrnl Implemented endless scrolling on the #frontend of our website.
your bash will chop off everything after the #
before passing it to
+ jrnl
. To avoid this, wrap your input into quotation marks like
+ this:
+++
jrnl "Implemented endless scrolling on the #frontend of our website."
Or use the built-in prompt or an external editor to compose your + entries.
+Using your DayOne journal instead of a flat text file is dead simple --
+instead of pointing to a text file, change your .jrnl_config
to point
+to your DayOne journal. This is a folder named something like
+Journal_dayone
or Journal.dayone
, and it's located at
~/Library/Application Support/Day One/
by default~/Dropbox/Apps/Day One/
if you're syncing with Dropbox and~/Library/Mobile
+ Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/
if you're
+ syncing with iCloud.Instead of all entries being in a single file, each entry will live in a
+separate plist
file. So your .jrnl_config
should look like this:
{
+ ...
+ "journals": {
+ "default": "~/journal.txt",
+ "dayone": "~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/Journal_dayone"
+ }
+}
+
+
+You can configure jrnl
to use with multiple journals (eg.
+private
and work
) by defining more journals in your .jrnl_config
,
+for example:
{
+...
+ "journals": {
+ "default": "~/journal.txt",
+ "work": "~/work.txt"
+ }
+}
+
+
+The default
journal gets created the first time you start jrnl
+Now you can access the work
journal by using jrnl work
instead of
+jrnl
, eg.
jrnl work at 10am: Meeting with @Steve
+jrnl work -n 3
+
+
+will both use ~/work.txt
, while jrnl -n 3
will display the last
+three entries from ~/journal.txt
(and so does jrnl default -n 3
).
You can also override the default options for each individual journal.
+If you .jrnl_config
looks like this:
{
+ ...
+ "encrypt": false
+ "journals": {
+ "default": "~/journal.txt",
+ "work": {
+ "journal": "~/work.txt",
+ "encrypt": true
+ },
+ "food": "~/my_recipes.txt",
+}
+
+
+Your default
and your food
journals won't be encrypted, however your
+work
journal will! You can override all options that are present at
+the top level of .jrnl_config
, just make sure that at the very least
+you specify a "journal": ...
key that points to the journal file of
+that journal.
Note
+Changing encrypt
to a different value will not encrypt or decrypt your
+journal file, it merely says whether or not your journal
+is encrypted. Hence manually changing
+this option will most likely result in your journal file being
+impossible to load.
The Windows shell prior to Windows 7 has issues with unicode encoding.
+To use non-ascii characters, first tweak Python to recognize the encoding by adding 'cp65001': 'utf_8'
, to Lib/encoding/aliases.py
. Then, change the codepage with chcp 1252
before using jrnl
.
(Related issue: #486)
+ +If you don't choose to encrypt your file when you run
+jrnl
for the first time, you can encrypt
+your existing journal file or change its password using
jrnl --encrypt
+
+
+If it is already encrypted, you will first be asked for the current +password. You can then enter a new password and your plain journal will +replaced by the encrypted file. Conversely,
+jrnl --decrypt
+
+
+will replace your encrypted journal file by a Journal in plain text. You
+can also specify a filename, ie. jrnl --decrypt plain_text_copy.txt
,
+to leave your original file untouched.
Whenever you encrypt your journal, you are asked whether you want to +store the encryption password in your keychain. If you do this, you +won't have to enter your password every time you want to write or read +your journal.
+If you don't initially store the password in the keychain but decide to
+do so at a later point -- or maybe want to store it on one computer but
+not on another -- you can simply run jrnl --encrypt
on an encrypted
+journal and use the same password again.
While jrnl follows best practises, true security is an illusion.
+Specifically, jrnl will leave traces in your memory and your shell
+history -- it's meant to keep journals secure in transit, for example
+when storing it on an
+untrusted
+services such as Dropbox. If you're concerned about security, disable
+history logging for journal in your .bashrc
HISTIGNORE="$HISTIGNORE:jrnl *"
+
+
+If you are using zsh instead of bash, you can get the same behaviour
+adding this to your zshrc
setopt HIST_IGNORE_SPACE
+alias jrnl=" jrnl"
+
+
+Should you ever want to decrypt your journal manually, you can do so +with any program that supports the AES algorithm in CBC. The key used +for encryption is the SHA-256-hash of your password, the IV +(initialisation vector) is stored in the first 16 bytes of the encrypted +file. The plain text is encoded in UTF-8 and padded according to PKCS#7 +before being encrypted. Here's a Python script that you can use to +decrypt your journal
+#!/usr/bin/env python3
+
+import argparse
+from Crypto.Cipher import AES
+import getpass
+import hashlib
+import sys
+
+parser = argparse.ArgumentParser()
+parser.add_argument("filepath", help="journal file to decrypt")
+args = parser.parse_args()
+
+pwd = getpass.getpass()
+key = hashlib.sha256(pwd.encode('utf-8')).digest()
+
+with open(args.filepath, 'rb') as f:
+ ciphertext = f.read()
+
+crypto = AES.new(key, AES.MODE_CBC, ciphertext[:16])
+plain = crypto.decrypt(ciphertext[16:])
+plain = plain.strip(plain[-1:])
+plain = plain.decode("utf-8")
+print(plain)
+
+
+ With
+jrnl --tags
+
+
+you'll get a list of all tags you used in your journal, sorted by most +frequent. Tags occurring several times in the same entry are only +counted as one.
+jrnl --short
+
+
+Will only display the date and title of each entry.
+Can do
+jrnl --export json
+
+
+Why not create a beautiful timeline of +your journal?
+Use
+jrnl --export markdown
+
+
+Markdown is a simple markup language that is human readable and can be +used to be rendered to other formats (html, pdf). This README for +example is formatted in markdown and github makes it look nice.
+jrnl --export text
+
+
+Pretty-prints your entire journal.
+You can specify the output file of your exported journal using the
+-o
argument
jrnl --export md -o journal.md
+
+
+The above command will generate a file named journal.md
. If the-o
argument is a directory, jrnl will export each entry into an individual file
jrnl --export json -o my_entries/
+
+
+The contents of my\_entries/
will then look like this:
my_entries/
+|- 2013_06_03_a-beautiful-day.json
+|- 2013_06_07_dinner-with-gabriel.json
+|- ...
+
+
+ jrnl has a natural-language interface so you don't have to remember cryptic shortcuts when you're writing down your thoughts.
+Your journals are stored in plain-text files that will still be readable in 50 years when all your fancy iPad apps will have gone the way of the Dodo.
+Encrypt your journals with the industry-strength AES encryption. The NSA won't be able to read your dirty secrets.
+Sync your journals with Dropbox and capture your thoughts where ever you are
+Read, write and search your DayOne journal from the command line.
+jrnl is made by a bunch of really friendly and remarkably attractive people. Maybe even you?
+Effortlessly access several journals for all parts of your life.
+On OS X, the easiest way to install jrnl is using +Homebrew
+brew install jrnl
+
+
+On other platforms, install jrnl using pip
+pip install jrnl
+
+
+Or, if you want the option to encrypt your journal,
+pip install jrnl[encrypted]
+
+
+to install the dependencies for encrypting journals as well.
+Note
+Installing the encryption library, pycrypto
, requires a gcc
compiler. For this reason, jrnl will
+not install pycrypto
unless explicitly told so like this. You can install PyCrypto manually
+first or install it with pip install pycrypto
if you have a gcc
compiler.
+Also note that when using zsh, the correct syntax is pip install "jrnl[encrypted]"
(note the quotes).
The first time you run jrnl
you will be asked where your journal file
+should be created and whether you wish to encrypt it.
to make a new entry, just type
+jrnl yesterday: Called in sick. Used the time to clean the house and spent 4h on writing my book.
+
+
+and hit return. yesterday:
will be interpreted as a time stamp.
+Everything until the first sentence mark (.?!:
) will be interpreted as
+the title, the rest as the body. In your journal file, the result will
+look like this:
2012-03-29 09:00 Called in sick.
+Used the time to clean the house and spent 4h on writing my book.
+
+
+If you just call jrnl
, you will be prompted to compose your entry -
+but you can also configure jrnl to use your external editor.
jrnl
is a simple journal application for
+your command line. Journals are stored as human readable plain text
+files - you can put them into a Dropbox folder for instant syncing and
+you can be assured that your journal will still be readable in 2050,
+when all your fancy iPad journal applications will long be forgotten.
jrnl
also plays nice with the fabulous
+DayOne and can read and write directly from and
+to DayOne Journals.
Optionally, your journal can be encrypted using the 256-bit +AES.
+Journals aren't just for people who have too much +time on their summer vacation. A journal helps you to keep track of the +things you get done and how you did them. Your imagination may be +limitless, but your memory isn't.
+For personal use, make it a good habit to write at least 20 words a day. +Just to reflect what made this day special, why you haven't wasted it.
+For professional use, consider a text-based journal to be the perfect +complement to your GTD todo list - a documentation of what and how +you've done it. Or use it as a quick way to keep a change log. Or use it +to keep a lab book.
+ +