Coding Phase - Week 2 Report

What has been done

  • Updated plugin’s manifest to include private _built_in field
  • Updated the PR according to feedback
  • Tested setting initial settings for default plugins

Plans for next week

  • Implement initial settings system for default plugins
  • Add tests in the PR
  • Discuss packaging of default plugins


:warning: Please Backup your profile and all the data before using just in case.

It's not totally finished, but wanted to gather some feedback.

AppImage Link

Currently, I have bundled 'Simple Backup' and 'Rich Markdown' as default plugins. And initial backup path has been set to profileDir/testing-backup. For example, in my case it's, /home/username/.config/joplin-desktop/

Ideally, if this directory doesn't exist, it should create one, but I was getting Error: EACCES: permission denied, mkdir error, but it seems that problem exists on my system.

After successfully opening the app, do try out plugins' features to test it out. For example, try putting ==highlight== in the markdown editor.

Options to use AppImage

1. Normal

  • Open it normally, then it will use .config/joplin-desktop directory for profile.
  • But if you already have these plugins installed, it may be difficult to tell if AppImage is working or not,

2. Using --profile (Recommended)

  • Open it using --profile. Example ./Joplin-2.8.8.AppImage --profile /path/to/custom/profile/folder

I was not sure about AppImage's 'special directories feature' as Daeraxa suggested it may become a bit messy, so I didn't include it.

Thanks to @Daeraxa for providing all this information.

Feel free to provide any feedback or suggestion.


Hey, Can anyone please confirm after starting above AppImage if they are getting the following error or not?
Error: EACCES: permission denied, mkdir.

Error can be found by opening Help > Toggle Development Tools in the menu.

Yup, errors on an Ubuntu VM. Tried running it as root with --no-sandbox and it just freaked out instead.

1 Like

Thanks for checking. Can you please post the errors here?

Ohhh, so starting as root broke Joplin but did allow the app to create a folder, problem is it is creating it at /testing-backup and not within the profile dir within the user home, hence why it needs root. I couldn't work out why I wasn't seeing the original error.

-1656426942577.log (11.8 KB)

(and no, it didn't try to write it in /root/.config/joplin-desktop either)

1 Like

So I am assuming the app ran successfully without the root.

Strange, it creates it at /testing-backup. Because in code, we are creating folder withing profile dir itself. Need to look it up.

const backupDir = `${Setting.value('profileDir')}/testing-backup`;
await shim.fsDriver().mkdir(backupDir);`

App runs as normal without root, yes, the backup plugin starts asking you to set the backup dir.

1 Like

After looking at the code, I think the issue here is that when running mkdir we don't have profileDir set, so it is returning empty string here. And hence we end up creating /testing-backup.

I also looked at the 'Simple backup plugin' code and it seems that we can also provide relative path, and internally it will attach it to profile dir.

Though, we still need to create a folder for it in order to avoid the pop-up.

Edit: I got it working and will update the AppImage soon.

1 Like

Here's the updated AppImage Link. Now it should create the backup dir if it doesn't exist and set it in plugins settings.

You mean the app creates the backup dir? But shouldn't that be the plugin that does this? (And if it doesn't maybe we can create a pull request to address this)

Yes. The app creates the backup dir. Ideally, the plugin should create it, but currently it doesn't. I thought, as you said on discord, we wanted to configure the plugin without having to modify it. Maybe I took it the wrong way.

But if you want, I can make PR for this.

To me that would mean that Joplin could set the path in the plugin from Joplin or configure other settings it already has but the ability to create a dir from a path that doesn't exist is something the plugin can't do. Therefore if it is a requirement it should be part of the plugin's code rather than Joplin's.


I guess the current plugin logic is to select an existing directory, so the plugin doesn't attempt to create it. It still feels like it should create it, for example if the dir gets deleted afterwards.

But in any case, any such logic should be part of the plugin, which means creating a PR there. The only thing we should set on app side are the plugin settings.

1 Like

Thanks for clarifying. I will soon make a PR there.

1 Like