How to use Joplin desktop app on FreeBSD


This is a quick note on how I build and use the latest Joplin desktop app on FreeBSD.

For my initial exploration of Joplin on FreeBSD, please refer to the previous post.

Target Version

The current target version of this article is Joplin Electron release v1.0.185 (Feb 2020). Joplin Version

Building Joplin

I take the following steps to build Joplin desktop on my FreeBSD 12.1-RELEASE system (with XFCE4 desktop).

  1. Install dependencies such as Electron and Nodejs.
    The latest Joplin requires Electron7 but it’s not yet officially available in the FreeBSD ports tree.
    So I downloaded and installed the latest Electron7 package from the following pre-official GitHub repository.
    https://github.com/tagattie/FreeBSD-Electron/releases

    cd ~/Downloads
    fetch https://github.com/tagattie/FreeBSD-Electron/releases/download/v7.1.11/electron7-7.1.11-freebsd12-amd64.txz
    sudo pkg install electron7-7.1.11-freebsd12-amd64.txz
    

    Then I created symbolic links for compatibility.

    cd /usr/local/bin
    sudo ln -s electron7 electron
    cd /usr/local/share
    sudo ln -s electron7 electron
    

    I had continued to use electron6 for a while even after Joplin switched to electron7, but it looked like the app ceased working correctly on v1.0.179 or later versions so I finally moved to electron7.

    Other dependencies can be installed from the FreeBSD’s official packages.

    sudo pkg install node10 npm-node10 python vips
    
  2. Clone my forked version of Joplin and switch to electron_freebsd branch, which includes some modifications for FreeBSD.

    cd ~/tmp/or/somewhere
    git clone https://github.com/genneko/joplin.git
    cd joplin
    git checkout electron_freebsd
    
  3. Build the desktop (Electron) application by mostly following the original build instruction.

    npm install
    cd ElectronClient
    npm run build
    

    I use npm run build instead of npm run start because it looks like the latter doesn’t expect I’m using the globally installed electron.

  4. Now you can run the app by running the following command

    electron .
    

    or by running a script included in my fork

    ./joplin-desktop
    

Workaround for LSEP showing up in CJK input methods

NOTE: This is not FreeBSD-specific. But anyway, I wrote it down here for future reference.

This issue was reported several times as below.

As pointed out in the issue #1500, it looks like unfixable as it might be an Ace Editor issue.
But for users who have to use some “input method” for entering text, it is really annoying.

Joplin LSEP

Fortunately, this issue can be worked around by using a special font which has only a single zero-width glyph for the weird character (U+2028 Line Separator).

References

Revision History


  1. Before the Joplin-wide stylesheet was implemented in v1.0.176, I had been using a small patch to make “Editor font family” accept multiple fonts separated by comma, just for this purpose. ↩︎

  2. The menu creates and edits ~/.config/joplin-desktop/userchrome.css. ↩︎

  3. As NoLSEP font is used only for this specific purpose, I didn’t want to install it in the system-wide directory such as /usr/local/share/fonts/TTF. So I put it under my home directory and defined @font-face rule to use it. ↩︎