15 unstable releases (3 breaking)
0.4.3 | Oct 31, 2019 |
---|---|
0.4.2 | Oct 24, 2019 |
0.3.4 | Oct 21, 2019 |
0.2.4 | Oct 7, 2019 |
0.1.0 | Oct 4, 2019 |
#200 in Text editors
91KB
2.5K
SLoC
My Journal
My Journal is a productivity tool that will help you manage your ideas, journals, notes and tasks. My Journal is nothing else but a thin layer atop your default editor that it will use to organize your textual notes in a clean and yet open structure of directories.
TUI mode
CLI mode
Initialize new repository
To initialize a new repository, ask My Journal to do the following:
mkdir -p ~/MyJournals/demo
cd ~/MyJournals/demo
mj init .
This will produce minimal folder structure:
.
├── ideas
├── journals
├── notes
└── tasks
Working with ideas
To start capturing ideas for super-project
type in the following command:
mj idea edit super-project
This will open your default $EDITOR
where you can write down all the relevant
information. After you exit your editor, My Journal will make sure your idea
is stored in the right structure:
.
├── ideas
│ └── super-project.md
├── journals
├── notes
└── tasks
To continue working on super-project
idea you can type in the same edit
command:
mj idea edit super-project
To list registered ideas just type in the following:
mj ideas list
And, finally to remove an idea you can do either edit
and wipe out the
content followed by saving the file (My Journal will take care of deleting
empty files for you), or by calling remove
command like following:
mj idea remove super-project
Note, that
i
,idea
andideas
are synonyms, and can be used interchangeably.
Working with journals
Journals are handled slightly differently than ideas. Let's see how it works:
mj journal edit
This will open your default $EDITOR
where you can write down all the relevant
information for today. After you exit your editor, My Journal will make sure
your todays journal record is stored in the right structure (assuming that
today
for me is 2019-10-02
at the moment):
.
├── ideas
├── journals
│ └── 2019-10-02
│ └── journal.md
├── notes
└── tasks
To continue working on todays journal you can type in the same edit
command:
mj journal edit
In case you might want to work a journal from another day, it is possible with the following command:
mj journal edit 1d
This will let you work on your yesterdays journal. In case you want specific date, you can always do that:
mj journal edit 2019-09-04
This will naturally let you work on your journal from 2019-09-04
.
To list registered journals in an descending order of registration just type in the following:
mj journals list
And, finally to remove a journal from a specific date you can do either edit
and wipe out the content followed by saving the file (My Journal will take
care of deleting empty files for you), or by calling remove
command like
following:
mj journal remove 1d
This will remove yesterdays journal (here you can use specific dates as well if you wish). Or you can remove todays journal with the following command:
mj journal remove
Note, that
j
,journal
andjournals
are synonyms, and can be used interchangeably.
Working with notes
Notes are handled differently than both ideas and journals. Let's see how it works:
mj note edit algorithms sieve-of-eratosthenes
This will open your default $EDITOR
where you can write down all the relevant
information on the subject the subject Sieve of Eratosthenes in the category
Algorithms. After you exit your editor, My Journal will make sure your note
is stored in the right structure:
.
├── ideas
├── journals
├── notes
│ └── algorithms
│ └── sieve-of-eratosthenes.md
└── tasks
To continue adding to your note you can type in the same edit
command:
mj note edit algorithms sieve-of-eratosthenes
To list all existing notes across all the categories just type in the following:
mj notes list
To list existing categories just type in the following:
mj notes list --categories
And, finally, to list notes from a specific category, just run the following:
mj notes list algorithms
And, finally to remove a note from a specific category you can do either edit
and wipe out the content followed by saving the file (My Journal will take
care of deleting empty files for you), or by calling remove
command like
following:
mj note remove algorithms sieve-of-eratosthenes
Note, that
n
,note
andnotes
are synonyms, and can be used interchangeably.
Working with tasks
Tasks are handled somewhat similar to how notes are handled. Let's see how it works:
mj task edit super-project
This will open your default $EDITOR
where you can write down all the relevant
information on a super project. After you exit your editor, My Journal will
make sure your tasks are stored in the right structure:
.
├── ideas
├── journals
├── notes
└── tasks
└── super-project
└── tasks.md
To continue working on tasks for super-project
you can type in the same
edit
command:
mj task edit super-project
To list all existing tasks across all the projects just type in the following:
mj tasks list
To list existing projects just type in the following:
mj tasks list --projects
And, finally, to list tasks from a specific project, just run the following:
mj tasks list super-project
And, finally to remove tasks from a specific project you can do either edit
and wipe out the content followed by saving the file (My Journal will take
care of deleting empty files for you), or by calling remove
command like
following:
mj task remove super-project
Note, that
t
,task
andtasks
are synonyms, and can be used interchangeably.
Configuration files
My Journal can be configured in ~/.config/my-journal/config
file. Here is
how default configuration looks like:
global_vault_root = '/home/kuznero/.local/share/my-journal'
view_delimiter = '¶'
input_delimiter = '::'
task_not_done_prefix = '-'
task_not_done_display_prefix = '☐'
task_in_progress_prefix = '*'
task_in_progress_display_prefix = '⟳'
task_done_prefix = '+'
task_done_display_prefix = '☑'
These settings are global settings that apply for all My Journal
repositories. But My Journal allows you to override any settings for any
repository individually. For that you will need to create a file named
.mjconfig
in the root of your My Journal repository and place any of the
settings from the global configuration file, e.g. like following:
view_delimiter = '¶'
input_delimiter = '::'
task_not_done_prefix = '-'
task_not_done_display_prefix = '?'
task_in_progress_prefix = '~'
task_in_progress_display_prefix = '.'
task_done_prefix = '+'
task_done_display_prefix = '↷'
Completion scripts for your shell
To make things easier My Journal let's you generate completion scripts for one of the supported shells: Bash, Fish, Zsh, PowerShell or Elvish.
In order to enable My Journal completion for your shell, it is possible to just run one of the following commands:
source <(mj completion bash)
source <(mj completion fish)
source <(mj completion zsh)
source <(mj completion powershell)
source <(mj completion elvish)
Dependencies
~9.5MB
~160K SLoC