Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS

Overview

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN


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.). Plain Markdown files can also be imported.

The notes can be synchronised with various cloud services including Nextcloud, Dropbox, OneDrive, WebDAV or the file system (for example with a network directory). 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.

The application is available for Windows, Linux, macOS, Android and iOS (the terminal app also works on FreeBSD). A Web Clipper, to save web pages and screenshots from your browser, is also available for Firefox and Chrome.

Installation

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

Desktop applications

Operating System Download
Windows (32 and 64-bit) Get it on Windows
macOS Get it on macOS
Linux Get it on Linux

On Windows, you may also use the Portable version. The portable application allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.

On Linux, the recommended way is to use the following installation script as it will handle the desktop icon too:

wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash

Mobile applications

Operating System Download Alt. Download
Android Get it on Google Play or download the APK file: 64-bit 32-bit
iOS Get it on the App Store -

Terminal application

Operating system Method
macOS, Linux, or Windows (via WSL) Important: First, install Node 12+.

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.

Unsupported methods

There are other ways to install the terminal application. However, they are not supported and problems must be reported to the upstream projects.

Operating system Method
Arch Linux An Arch Linux package is available here. To install it, use an AUR wrapper such as yay: yay -S joplin. Both the CLI tool (type joplin) and desktop app (type joplin-desktop) are packaged. You can also install a compiled version with the chaotic-aur repository. For support, please go to the GitHub repo. If you are interested in pre-release you have joplin-beta.
Flatpak A Flatpak is available on Flathub. To install it, run flatpak install net.cozic.joplin_desktop after setting up Flathub. GUI software managers on most distros support Flatpak installation.

Web Clipper

The Web Clipper is a browser extension that allows you to save web pages and screenshots from your browser. For more information on how to install and use it, see the Web Clipper Help Page.

Sponsors



avanderberg

c-nagy

cabottech

chr15m

chrootlogin

clmntsl

cuongtransc

dbrandonjohnson

fbloise

h4sh5

iamwillbar

Jesssullivan

joesfer

konishi-t

marcdw1289

maxtruxa

mcejp

nicholashead

piccobit

ravenscroftj

thismarty

thomasbroussard

Table of contents

Features

  • Desktop, mobile and terminal applications.
  • Web Clipper for Firefox and Chrome.
  • End To End Encryption (E2EE).
  • Note history (revisions).
  • Synchronisation with various services, including Nextcloud, Dropbox, WebDAV and OneDrive.
  • Offline first, so the entire data is always available on the device even without an internet connection.
  • Import Enex files (Evernote export format) and Markdown files.
  • Export JEX files (Joplin Export format) and raw files.
  • Support notes, to-dos, tags and notebooks.
  • Sort notes by multiple criteria - title, updated time, etc.
  • Support for alarms (notifications) in mobile and desktop applications.
  • Markdown notes, which are rendered with images and formatting in the desktop and mobile applications. Support for extra features such as math notation and checkboxes.
  • Choice of both Markdown and Rich Text (WYSIWYG) editors.
  • File attachment support - images are displayed, other files are linked and can be opened in the relevant application.
  • Inline display of PDF, video and audio files.
  • Goto Anything feature.
  • Search functionality.
  • Geo-location support.
  • Supports multiple languages.
  • External editor support - open notes in your favorite external editor with one click in Joplin.
  • Extensible functionality through plugin and data APIs.
  • Custom CSS support for customisation of both the rendered markdown and overall user interface.
  • Customisable layout allows toggling, movement and sizing of various elements.
  • Keyboard shortcuts are editable and allow binding of most Joplin commands with export/import functionality.

Importing

Importing 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. If it is essential that this extra data is preserved then Joplin also allows import of ENEX files as HTML.

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

In the desktop application, open File > Import > ENEX and select your file. The notes will be imported into a new separate notebook. If needed they can then be moved to a different notebook, or the notebook can be renamed, etc.

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

Importing from Markdown files

Joplin can import notes from plain Markdown file. You can either import a complete directory of Markdown files or individual files.

In the desktop application:

  • File import: Go to File > Import > MD - Markdown (file) and select the Markdown file. This file will then be imported to the currently selected Notebook.
  • Directory import: Go to File > Import > MD - Markdown (directory) and select the top level of the directory that is being imported. Directory (folder) structure will be preserved in the Notebook > Subnotebook > Note structure within Joplin.

In the terminal application, in command-line mode, type import --format md /path/to/file.md or import --format md /path/to/directory/.

Importing 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:

Exporting

Joplin can export to the JEX format (Joplin Export file), which is a tar file that can contain multiple notes, notebooks, etc. This is a lossless format in that all the notes, but also metadata such as geo-location, updated time, tags, etc. are preserved. This format is convenient for backup purposes and can be re-imported into Joplin. A "raw" format is also available. This is the same as the JEX format except that the data is saved to a directory and each item represented by a single file. Joplin is also capable of exporting to a number of other formats including HTML and PDF which can be done for single notes, notebooks or everything.

Synchronisation

One of the goals of Joplin is 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 Dropbox, 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, WebDAV, Dropbox, OneDrive or the local filesystem. To enable 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. Joplin will background sync automatically after any content change is made on the local application.

If the terminal client has been installed, 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 a regular interval. For example, this would do it every 30 minutes:

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

Nextcloud synchronisation

Nextcloud is a self-hosted, private cloud solution. It can store documents, images and videos but also calendars, passwords and countless other things and can sync them to your laptop or phone. As you can host your own Nextcloud server, you own both the data on your device and infrastructure used for synchronisation. As such it is a good fit for Joplin. The platform is also well supported and with a strong community, so it is likely to be around for a while - since it's open source anyway, it is not a service that can be closed, it can exist on a server for as long as one chooses.

In the desktop application or mobile application, go to the Configuration screen and select Nextcloud as the synchronisation target. Then input the WebDAV URL (to get it, click on Settings in the bottom left corner of the page, in Nextcloud), this is normally https://example.com/nextcloud/remote.php/webdav/Joplin (make sure to create the "Joplin" directory in Nextcloud), and set the username and password. If it does not work, please see this explanation for more details.

In 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/webdav/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

Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above (for the terminal application you will need to select sync target 6 rather than 5)

WebDAV-compatible services that are known to work with Joplin:

Dropbox synchronisation

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

In the desktop application or mobile application, select "Dropbox" as the synchronisation target in the Configuration screen (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions.

In the terminal application, to initiate the synchronisation process, type :sync. You will be asked to follow a link to authorise the application.

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.

In the desktop application or mobile application, select "OneDrive" as the synchronisation target in the Configuration screen. Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions.

In 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).

S3 synchronisation

As of Joplin 2.x.x, Joplin supports multiple S3 providers. We expose some options that will need to be configured depending on your provider of choice. We have tested with UpCloud, AWS, and Linode. others should work as well.

