/joplin

Joplin - a note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS.

Primary LanguageJavaScriptMIT LicenseMIT

Joplin

Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in Markdown format.

Notes exported from Evernote via .enex files can be imported into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).

The notes can be synchronised with various targets including Nextcloud, the file system (for example with a network directory) or with Microsoft OneDrive. When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around.

Joplin is still under development but is out of Beta and should be suitable for every day use. The UI of the terminal client is built on top of the great terminal-kit library, the desktop client using Electron, and the Android client front end is done using React Native.

Installation

Three types of applications are available: for the desktop (Windows, macOS and Linux), for mobile (Android and iOS) and for terminal (Windows, macOS and Linux). All applications have similar user interfaces and can synchronise with each others.

Desktop applications

Operating System Download
Windows Get it on Windows
macOS Get it on macOS
Linux Get it on macOS

Mobile applications

Operating System Download Alt. Download
Android Get it on Google Play or Download APK File
iOS Get it on the App Store -

Terminal application

On macOS:

brew install joplin

On Linux or Windows (via WSL):

Important: First, install Node 8+. Node 8 is LTS but not yet available everywhere so you might need to manually install it.

NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin
sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin

By default, the application binary will be installed under ~/.joplin-bin. You may change this directory if needed. Alternatively, if your npm permissions are setup as described here (Option 2) then simply running npm -g install joplin would work.

To start it, type joplin.

For usage information, please refer to the full Joplin Terminal Application Documentation.

Features

  • Desktop, mobile and terminal applications.
  • Support notes, to-dos, tags and notebooks.
  • Offline first, so the entire data is always available on the device even without an internet connection.
  • Ability to synchronise with multiple targets, including NextCloud, the file system and OneDrive (Dropbox is planned).
  • Synchronises to a plain text format, which can be easily manipulated, backed up, or exported to a different format.
  • Markdown notes, which are rendered with images and formatting in the desktop and mobile applications.
  • Tag support
  • File attachment support (images are displayed, and other files are linked and can be opened in the relevant application).
  • Search functionality.
  • Geo-location support.
  • Supports multiple languages

Importing notes from Evernote

Joplin was designed as a replacement for Evernote and so can import complete Evernote notebooks, as well as notes, tags, resources (attached files) and note metadata (such as author, geo-location, etc.) via ENEX files. In terms of data, the only two things that might slightly differ are:

  • Recognition data - Evernote images, in particular scanned (or photographed) documents have recognition data associated with them. It is the text that Evernote has been able to recognise in the document. This data is not preserved when the note are imported into Joplin. However, should it become supported in the search tool or other parts of Joplin, it should be possible to regenerate this recognition data since the actual image would still be available.

  • Colour, font sizes and faces - Evernote text is stored as HTML and this is converted to Markdown during the import process. For notes that are mostly plain text or with basic formatting (bold, italic, bullet points, links, etc.) this is a lossless conversion, and the note, once rendered back to HTML should be very similar. Tables are also imported and converted to Markdown tables. For very complex notes, some formatting data might be lost - in particular colours, font sizes and font faces will not be imported. The text itself however is always imported in full regardless of formatting.

To import Evernote data, first export your Evernote notebooks to ENEX files as described here. Then follow these steps:

On the desktop application, open the "File" menu, click "Import Evernote notes" and select your ENEX file. This will open a new screen which will display the import progress. The notes will be imported into a new separate notebook (so that, in case of a mistake, the notes are not mixed up with any existing notes). If needed then can then be moved to a different notebook, or the notebook can be renamed, etc.

On the terminal application, in command-line mode, type import-enex /path/to/file.enex. This will import the notes into a new notebook named after the filename.

Importing notes from other applications

In general the way to import notes from any application into Joplin is to convert the notes to ENEX files (Evernote format) and to import these ENEX files into Joplin using the method above. Most note-taking applications support ENEX files so it should be relatively straightforward. For help about specific applications, see below:

  • Standard Notes: Please see this tutorial
  • Tomboy Notes: Export the notes to ENEX files as described here for example, and import these ENEX files into Joplin.

Synchronisation

One of the goals of Joplin was to avoid being tied to any particular company or service, whether it is Evernote, Google or Microsoft. As such the synchronisation is designed without any hard dependency to any particular service. Most of the synchronisation process is done at an abstract level and access to external services, such as Nextcloud or OneDrive, is done via lightweight drivers. It is easy to support new services by creating simple drivers that provide a filesystem-like interface, i.e. the ability to read, write, delete and list items. It is also simple to switch from one service to another or to even sync to multiple services at once. Each note, notebook, tags, as well as the relation between items is transmitted as plain text files during synchronisation, which means the data can also be moved to a different application, can be easily backed up, inspected, etc.

Currently, synchronisation is possible with Nextcloud and OneDrive (by default) or the local filesystem. A Dropbox one will also be available once this React Native bug is fixed. To setup synchronisation please follow the instructions below. After that, the application will synchronise in the background whenever it is running, or you can click on "Synchronise" to start a synchronisation manually.

