Welcome to OpenJournal’s documentation!

Tests Format Build https://github.com/bgallois/OpenJournal/raw/master/resources/readme.png

OpenJournal is a simple journal, note-taking, and assistant application supporting Markdown syntax and Markdown rendering thanks to qmarkdowntextedit. It is designed to be as simple as possible with complete Markdown syntax, smart drag’n drop, and keyboard shortcuts.

OpenJournal is available for Linux, Windows, macOS and offers a cloud storage see more on the website.

Design Philosophy

OpenJournal is a simple note-taking application. Each day represents a separate entry that can be navigated using a calendar widget. Each journal is stored inside a database that can be either a local file (*.jnl) or a database inside a MariaDB server.

  • For writers: as detailed in Description & Setting by Ron Rozelle, keeping a writer’s journal is a good way to improve writing abilities. Writers can record plots outlines, observations, descriptions, details, dialog lines, etc…

  • For anyone: keeping a daily diary can help you achieve several goals. It can help you organize your thoughts, records daily success, and set your next goals to keep the insensitive high. Writing down feelings can help you self-reflect and relieve stress, keeping a trace of situations and feelings.

  • For professionals: writing down tasks to achieve and expected jobs duration can help you organize your day. The possibility to set alarms can help to manage available time and not forget any meeting.

User Interface

The user interface of OpenJournal is designed to be as simple as possible. It is constituted of 3 resizable panels:

  • The editor panel.

  • The calendar panel.

  • The preview panel.

A toolbox provides shortcuts to the Markdown syntax and a menu bar to create and open journals.

Editor

The editor is based on QMarkdowTextEdit and supports the Markdown syntax and find and replace. It supports smart drag and drop for images and texts. Dropping an image from a local folder or from an Html link will copy the image in the journal and reference it locally. Plain text can be added by dropping a text file in the editor. The text will be inserted at the cursor location.

Calendar

The calendar provides a quick way to navigate through the journal.

Preview

The preview provides a way to visualize the rendered Markdown document. It can be used to previsualize the result of an entry and to comfortably read a journal.

Installation

Stable versions of OpenJournal can be found on the releases page. It is available on Linux as an AppImage compatible with all the major distributions, on Windows as a basic installer, and on macOS as an App.

Note

During the installation on Windows and Mac systems, security alerts are displayed because the OpenJournal executable does not possess an EV code signing certificate. These alerts can be ignored safely.

Text formatting

Markdown text

Paragraph

Paragraphs are separated by a blank line.

Style

*italic*,
**bold**

List

Bullet list:
* Start a line with an asterisk
* Food
* Fruits
    * Oranges
    * Apples

Numbered list:
1. One
2. Two
3. Three

To do list:
- [x] Task one
- [ ] Task two
- [ ] Task three

Code

`inline`
```
block
```

Formulas

\\( inline \\)
\\[ block \\]

Quote

> This is a blockquote.

Separator

---

Markdown image

Images can be added by dropping a file in the editor or using the Markdown syntax ![label](path). The image will be stored in the journal database and the reference will be updated to ![OpenJournal_label](tmp/label) and should not be modified afterward. Image files are temporarily copied in the system temporary folder for rendering and deleted when no longer useful.

Notification

OpenJournal included a system of alarms that can be set using the Add Alarm button on the toolbar or directly in plaintext with the command:

setAlarm(hh:mm,message);

The alarm sound can be activated in the Options menu in the menu bar. In any case, the alarm will display the alarm’s message in the system tray.

Keyboard shortcuts

Markdown features

Bold text

CTRL + Key_B

If a text is selected, it will be set as bold. If no text selected, cursor will be placed between balises.

Italic text

CTRL + Key_I

If a text is selected, it will be set as bold. If no text selected, cursor will be placed between balises.

Strikethrough text

CTRL + Key_S

If a text is selected, it will be set as bold. If no text selected, cursor will be placed between balises.

Insert to-do list

CTRL + Key_D

Insert numbered list

CTRL + Key_L

Insert unordered list

CTRL + SHIFT + Key_L

Insert table

CTRL + Key_T

Insert image

CTRL + Key_SHIFT + Key_I

If a text is selected, it will be passed as as path.

Insert formula

CTRL + Key_F

If a text is selected, it will be passed as as path.

OpenJournal features

Lock the journal

CTRL + Key_Escape

Insert alarm

CTRL + Key_A

OpenJournal cloud

OpenJournal offers cloud storage for journals. It required an account creation and it is currently in open beta, ie. the data are backup twice a day, but the server can undergo unplanned maintenance.

Account creation

Accounts creation is done by filling the registration form. A Token will be sent to verify the registration email. Then the user can connect to its remote journal.

Connection

  • Go to File -> Cloud connection.

  • Enter username and password.

Note

Concurrency is not supported in OpenJournal. You can’t edit the same journal on several computers. However, one journal open on several computers will update itself if the two subsequent changes on two different computers are separated by more than twenty seconds.

Advanced

MariaDB journal

Note

OpenJournal can access remotely created journals that are hosted on a MariaDB/MySQL server. For security purposes, do not expose databases to the internet!.

Server creation

sudo apt install mariadb-server
sudo mysql_secure_installation
mysql -u root -p
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

Connection

  • Go to File -> Connect to a remote planner.

  • Enter username@hostname:port

  • Enter journalname@password. If username has write privilege on the server, journalname database will be created if it doesn’t exist, else journalname has to be created on the server by a user with write privilege.