In the desktop application or mobile application, select "S3 (Beta)" as the synchronisation target in the Configuration screen.

  • S3 Bucket: The name of your Bucket, such as joplin-bucket
  • S3 URL: Fully qualified URL; For AWS this should be https://s3.amazonaws.com/
  • S3 Access Key & S3 Secret Key: The User's programmatic access key. To create a new key & secret on AWS, visit IAM Security Credentials. For other providers follow their documentation.
  • S3 Region: Some providers require you to provide the region of your bucket. This is usually in the form of "eu-west1" or something similar depending on your region. For providers that do not require a region, you can leave it blank.
  • Force Path Style: This setting enables Joplin to talk to S3 providers using an older style S3 Path. Depending on your provider you may need to try with this on and off.

While creating a new Bucket for Joplin, disable Bucket Versioning, enable Block all public access and enable Default encryption with Amazon S3 key (SSE-S3). Some providers do not expose these options, and it could create a syncing problem. Do attempt and report back so we can update the documentation appropriately.

To add a Bucket Policy from the AWS S3 Web Console, navigate to the Permissions tab. Temporarily disable Block all public access to edit the Bucket policy, something along the lines of:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                  "s3:ListBucket",
                  "s3:GetBucketLocation",
                  "s3:GetObject",
                  "s3:DeleteObject",
                  "s3:DeleteObjectVersion",
                  "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::joplin-bucket",
                "arn:aws:s3:::joplin-bucket/*"
            ]
        }
    ]
}

Configuration settings for tested providers

All providers will require a bucket, Access Key, and Secret Key.

If you provide a configuration and you receive "success!" on the "check config" then your S3 sync should work for your provider. If you do not receive success, you may need to adjust your settings, or save them, restart the app, and attempt a sync. This may reveal more clear error messaging that will help you deduce the problem.

AWS

Linode

  • URL: https://.linodeobjects.com
  • Region: empty
  • Force Path Style: unchecked

UpCloud

  • URL: https://..upcloudobjects.com (They will provide you with multiple URLs, the one that follows this pattern should work.)
  • Region: required
  • Force Path Style: unchecked

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.

Note history

The Joplin applications automatically save previous versions of your notes at regular intervals. These versions are synced across devices and can be viewed from the desktop application. To do so, click on the "Information" button on a note, then click on "Previous version of this note". From this screen you can view the previous versions of the note as well as restore any of them.

This feature can be disabled from the "Note history" section in the Configuration screen, and it is also possible to change for how long the history of a note is saved.

More information please see the Note History page.

External text editor

Joplin notes can be opened and edited using an external editor of your choice. It can be a simple text editor like Notepad++ or Sublime Text or an actual Markdown editor like Typora. In that case, images will also be displayed within the editor. To open the note in an external editor, click on the icon in the toolbar or press Ctrl+E (or Cmd+E). Your default text editor will be used to open the note. If needed, you can also specify the editor directly in the General Options, under "Text editor command".

Attachments

Any kind of file can be attached to a note. In Markdown, links to these files are represented as a simple ID to the attachment, clicking on this link will open the file in the default application. In the case of audio, video and pdf files, these will be displayed inline with the note and so can be viewed or played within Joplin.

In the desktop application, files can be attached either by clicking the "Attach file" icon in the editor or via drag and drop. If you prefer to create a link to a local file instead, hold the ALT key while performing the drag and drop operation. You can also copy and paste images directly in the editor via Ctrl+V.

Resources that are not attached to any note will be automatically deleted in accordance to the Note History settings.

Important: Resources larger than 10 MB are not currently supported on mobile. They will crash the application when synchronising so it is recommended not to attach such resources at the moment. The issue is being looked at.

Downloading attachments

The way the attachments are downloaded during synchronisation can be customised in the Configuration screen, under "Attachment download behaviour". The default option ("Always") is to download all the attachments, all the time, so that the data is available even when the device is offline. There is also the option to download the attachments manually (option "Manual"), by clicking on it, or automatically (Option "Auto"), in which case the attachments are downloaded only when a note is opened. These options should help saving disk space and network bandwidth, especially on mobile.

Notifications

In 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-send tool, delivered through packages notify-osd, libnotify-bin or libnotify-tools. GNOME should have this by default, but install libnotify-tools if using KDE Plasma.

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.

Sub-notebooks

Sub-notebooks allow organising multiple notebooks into a tree of notebooks. For example it can be used to regroup all the notebooks related to work, to family or to a particular project under a parent notebook.

  • In the desktop application, to create a subnotebook, drag and drop it onto another notebook. To move it back to the root, drag and drop it on the "Notebooks" header. Currently only the desktop app can be used to organise the notebooks.
  • The mobile application supports displaying and collapsing/expanding the tree of notebooks, however it does not currently support moving the subnotebooks to different notebooks.
  • The terminal app supports displaying the tree of subnotebooks but it does not support collapsing/expanding them or moving the subnotebooks around.

Markdown

Joplin uses and renders a Github-flavoured Markdown with a few variations and additions. In particular it adds math formula support, interactive checkboxes and support for note links. Joplin also supports Markdown plugins which allow enabling and disabling various advanced Markdown features. Have a look at the Markdown Guide for more information.

Custom CSS

Rendered markdown can be customized by placing a userstyle file in the profile directory ~/.config/joplin-desktop/userstyle.css (This path might be different on your device - check at the top of the General page of the Configuration screen for the exact path). This file supports standard CSS syntax. Joplin must be restarted for the new css to be applied, please ensure that Joplin is not closing to the tray, but is actually exiting. Note that this file is used for both displaying the notes and printing the notes. Be aware how the CSS may look printed (for example, printing white text over a black background is usually not wanted).

The whole UI can be customized by placing a custom editor style file in the profile directory ~/.config/joplin-desktop/userchrome.css.

Important: userstyle.css and userchrome.css are provided for your convenience, but they are advanced settings, and styles you define may break from one version to the next. If you want to use them, please know that it might require regular development work from you to keep them working. The Joplin team cannot make a commitment to keep the application HTML structure stable.

Plugins

The desktop app has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin plugin API and can be installed & configured within the application via the Plugins page in the Configuration screen. This menu allows the manual installation of the plugin using the single 'Joplin Plugin Archive' (*.jpl) file. Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.

Plugins are currently maintained by the community in the Joplin Discourse 'plugins' category.

For more information see Plugins

Searching

Joplin implements the SQLite Full Text Search (FTS4) extension. It means the content of all the notes is indexed in real time and search queries return results very fast. Both Simple FTS Queries and Full-Text Index Queries are supported. See below for the list of supported queries:

One caveat of SQLite FTS is that it does not support languages which do not use Latin word boundaries (spaces, tabs, punctuation). To solve this issue, Joplin has a custom search mode, that does not use FTS, but still has all of its features (multi term search, filters, etc.). One of its drawbacks is that it can get slow on larger note collections. Also, the sorting of the results will be less accurate, as the ranking algorithm (BM25) is, for now, only implemented for FTS. Finally, in this mode there are no restrictions on using the * wildcard (swim*, *swim and ast*rix all work). This search mode is currently enabled if one of the following languages are detected:

  • Chinese
  • Japanese
  • Korean
  • Thai