Nextcloud synchronisation

Important: This is a beta feature. It has been extensively tested and is already in use by some users, but it is possible that some bugs remain. If you wish to you use it, it is recommended that you keep a backup of your data. The simplest way is to regularly backup the profile directory of the desktop or terminal application.

On the desktop application or mobile application, go to the config screen and select Nextcloud as the synchronisation target. Then input the WebDAV URL, this is normally https://example.com/nextcloud/remote.php/dav/files/USERNAME/Joplin (make sure to create the "Joplin" directory in Nextcloud and to replace USERNAME by your Nextcloud username), and set the username and password.

On the terminal application, you will need to set the sync.target config variable and all the sync.5.path, sync.5.username and sync.5.password config variables to, respectively the Nextcloud WebDAV URL, your username and your password. This can be done from the command line mode using:

:config sync.5.path https://example.com/nextcloud/remote.php/dav/files/USERNAME/Joplin
:config sync.5.username YOUR_USERNAME
:config sync.5.password YOUR_PASSWORD
:config sync.target 5

If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.

WebDAV synchronisation

Important: This is a beta feature. It has been extensively tested and is already in use by some users, but it is possible that some bugs remain. If you wish to you use it, it is recommended that you keep a backup of your data. The simplest way is to regularly backup the profile directory of the desktop or terminal application.

Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above.

OneDrive synchronisation

When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.

On the desktop application or mobile application, select "OneDrive" as the synchronisation target in the config screen (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar. You will be asked to login to OneDrive to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive).

On the terminal application, to initiate the synchronisation process, type :sync. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive). It is possible to also synchronise outside of the user interface by typing joplin sync from the terminal. This can be used to setup a cron script to synchronise at regular interval. For example, this would do it every 30 minutes:

*/30 * * * * /path/to/joplin sync

Encryption

Joplin supports end-to-end encryption (E2EE) on all the applications. E2EE is a system where only the owner of the notes, notebooks, tags or resources can read them. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. Please see the End-To-End Encryption Tutorial for more information about this feature and how to enable it.

For a more technical description, mostly relevant for development or to review the method being used, please see the Encryption specification.

Attachments / Resources

Any kind of file can be attached to a note. In Markdown, links to these files are represented as a simple ID to the resource. In the note viewer, these files, if they are images, will be displayed or, if they are other files (PDF, text files, etc.) they will be displayed as links. Clicking on this link will open the file in the default application.

Notifications

On the desktop and mobile apps, an alarm can be associated with any to-do. It will be triggered at the given time by displaying a notification. How the notification will be displayed depends on the operating system since each has a different way to handle this. Please see below for the requirements for the desktop applications:

  • Windows: >= 8. Make sure the Action Center is enabled on Windows. Task bar balloon for Windows < 8. Growl as fallback. Growl takes precedence over Windows balloons.
  • macOS: >= 10.8 or Growl if earlier.
  • Linux: notify-osd or libnotify-bin installed (Ubuntu should have this by default). Growl otherwise

See documentation and flow chart for reporter choice

On mobile, the alarms will be displayed using the built-in notification system.

If for any reason the notifications do not work, please open an issue.

Localisation

Joplin is currently available in the languages below. If you would like to contribute a new translation, it is quite straightforward, please follow these steps:

To update a translation, follow the same steps as above but instead of getting the .pot file, get the .po file for your language from there: https://github.com/laurent22/joplin/tree/master/CliClient/locales

This translation will apply to the three applications - desktop, mobile and terminal.

Current translations:

  Language Code Last translator Percent done
Croatian hr_HR Hrvoje Mandić trbuhom@net.hr 72%
Deutsch de_DE Tobias Strobel git@strobeltobias.de 92%
English en_GB 100%
Español es_ES Lucas Vieites 80%
Español (Costa Rica) es_CR 68%
Français fr_FR Laurent Cozic 100%
Italiano it_IT 76%
Nederlands nl_BE 90%
Português (Brasil) pt_BR 74%
Русский ru_RU Artyom Karlov artyom.karlov@gmail.com 96%
中文 (简体) zh_CN RCJacH RCJacH@outlook.com 76%
日本語 ja_JP 74%

Contributing

Please see the guide for information on how to contribute to the development of Joplin: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md

Coming features

  • Mobile: manage tags
  • Windows: Tray icon
  • Desktop apps: Tag auto-complete
  • Desktop apps: Dark theme
  • Linux: Enable auto-update for desktop app

Known bugs

  • Non-alphabetical characters such as Chinese or Arabic might create glitches in the terminal on Windows. This is a limitation of the current Windows console.
  • Auto-update is not working in the Linux desktop application.
  • While the mobile can sync and load tags, it is not currently possible to create new ones. The desktop and terminal apps can create, delete and edit tags.

License

Copyright (c) 2016-2018 Laurent Cozic

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.