Supported queries

Search type Description Example
Single word Returns all the notes that contain this term. For example, searching for cat will return all the notes that contain this exact word. Note: it will not return the notes that contain the substring - thus, for "cat", notes that contain "cataclysmic" or "prevaricate" will not be returned.
Multiple word Returns all the notes that contain all these words, but not necessarily next to each other. dog cat - will return any notes that contain the words "dog" and "cat" anywhere in the note, no necessarily in that order nor next to each other. It will not return results that contain "dog" or "cat" only.
Phrase Add double quotes to return the notes that contain exactly this phrase. "shopping list" - will return the notes that contain these exact terms next to each other and in this order. It will not return for example a note that contains "going shopping with my list".
Prefix Add a wildcard to return all the notes that contain a term with a specified prefix. swim* - will return all the notes that contain eg. "swim", but also "swimming", "swimsuit", etc. IMPORTANT: The wildcard can only be at the end - it will be ignored at the beginning of a word (eg. *swim) and will be treated as a literal asterisk in the middle of a word (eg. ast*rix)
Switch to basic search One drawback of Full Text Search is that it ignores most non-alphabetical characters. However in some cases you might want to search for this too. To do that, you can use basic search. You switch to this mode by prefixing your search with a slash /. This won't provide the benefits of FTS but it will allow searching exactly for what you need. Note that it can also be much slower, even extremely slow, depending on your query. /"- [ ]" - will return all the notes that contain unchecked checkboxes.

Search filters

You can also use search filters to further restrict the search.

Operator Description Example
- If placed before a text term, it excludes the notes that contain that term. You can also place it before a filter to negate it. -spam searches for all notes without the word spam.
office -trash searches for all notes with the wordoffice and without the word trash.
any: Return notes that satisfy any/all of the required conditions. any:0 is the default, which means all conditions must be satisfied. any:1 cat dog will return notes that have the word cat or dog.
any:0 cat dog will return notes with both the words cat and dog.
title:
body:
Restrict your search to just the title or the body field. title:"hello world" searches for notes whose title contains hello and world.
title:hello -body:world searches for notes whose title contains hello and body does not contain world.
tag: Restrict the search to the notes with the specified tags. tag:office searches for all notes having tag office.
tag:office tag:important searches for all notes having both office and important tags.
tag:office -tag:spam searches for notes having tag office which do not have tag spam.
any:1 tag:office tag:spam searches for notes having tag office or tag spam.
tag:be*ful does a search with wildcards.
tag:* returns all notes with tags.
-tag:* returns all notes without tags.
notebook: Restrict the search to the specified notebook(s). notebook:books limits the search scope within books and all its subnotebooks.
notebook:wheel*time does a wildcard search.
created:
updated:
due:
Searches for notes created/updated on dates specified using YYYYMMDD format. You can also search relative to the current day, week, month, or year. created:20201218 will return notes created on or after December 18, 2020.
-updated:20201218 will return notes updated before December 18, 2020.
created:20200118 -created:20201215 will return notes created between January 18, 2020, and before December 15, 2020.
created:202001 -created:202003 will return notes created on or after January and before March 2020.
updated:1997 -updated:2020 will return all notes updated between the years 1997 and 2019.
created:day-2 searches for all notes created in the past two days.
updated:year-0 searches all notes updated in the current year.
-due:day+7 will return all todos which are due or will be due in the next seven days.
-due:day-5 searches all todos that are overdue for more than 5 days.
type: Restrict the search to either notes or todos. type:note to return all notes
type:todo to return all todos
iscompleted: Restrict the search to either completed or uncompleted todos. iscompleted:1 to return all completed todos
iscompleted:0 to return all uncompleted todos
latitude:
longitude:
altitude:
Filter by location latitude:40 -latitude:50 to return notes with latitude >= 40 and < 50
resource: Filter by attachment MIME type resource:image/jpeg to return notes with a jpeg attachment.
-resource:application/pdf to return notes without a pdf attachment.
resource:image/* to return notes with any images.
sourceurl: Filter by source URL sourceurl:https://www.google.com
sourceurl:*joplinapp.org to perform a wildcard search.
id: Filter by note ID id:9cbc1b4f242043a9b8a50627508bccd5 return a note with the specified id

Note: In the CLI client you have to escape the query using -- when using negated filters. Eg. :search -- "-tag:tag1".

The filters are implicitly connected by and/or connectives depending on the following rules:

  • By default, all filters are connected by "AND".
  • To override this default behaviour, use the any filter, in which case the search terms will be connected by "OR" instead.
  • There's an exception for the notebook filters which are connected by "OR". The reason being that no note can be in multiple notebooks at once.

Incorrect search filters are interpreted as a phrase search, e.g. misspelled nootebook:Example or non-existing https://joplinapp.org.

Search order

Notes are sorted by "relevance". Currently it means the notes that contain the requested terms the most times are on top. For queries with multiple terms, it also matters how close to each other the terms are. This is a bit experimental so if you notice a search query that returns unexpected results, please report it in the forum, providing as many details as possible to replicate the issue.

Goto Anything

In the desktop application, press Ctrl+P or Cmd+P and type a note title or part of its content to jump to it. Or type # followed by a tag name, or @ followed by a notebook name.

Privacy

Joplin values your privacy and security by giving you complete control over your information and digital footprint.

Joplin applications do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time.

Joplin has many modern features, some of which use third-party services. You can disable any or all of these features in the application settings. These features are:

Feature Description Default
Auto-update Joplin periodically connects to GitHub to check for new releases. Enabled
Geo-location Joplin saves geo-location information in note properties when you create a note. Enabled
Synchronisation Joplin supports synchronisation of your notes across multiple devices. If you choose to synchronise with a third-party, such as OneDrive, the notes will be sent to your OneDrive account, in which case the third-party privacy policy applies. Disabled

Joplin is developed as an open-source application and the source code is freely available online to inspect.

For any question about Joplin privacy, please leave a message on the Joplin Forum.

Donations

Donations to Joplin support the development of the project. Developing quality applications mostly takes time, but there are also some expenses, such as digital certificates to sign the applications, app store fees, hosting, etc. Most of all, your donation will make it possible to keep up the current development standard.

Please see the donation page for information on how to support the development of Joplin.

Community

Name Description
Support Forum This is the main place for general discussion about Joplin, user support, software development questions, and to discuss new features. Also where the latest beta versions are released and discussed.
Twitter feed Follow us on Twitter
Mastodon feed Follow us on Mastodon
Patreon page The latest news are often posted there
Discord server Our chat server
Sub-reddit Also a good place to get help

Contributing

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

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:

  • Download Poedit, the translation editor, and install it.
  • Download the file to be translated.
  • In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language.
  • From then you can translate the file.
  • Once it is done, please open a pull request and add the file to it.

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

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 the table below.

Current translations:

  Language Po File Last translator Percent done
Arabic ar Whaell O 93%
Basque eu [email protected] 27%
Bosnian (Bosna i Hercegovina) bs_BA Derviš T. 67%
Bulgarian (България) bg_BG 53%
Catalan ca Xavi Ivars 93%
Croatian (Hrvatska) hr_HR Milo Ivir 97%
Czech (Česká republika) cs_CZ Michal Stanke 89%
Dansk (Danmark) da_DK ERYpTION 97%
Deutsch (Deutschland) de_DE MrKanister 99%
Eesti Keel (Eesti) et_EE 51%
English (United Kingdom) en_GB 100%
English (United States of America) en_US 100%
Español (España) es_ES Francisco Mora 99%
Esperanto eo Marton Paulo 30%
Finnish (Suomi) fi_FI mrkaato 93%
Français (France) fr_FR Laurent Cozic 100%
Galician (España) gl_ES Marcos Lans 34%
Indonesian (Indonesia) id_ID eresytter 92%
Italiano (Italia) it_IT Albano Battistella 90%
Magyar (Magyarország) hu_HU Magyari Balázs 78%
Nederlands (België, Belgique, Belgien) nl_BE 81%
Nederlands (Nederland) nl_NL MetBril 85%
Norwegian (Norge, Noreg) nb_NO Alexander Dawson 90%
Persian fa Kourosh Firoozbakht 64%
Polski (Polska) pl_PL konhi 84%
Português (Brasil) pt_BR Felipe Viggiano 94%
Português (Portugal) pt_PT Diogo Caveiro 84%
Română ro Cristi Duluta 59%
Slovenian (Slovenija) sl_SI Martin Korelič 93%
Svenska sv Jonatan Nyberg 97%
Thai (ประเทศไทย) th_TH 43%
Tiếng Việt vi 90%
Türkçe (Türkiye) tr_TR Arda Kılıçdağı 93%
Ukrainian (Україна) uk_UA Vyacheslav Andreykiv 83%
Ελληνικά (Ελλάδα) el_GR Harris Arvanitis 87%
Русский (Россия) ru_RU Sergey Segeda 93%
српски језик (Србија) sr_RS 76%
中文 (简体) zh_CN 南宫小骏 97%
中文 (繁體) zh_TW SiderealArt 90%
日本語 (日本) ja_JP genneko 98%
한국어 ko Ji-Hyeon Gim 89%

Contributors

Thank you to everyone who've contributed to Joplin's source code!


laurent22

tessus

CalebJohn

mic704b

roman-r-m

genneko

j-krl

tanrax

naviji

PackElend

rtmkrlv

fmrtn

potatogim

devonzuegel

anjulalk

gabcoh

matsest

abonte

Abijeet

ishantgupta777

JackGruber

Ardakilic

rabeehrz

coderrsid

foxmask

innocuo

Rahulm2310

readingsnail

mablin7

XarisA

jonath92

alexdevero

Runo-saduwa

marcosvega91

petrz12

rnbastos

ProgramFan

zblesk

vsimkus

moltenform

nishantwrp

zuphilip

Rishabh-malhotraa

metbril

WhiredPlanck

milotype

yaozeye

ylc395

RenatoXSR

RedDocMD

q1011

amitsin6h

Atalanttore

Mannivu

martonpaulo

mmahmoudian

rccavalcanti

ShaneKilkelly

sinkuu

stweil

conyx

anihm136

archont00

bradmcl

tfinnberg

amandamcg

marcushill

nathanleiby

RaphaelKimmig

Vaso3

sensor-freak

lkiThakur

infinity052

BartBucknill

mrwulf

chrisb86

chrmoritz

Daeraxa

Elaborendum

ethan42411

JOJ0

jalajcodes

jblunck

jdrobertso

Jesssullivan

jmontane

johanhammar

solariz

maicki

mjjzf

rt-oliveira

sebastienjust

sealch

StarFang208

Subhra264

SubodhDahal

TobiasDev

Whaell

jyuvaraj03

kowalskidev

alexchee

axq

barbowza

eresytter

lightray22

lscolombo

mrkaato

pf-siedler

ruuti

s1nceri7y

kornava

ShuiHuo

ikunya

Ahmad45123

bedwardly-down

dcaveiro

hexclover

2jaeyeol

thackeraaron

aaronxn

xUser5000

iamabhi222

Aksh-Konda

alanfortlink

AverageUser2

afischer211

a13xk

apankratov

teterkin

avanderberg

serenitatis

lex111

Alkindi42

Jumanjii

AlphaJack

Lord-Aman

richtwin567

ajilderda

adrynov

andrewperry

tekdel

anshuman9999

rasklaad

Technik-J

Shaxine

antonio-ramadas

heyapoorva

assimd

Atrate

Beowulf2

bimlas

brenobaptista

brttbndr

carlbordum

carlosedp

chaifeng

charles-e

cyy5358

Chillu1

Techwolf12

cloudtrends

idcristi

damienmascre

daniellandau

danil-tolkachev

darshani28

daukadolt

NeverMendel

dervist

diego-betto

erdody

domgoodwin

b4mboo

donbowman

sirnacnud

dflock

drobilica

educbraga

eduardokimmel

VodeniZeko

ei-ke

einverne

eodeluga

fathyar

fer22f

fpindado

FleischKarussel

talkdirty

gmaubach

gmag11

Jackymancs4

Glandos

vibraniumdev

gusbemacbe

HOLLYwyh

Fvbor

bennetthanna

harshitkathuria

Vistaus

ianjs

iahmedbacha

IrvinDominin

ishammahajan

ffadilaputra

JRaiden16

jacobherrington

jamesadjinwa

jrwrigh

jaredcrowe

volatilevar

innkuika

JoelRSimpson

joeltaylor

exic

JonathanPlasse

joesfer

joybinchen

kaustubhsh

y-usuzumi

xuhcc

kirtanprht

k0ur0x

kklas

xmlangel

troilus

lboullo0

dbinary

marc-bouvier

mvonmaltitz

mlkood

plextoriano

Marmo

mcejp

freaktechnik

martinkorelic

Petemir

matsair

mgroth0

silentmatt

maxs-test

MichBoi

MichipX

MrTraduttore

sanjarcode

Mustafa-ALD

NJannasch

zomglings

Frichetten

nicolas-suzuki

Ouvill

shorty2380

dist3r

rakleed

idle-code

bobchao

Diadlo

pranavmodx

R3dError

rajprakash00

rahil1304

rasulkireev

reinhart1010

Retew

ambrt

Derkades

fourstepper

rodgco

Ronnie76er

roryokane

ruzaq

szokesandor

SamuelBlickle

livingc0l0ur

bronson

semperor

shawnaxsom

SFoskitt

kcrt

xissy

tams

Tekki

ThatcherC

TheoDutch

tbroadley

Kriechi

tkilaker

Tim-Erwin

tcyrus

tobias-grasse

strobeltobias

kostegit

tbergeron

Ullas-Aithal

MyTheValentinus

vassudanagunta

vijayjoshi16

max-keviv

vandreykiv

WisdomCode

xsak

ymitsos

abolishallprivateproperty

aerotog

albertopasqualetto

asrient

bestlibre

boring10

cadolphs

colorchestra

cybertramp

dartero

delta-emil

doc75

dsp77

ebayer

elsiehupp

espinosa

exponentactivity

exprez135

fab4x

fabianski7

rasperepodvipodvert

gasolin

githubaccount073

hms5232

hydrandt

iamtalwinder

jabdoa2

jduar

jibedoubleve

johanvanheusden

jtagcat

konhi

krzysiekwie

lighthousebulb

luzpaz

majsterkovic

mak2002

nmiquan

nullpointer666

oscaretu

oskarsh

osso73

over-soul

pensierocrea

pomeloy

rhtenhove

rikanotank1

rxliuli

simonsan

stellarpower

suixinio

sumomo-99

xtatsux

taw00

tcassaert

victante

Voltinus

xcffl

yourcontact

zaoyifan

zawnk

zen-quo

zozolina123

xcession

paventyang

jackytsu

zhangmx
Comments
  • Desktop: Joplin Freezing During Syncing and Decrypting On Linux Kernel 5.5+

    Desktop: Joplin Freezing During Syncing and Decrypting On Linux Kernel 5.5+

    I just started using Joplin recently, and since first using it's been locking up/freezing/unresponsive. It seems to be getting stuck in a syncing loop. It will try to sync, and something is not allowing sync to stop/cancel. Even if I manually click on cancel when it's syncing, it just says "cancelling" and stays spinning but won't stop.

    At this point, when I click on any notebooks/notes, nothing happens. The notes don't load, the screen doesn't refresh to the note I click on. The only thing that works at this point is I can click and open menus/settings.

    I then have to kill the app and relaunch it.

    Is anyone else having issues on Linux with Joplin being buggy and freezing?? I'd really like to resolve this so I can use Joplin! I'm not sure if this is something on my system, or if others on Linux are having this issue?? It's pretty much unusable for me at this point! The bug also happens even if I don't click on Sync. I will come back to Joplin to make a new note, and it will be in this stuck sync state on it's own without me doing anything.

    It is a major bug on my system. It happens frequently and I can reproduce it easily.

    Environment

    Joplin version: Joplin 1.0.179 (prod, linux); Sync Version: 1; Revision: b4e325d (master) Platform: Arch Linux OS specifcs:

    Steps To Reproduce

    1. I can launch Joplin, and to reproduce, I simply click on Sync in the lower left corner a few times, and it gets stuck in the sync loop error/bug.
    2. It happens every time. I have to kill/relaunch at this point.

    Describe what you expected to happen:

    Logfile

    Console shows normal activity before the problem when clicking on a different note: webview_domReady Connect {props: {…}, context: {…}, refs: {…}, updater: {…}, version:

    Then when I initiate the bug by clicking on sync several times, nothing shows up in console whatsoever. It only has the last reported event from before the bug.

    Here is my updated log.txt file: https://pastebin.com/CDdhuL25

    Whenever I initially launch joplin in debug, I get these messages in the console (in case they’re important) console.log file : https://pastebin.com/zzjdguTX

    bug 
    opened by dimyself 308
  • Android filesystem sync is broken after 2.6.3 update

    Android filesystem sync is broken after 2.6.3 update


    Update 20 Dec 2021: There's currently no solution to this problem. In the meantime you may downgrade to v2.5 by downloading the APK from the official repository:

    https://github.com/laurent22/joplin-android/releases/download/android-v2.5.5/joplin-v2.5.5.apk


    I use filesystem synchronization with path like /storage/emulated/0/Sync/Data/Joplin

    After 2.6.3 update i get this error: Screenshot_20211124-094935

    Could it be related to app permissions? I can choose only 'Allow access to media only' option in permission manager. Screenshot_20211124-095131

    bug android sync backlog 
    opened by shaymagsumov 136
  • Desktop: Joplin Freezing During Syncing and Decrypting On Linux Kernel 5.5+ (New Issue Tracker Report With Possible Fixes)

    Desktop: Joplin Freezing During Syncing and Decrypting On Linux Kernel 5.5+ (New Issue Tracker Report With Possible Fixes)

    Please Read To Fix This Issue

    As soon as you are able, Upgrade to Kernel 5.6.13. Joplin will not work properly otherwise due to all of the information listed below.

    This issue has been resolved but I’m leaving it open for the time being only so users that need it still can find it while Kernel Upgrades roll out still.

    Bug Report Proper Starts Here

    Alright, so this is a continuation of #2518. The bug report became horribly bloated and unmanageable. This is an attempt to fix that.

    Who Does This Bug Affect

    Users on various different Linux distributions that all are running Linux Kernel 5.5 or 5.6 and their updates.

    To find out what Kernel you are running and get other useful distribution information, please run in your terminal uname -a and copy the response here.

    Arch Linux Fedora 31+ Solus Clear Linux Void Linux Debian Testing

    What Happens With This Bug

    Joplin's Sidebar, Notebook panel, and Notes freeze during various syncing tasks.

    How to Reproduce This Bug

    Perform normal tasks with Joplin and allow it to start syncing. It will eventually freeze during Syncing and / or Decrypting of notes. The best way to manually trigger this bug, just make some edits to a note and then start clicking the Synchronize button a few times until you can no longer interact with the UI.

    Why Does This Bug Happen

    The Linux Kernel maintainers pushed a commit that changed how asynchronous input / output worked, leading to Electron and a small handful other frameworks having this issue. It doesn't look like the issue will be fixed upstream anytime soon.

    What Can Be Done To Solve The Issue

    • Downgrade your Linux Kernel release to 5.4 or lower. Many Linux distributions offer a linux-lts kernel package.
    • If this is not a viable solution due to hardware or software needs,
    1. Click Tools=>Options
    2. Go to Web-clipper tab.
    3. Enable and Disable the plugin.
    4. Click Apply and then Back
    5. Synchronization should start back up. If not, repeat steps 1-4 until it begins again. :smile:
    6. NOTE: Firefox isn't actually necessary for this to work. This is an in app only fix credited to @m-angelov

    About My System

    [I] justa@lame-ass-host~ []> uname -a Linux lame-ass-host 5.6.4-artix1-1 #1 SMP PREEMPT Fri, 17 Apr 2020 14:57:51 +0000 x86_64 GNU/Linux

    My tests are also primarily using Nextcloud syncing target. I do have a davfs mount point setup, but due to the age of my system and possibly my filesystem type (btrfs), it is extremely slow and not at all ideal for FIlesystem syncing.

    When Did The Bug Show Up First

    Late January 25th Early 26th - credit @taw00

    Current Tests

    1. Deadlock Tests - set various Max Connection Settings under Tools=>Options=>Synchronization=>Show Advanced Settings
    1. Daniel Souza's Code Fix Test - comment out / run if not Linux platform specific parts of synchronizer.js to see if that solves the issue
    1. Does Encryption matter for triggering this bug? - credits to @figue

    2. 5.7-RC5 test - waiting on confirmation from other users.

    3. Is bug affected by usage of Wayland?

    4. 5.6.13 with Epoll Fixes test - Switching to FIlesystem sync with a locally mounted Nextcloud instance solved my issue here. 5.6.13 seems to solve the core issues.

    bug desktop linux high 
    opened by bedwardly-down 104
  • Synchronization does not support proxy

    Synchronization does not support proxy

    Operating system

    • [X ] Windows 7
    • [X ] Windows 10

    Application

    • [X ] Desktop

    Error

    The desktop-app does not support proxy or it fails to use system-wide proxy settings. When the synchronise-button is pressed, nothing seem to happen. There is no visible error message. The error, ECONNREFUSED, is however logged properly into the log file.

    enhancement backlog 
    opened by gibboni 90
  • iOS and Dropbox synchronisation not working

    iOS and Dropbox synchronisation not working

    Environment

    Joplin version: 12.7.1 (iOS App) Platform: iOS OS specifics: iOS 15.4.1

    Steps to reproduce

    1. Install the app
    2. Configuration > Sync target = Dropbox
    3. Link with Dropbox account
    4. Synchronise (ISSUE: No errors but notes are not synced. Log message "Network request failed")

    Describe what you expected to happen

    PC app works just fine. Only happens in iOS app.

    Logfile

    20220407_041606346_iOS

    bug mobile iOS stale 
    opened by akhiar 89
  • Joplin-desktop crashes blank white screen after open. Nothing works inside window....

    Joplin-desktop crashes blank white screen after open. Nothing works inside window....

    Environment

    Joplin version: 1.0.233 (prod,linux) Platform: Arch 5.7.12-arch1-1 x86_64 OS specifics:

    Steps to reproduce

    1. Sometime the app will launch and sometimes it won't. This happens whether I launch it either from CLI or the menu icon. joplin in CLI seems to launch fine.
    2. When it DOES launch, the entire window is white. The only thing that shows up is the menu toolbar. But none of the menus work/function. They do nothing. I have to kill the window using xkill
    3. I did find that if I open up either the CLI joplin-desktop or the menu joplin (to initiate the app)...THEN if I launch the app using the other method, it will launch and seems to work fine.

    Describe what you expected to happen

    I was one of the ones that initially submitted the Linux freezing bug https://github.com/laurent22/joplin/issues/3114... I don't know why I'm having so many problems with this app???

    I just put it off and decided to try joplin again today after all this time since the above closed bug, and again I'm having this issue. I don't know if it could possibly be related to issue 3114 or something else?

    I looked at 3114 again and it was closed and said to fix, you just turn off web-clipper? My web-clipper was disabled by default already...

    Logfile

    I don't really see anything in the console when the app does open..

    Here's a tailed log of the failed app opening. In this log, the app failed to open all together, and I tailed the /home/fred/.config/joplin-desktop/log.txt and this was all the output: https://pastebin.com/V6ksbAMn

    Is this the debug log?

    Thank you!

    bug stale 
    opened by dimyself 84
  • Appimage cant be run due to permissions

    Appimage cant be run due to permissions

    Hi

    The Joplin-1.0.177.AppImage version seems to be having some issue with permissions. Since this is not a proper app it is not possible fix the permission prior to launching and running with sudo also gives Running as root without --no-sandbox is not supported. See https://crbug.com/638180

    I am running it on Debian bullseye/sid

    [371637:1230/125237.503965:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_Joplinj7cZY9/chrome-sandbox is owned by root and has mode 4755
    
    
    desktop upstream linux 
    opened by gerroon 84
  • [Feature Request] run multiple instances of Joplin

    [Feature Request] run multiple instances of Joplin

    Applications

    • Desktop
    • Mobile
    • Terminal

    Summary:

    Scope instance to the profile, so multiple apps could run, each with different profiles.

    Specification

    Having the same app supports or load multiple profiles cannot be done without a massive refactoring, so it's unlikely to happen.

    Instead what we can do is provide a way to switch profiles from the app:

    • The user clicks on a menu and select change profile
    • The list of available profiles is displayed
    • User selects on of the profile
    • The app closes and re-open and load the selected profile

    Changing the structure of the profile directory

    Currently, the profile is organised like this:

    • ~/.config/joplin-desktop/
      • resources/
      • database.sqlite

    If we want to support multiple profiles, the config directory should be changed like so (in a way similar to Firefox or Thunderbird multi-profile support):

    • ~/.config/joplin-desktop/
      • PROFILE_ID_1/
      • PROFILE_ID_2/
      • etc.
      • profiles.ini

    The PROFILE_ID_x directories will be named with a UUID and contain the same profile as above with the "resources" and "database.sqlite" file.

    profile.ini will tell what profiles are available. It's content will be like this (same as Firefox):

    [Profile1]
    Name=Personal
    IsRelative=1
    Path=cdb4ar19.Personal
    
    [Profile0]
    Name=default
    IsRelative=1
    Path=Profiles/ts6eud8o.default
    Default=1
    
    [Profile2]
    Name=Work
    IsRelative=1
    Path=Profiles/ts9akd8o.work
    
    [General]
    StartWithLastProfile=1
    Version=1
    

    Swiching profiles

    To switch profile, save a value to Setting table called "next_profile_id", then close and restart the app. When the app starts it loads "profile.ini", then checks the value of "next_profile_id", and uses that to choose and load the right profile.

    Locking per profile

    Each app needs to make sure that a given profile can only be open by one application, so there should be form of lock. If a profile is locked, it means it's already opened by another application, so the current application should close.

    Locking should be implemented in such a way that if an app crashes, the lock is released. So probably some form of in-memory lock.

    Desktop implementation

    To restart the app use the built-in Electron function: https://electronjs.org/docs/api/app#apprelaunchoptions

    ### Mobile implementation

    On mobile, give a try to this package to restart the app: https://www.npmjs.com/package/react-native-restart

    See also

    https://discourse.joplinapp.org/t/can-i-run-a-second-instance-of-joplin/110

    enhancement spec 
    opened by tessus 73
  • WYSIWYG to-do list

    WYSIWYG to-do list

    09 March 2020 by @laurent22: The next version of Joplin will include an experimental WYSIWYG so I'm using this post to list the work that still needs to be done on it:

    • [x] Add back support for external editing
    • [x] Allow creating code blocks for Katex, Mermaid, Fountain, and for actual source code.
    • [x] Allow creating checkboxes
    • [x] Improve handling of non-standard Markdown plugins
    • [x] Add "Insert date time" button
    • [x] Add Tag button
    • [x] Display tags below title
    • [x] Add "Alarm" button
    • [x] Add "Note Properties" button
    • [x] Check that when clicking "Back" from note history, it goes back to WYSIWYG editor
    • [x] Add "Content Properties" button
    • [x] Clicking a link (internal or external) does not do anything, you have to right-click to get a menu "Link / Remove Link / Open Link" and "Open Link" does not work.
    • [x] When creating link, remove option to set the target to "current window" or "new window"
    • [x] Handle pasting note links (which are in Markdown) in editor
    • [x] Fix printing
      • [x] Check Export to PDF
    • [x] Tables
      • [x] Table lines are dashed not solid.
      • [x] Toolbar button for creating tables
      • [x] Context menu to add / remove columns & rows
      • [x] Tables have "draggable corners" - remove it
    • [x] Add support for userstyle.css

    If you find any issue or bug please post here.


    22 Jan 2018 by @poVoq: Original post:

    Would be awesome if synergies with this great new WYSIWYG markdown editor could be utilized: https://github.com/nhnent/tui.editor

    enhancement high 
    opened by poVoq 71
  • All: Switch to aws-sdk-js-v3 resolves #4810 & resolves #4610

    All: Switch to aws-sdk-js-v3 resolves #4810 & resolves #4610

    This change resolves #4810 and resolves #4610 🎉

    I wasn't able to get the iOS specific fix to work and my prior MR left in the large aws-sdk package which this change can now safely remove.

    I've tested via my iOS simulator with a bucket that would exhibit the problem and have never hit an error uploading to my test buckets after this change. I think the core of the problem was something to do with xml2js which v3 replaces with fast-xml-parser. This still needs testing on Linux (do you target any specific distros for testing?) and android/mac/windows as well.

    You can see the changes are pretty straightforward, but I do expect there could be gremins with electron vs. react-native but they should be pretty obvious once tested. (I can test Linux/Mac/iOS but not Android/Windows).

    sync 
    opened by leematos 67
  • Desktop: #5867 Add support for

    Desktop: #5867 Add support for "categories" manifest field

    • Issue addressed #5867

    Overview

    Finding the right plugin can be difficult as there are more than 80 plugins now. For implementing displaying plugins by category, we can divide this into 2 subtasks.

    1. We will first need to allow plugin devs to set the plugins' categories from a pre-defined set of categories as discussed in the above issue.
    2. Add ability to filter plugins by category in Joplin app.

    This PR will be focusing on 1.

    Solution

    To achieve this, I have done the following:

    • Added a categories field in 'Plugin Manifest' interface as well as manifest.json template. In my opinion this field should not be required because currently Joplin is fetching Manifest.json from 'joplin/plugins' repo and category field is not present in any manifest.
    • Added function in webpack.config.js(generator-joplin) to validate categories given by plugin dev.
    • I have taken the categories from this issue disscused in this Issue #5867. I have excluded some categories as some can go under another umbrella category. For ex: email (excluded) -> integration.
      • Categories: "administration", "developer", "editor", "export", "import", "integration", "interface", "linking", "markdown enhancements", "note management", "rendering", "tagging", "theme", "todo", "search", "other"
      • Currently, I have limited the number of categories a plugin can have to 3 as I could not find a plugin that needed more than 3 categories to describe general function of the plugin but I am open to change.
      • I am ok with changing the category names if you want.

    Testing

    I have manually tested the webpack with the following cases:

    • With repeated categories
    • with invalid category
    • with "" as a category
    • category with accented character
    desktop 
    opened by mak2002 60
  • Update typescript-eslint monorepo to v5.48.0

    Update typescript-eslint monorepo to v5.48.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | 5.47.1 -> 5.48.0 | age | adoption | passing | confidence | | @typescript-eslint/parser | 5.47.1 -> 5.48.0 | age | adoption | passing | confidence |


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.48.0

    Compare Source

    Features
    • eslint-plugin: specify which method is unbound and added test case (#​6281) (cf3ffdd)

    5.47.1 (2022-12-26)

    Bug Fixes
    • ast-spec: correct some incorrect ast types (#​6257) (0f3f645)
    • eslint-plugin: [member-ordering] correctly invert optionalityOrder (#​6256) (ccd45d4)
    typescript-eslint/typescript-eslint (@​typescript-eslint/parser)

    v5.48.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/parser

    5.47.1 (2022-12-26)

    Note: Version bump only for package @​typescript-eslint/parser


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    automerge 
    opened by renovate[bot] 0
  • Update dependency eslint-config-prettier to v8.6.0

    Update dependency eslint-config-prettier to v8.6.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | eslint-config-prettier | 8.5.0 -> 8.6.0 | age | adoption | passing | confidence |


    Release Notes

    prettier/eslint-config-prettier

    v8.6.0

    Compare Source

    • Added: [vue/multiline-ternary]. Thanks to @​xcatliu!

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Plugins(draw.io,plantuml2,kity-mindmap) do not work on Mac

    Plugins(draw.io,plantuml2,kity-mindmap) do not work on Mac

    I am asking a support for using the plugins on my Joplin. I am not sure it is a bug or whatever.

    What is the problem?

    After downloading and turning on the plugins(draw.io, plantuml2, kity-mindmap),they do not work.

    As the pics shows:

    • There is no a draw.io button in the Tools
    • The plantuml syntax can not be rendered

    Other plugins such as Day Review and History Panel, however, work well.

    The Environment Information

    Version: Joplin 2.9.17 Platform: Mac OS

    The Pics Of The Problem

    WechatIMG137 WechatIMG138

    bug 
    opened by linckerr 0
  • Onedrive synchronization fails since January 2023

    Onedrive synchronization fails since January 2023

    Since January 2023 it seems that synchronization with onedrive fails (on Linux and Android). I get the following error message in the log

    2023-01-02 09:20:24: "Running background sync on timer..."
    2023-01-02 09:20:24: "Preparing scheduled sync"
    2023-01-02 09:20:24: "Could not run background sync:"
    2023-01-02 09:20:24: "Error
    Code: UnknownError
    Header: {"_headers":{"transfer-encoding":["chunked"],"content-type":["application/json"],"content-encoding":["gzip"],"vary":["Accept-Encoding"],"strict-transport-security":["max-age=31536000"],"request-id":["66c8ae7c-caf3-4f81-9819-e1f9967f5f3d"],"client-request-id":["66c8ae7c-caf3-4f81-9819-e1f9967f5f3d"],"x-ms-ags-diagnostic":["{\"ServerInfo\":{\"DataCenter\":\"Germany West Central\",\"Slice\":\"E\",\"Ring\":\"5\",\"ScaleUnit\":\"000\",\"RoleInstance\":\"FR1PEPF000007A3\"}}"],"date":["Mon, 02 Jan 2023 08:20:24 GMT"],"connection":["close"]}}
    Request: GET https://graph.microsoft.com/v1.0/me/drives/899b2a3d7e2ec28e/special/approot null null {"headers":{"Authorization":"bearer Ew ... DELIBERATELY OMITTED ... X1a/+V
    Error
        at OneDriveApi.oneDriveErrorResponseToError (/tmp/.mount_JoplinBHOUiQ/resources/app.asar/node_modules/@joplin/lib/onedrive-api.js:125:28)
        at OneDriveApi.<anonymous> (/tmp/.mount_JoplinBHOUiQ/resources/app.asar/node_modules/@joplin/lib/onedrive-api.js:307:40)
        at Generator.next (<anonymous>)
        at fulfilled (/tmp/.mount_JoplinBHOUiQ/resources/app.asar/node_modules/@joplin/lib/onedrive-api.js:5:58)
        at processTicksAndRejections (internal/process/task_queues.js:95:5)"
    2023-01-02 09:25:22: RevisionService: "maintenance: Starting..."
    2023-01-02 09:25:22: RevisionService: "maintenance: Service is enabled"
    2023-01-02 09:25:22: RevisionService: "collectRevisions: Created revisions for 0 notes"
    2023-01-02 09:25:22: RevisionService: "maintenance: Done in 104ms"
    

    This error shows up since today. I checked my logs and everything was working fine until today. The last log entry where synchronization seemed to work was on December 28th, 2022. I did not use Joplin since then and when starting it up today morning this error shows up.

    Any ideas what went wrong here?

    bug upstream 
    opened by eugenwintersberger 9
  • Mobile: Confirm closing settings with unsaved changes

    Mobile: Confirm closing settings with unsaved changes

    Summary

    This should help address confusion similar to that discussed on the forum.

    This won't work correctly until #7503 is fixed. Thus, it might be reasonable to close this pull request until #7503 is resolved.

    Testing plan

    1. Open settings
    2. Press the back arrow without changing settings (no confirm dialog should appear).
    3. Open settings again
    4. Change a setting
    5. Press the back arrow without clicking "save"
    6. Click "discard changes" and confirm that changes were discarded.
    7. Repeat steps 4 and 5.
    8. Click "save changes" and confirm that changes were saved.
    9. Open settings again
    10. Change a setting and click "save"
    11. Close settings. The confirm dialog should not be visible.
    opened by personalizedrefrigerator 0
  • Text previously highlighted from searching in note remains highlighted

    Text previously highlighted from searching in note remains highlighted

    Environment

    Joplin version: 2.10.2, 2.10.3 Platform: macOS OS specifics: 13.1

    Steps to reproduce

    1. Open a note in markdown (not WYSIWYG) editor with the layout set to include the editor
    2. Control/command + F to search text
    3. Search for something specific enough as to have only one result in the note (i.e., "hello")
    4. Edit that one result in the note so that it no longer matches the input search (i.e., to "he.llo")

    Rather than there being no highlighted text (since there are no longer any strings in the note that match the search), highlighted text appears as if the input search has been trimmed to a few characters (i.e., from "hello" to "he"). This highlighted text then remains until restart, unaffected by clearing the search field or by closing search, and even applies to other notes upon switching. Searching anew only adds more highlighted text without erasing the previous (see second image).

    Screenshot 2023-01-01 at 02 31 29 Screenshot 2023-01-01 at 02 31 36 bug 
    opened by annoyedhumanoid 0
Releases(v2.10.3)
PngNote is a free, open-source, handwriting note-taking app based on BOOX SDK.

PngNote is a free, open-source, handwriting note-taking app based on BOOX SDK. Use BOOX SDK: Leverage raw-rendering feature, similar stylus lag to the

null 34 Nov 11, 2022
A rewrite of the popular project GitUp that works in Linux, Mac, and Windows.

GitDown This is a rewrite from the ground up of the popular GitUp library available on Mac. It is built using Kotlin and Compose Desktop from Jetbrain

Cody Mikol 20 Dec 16, 2022
Note-Taking-App - Android application which can be used to take notes

Android application which can be used to take notes.The application uses Recycle

Utkarsh Panwar 0 Jan 30, 2022
Note taking application using Kotlin and Firebase Realtime Database.

Notes-Firebase-Kotlin Note taking application using Kotlin and Firebase Realtime Database. Features:- 1.Signup With Google 2.Create Note 3.Update Note

Shivam Kumar 4 Nov 9, 2022
Easy-Note - Easy Note Application will help user to add and update their important notes

Easy-Note ??️ Easy Note App helps you to create your notes. You can ?? edit and

Ade Amit 0 Jan 30, 2022
CRUD Note taking app built for Android with Kotlin and XML.

Android Note Keeping App An offline android app that can be used to write notes on the fly to be retrieved later. Libraries Room Database. Lifecycle C

Moyosoreoluwa 3 Sep 19, 2022
Note-taking Android App

NOTEDGE Note-taking Android app Website » Download » Tech Stack Appcompat Material Design Room RecyclerView RecyclerView Animators Lifecycle Rounded I

Borichevskiy Kirill 22 Dec 25, 2022
NoteApp - A note taking app illustrating Android best practices with Jetpack Compose.

NoteApp - A note taking app illustrating Android best practices with Jetpack Compose.

Ömer Karaca 23 Dec 20, 2022
Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack

Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel,Paging3).

Ranbir Singh 7 Apr 25, 2022
KVMapper: A Key-Value Mapper app for MacOS, created with Kotlin and Compose Desktop

KVMapper is an application to convert key-value pairs from one format to another. About This app was purely written in Kotlin and compiled fo

Sebastian Neubauer 8 Nov 15, 2022
Based on Android + NodeMCU platform to achieve object detection and tracking, AI capabilities come from Google MLKit.

Based on Android + NodeMCU platform to achieve object detection and tracking, AI capabilities come from Google MLKit.

null 1 Apr 4, 2022
How to integrate classic App Shortcuts with Google Assistant through the new Capabilities API

Assistant Shortcuts (App Actions) En este ejemplo, revisaremos el uso de los clásicos Shortcuts de Android repotenciados con Google Assistant, haciend

Carlo Huamán 3 Jun 20, 2021
Termux - an Android terminal application and Linux environment

Termux application Termux is an Android terminal application and Linux environment. Note that this repository is for the app itself (the user interfac

Termux 18.4k Jan 3, 2023
CCDroidX is to Android what CCMenu is to Mac and what CCTray is to Windows

CCDroidX CCDroidX is to Android what CCMenu is to Mac and what CCTray is to Windows. CCDroidX is free, as in freedom, build monitoring & alert tool. I

Aung Kyaw Paing 10 Oct 12, 2022
An android app to browse KDE Store and other Linux Desktop Environment stores of Pling

A free and open source android application for browsing KDE Store and other Linux Desktop Environment's Stores in Pling. Couldn't check it in different devices so there could be some bugs. Bug Report and Feedbacks are highly appreciated.

null 14 Dec 27, 2022
Linux GUI for Kuri's userspace tablet drivers. Supports non-wacom (XP-Pen, Huion, Gaomon) graphics tablets and pen displays

Kuri's Userspace tablet driver utility (GUI) This is a new GUI implementation for the userland driver I've written here: https://github.com/kurikaesu/

Aren Villanueva 12 Jan 4, 2023
Andorid app which provides a bunch of useful Linux commands.

Linux Command Library for Android The app currently has 3203 manual pages, 1351 one-line scripts and a bunch of general terminal tips. It works 100% o

Simon Schubert 285 Jan 3, 2023
Noted is a Clean Architectured android application for taking personal notes

Noted is an android application for taking notes. The user can create, edit, review, and delete notes. They also can specify a category for each note.

null 0 Apr 25, 2022
🌄 Photo editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Baron Ha. 242 Dec 28, 2022