有馬総一郎のブログ

(彼氏の事情)

2022年11月20日 23:19:31 JST - 7 minute read - Linux

今更ながらJoplinなるMarkdownエディタを試す(デスクトップアプリ編)

もう一月以上前になるが Obsidianノート術: ライフログや個人のノートはMarkdownでローカルに保存 | 増井 敏克というKindle本を読んだ。中々面白かった。いつのまにか Markdownエディタも色々なものが出ていて、進化しているんだな、と感じた。

で今更ながらMarkdownエディタである Joplinの存在をしったので試してみることにした1

デスクトップアプリをインストール

Joplin Desktop Applicationは、最近の流行りかAppImageで配布されている。

cd ~/AppImage
ln -s ~/AppImage/Joplin-2.8.8.AppImage ~/.local/bin/joplinapp-desktop
./Joplin-2.8.8.AppImage  --appimage-extract
cp squashfs-root/@joplinapp-desktop.desktop ~/.local/share/applications/joplinapp-desktop.desktop
cp squashfs-root/usr/share/icons/hicolor/256x256/apps/@joplinapp-desktop.png ~/.local/share/icons/hicolor/256x256/apps/joplinapp-desktop.png
cp squashfs-root/usr/share/icons/hicolor/128x128/apps/@joplinapp-desktop.png ~/.local/share/icons/hicolor/128x128/apps/joplinapp-desktop.png
cp squashfs-root/usr/share/icons/hicolor/48x48/apps/@joplinapp-desktop.png ~/.local/share/icons/hicolor/48x48/apps/joplinapp-desktop.png
cp squashfs-root/usr/share/icons/hicolor/32x32/apps/@joplinapp-desktop.png ~/.local/share/icons/hicolor/32x32/apps/joplinapp-desktop.png
cp squashfs-root/usr/share/icons/hicolor/16x16/apps/@joplinapp-desktop.png ~/.local/share/icons/hicolor/16x16/apps/joplinapp-desktop.png
nvim ~/.local/share/applications/joplinapp-desktop.desktop
sudo update-desktop-database
[Desktop Entry]
Name=Joplin
- Exec=AppRun --no-sandbox %U
+ Exec=/home/arimasou16/.local/bin/joplinapp-desktop --no-sandbox %U
Terminal=false
Type=Application
- Icon=joplin
+ Icon=/home/arimasou16/.local/share/icons/hicolor/256x256/apps/joplinapp-desktop.png
StartupWMClass=Joplin
X-AppImage-Version=2.8.8
MimeType=x-scheme-handler/joplin;
Comment=Joplin for Desktop
Categories=Office;

ただ、こんな手間をかけずとも Tool to Integrate AppImages with Ubuntu Desktop - OMG! Ubuntu!で紹介されている AppImageLauncherを使えば宜しくやってくれるみたいだ。

同期設定

私の場合、 Nextcloudを使って同期するのだけど、二要素認証、Time-based One-time Password(TOTP)を使っている場合、無理なのか?と思ったが、 前回の記事で紹介したとおり、アプリパスワード2を使えば可能となる。

とはいえ、Nextcloud WebDAV URLの書き方を間違えると上手くいかない。正しいURLがhttps://cloud.example.com/nextcloud/remote.php/dav/files/arimasou16/として。

Joplin
  1. WebDAV URLなのにブラウザでアクセスするURLhttps://cloud.example.com/nextcloud/を書いてしまうと…
エラーです。URL、ユーザー名、パスワードなどを修正し、同期先にアクセスできるかを確認してください。次が報告されたエラーです:
PROPFIND : Unknown error 2 (405): <html> <head><title>405 Not Allowed</title></head> <body> <center><h1>405 Not Allowed</h1></center> <hr><center>nginx/1.18.0 (Ubuntu)</center> </body> </html> (Code 405)
Joplin
  1. ユーザー名が抜けたURLを指定してしまうhttps://cloud.example.com/nextcloud/remote.php/dav/files/
完了: 2022-10-22 16:55 (2s)
最新のエラー: Error: MKCOL locks/: Permission denied to create directory (Exception Sabre\DAV\Exception\Forbidden) (403): <?xml version="1.0" encoding="utf-8"?> <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> <s:exception>Sabre\DAV\Exception\Forbidden</s:exception> <s:message>Permission denied to create directory</s:message> </d:error>
Joplin
同期は成功です、と出るがノート一覧に戻っての同期でエラー
  1. https://cloud.example.com/nextcloud/remote.php/dav/files/arimasou16/だと直下にjoplinファイルが増殖されてしまうので、慌てて、 /joplinディレクトリを末尾につけてhttps://cloud.example.com/nextcloud/remote.php/dav/files/arimasou16/joplinとすると
最新のエラー: Fail-safe: Sync was interrupted because 100% of the data (9 items) is about to be deleted. To override this behaviour disable the fail-safe in the sync settings.

と表示される。この場合、nextcloudサーバーにログインして、.mdファイルだけでなくて、lockstmepといったディレクトリとinfo.jsonといったファイルなども/joplinに移動してしまえば、大丈夫だ。もし通常のnextcloudアカウントユーザーのまま、使いたい場合、/joplinディレクトリ作って、URLもhttps://cloud.example.com/nextcloud/remote.php/dav/files/arimasou16/joplinとすれば、ルートが汚染されることはなく、/joplinディレクトリ配下に同期される。

Joplin

結局、自分は、セキュリティを考慮してjoplin専用のユーザー作って、同期させることにした。

Simplenoteからの移行

それまで、 Simplenoteを使っていたので、そこからゴソっと移行したい。移行ツールは存在していた。 GitHub - rpgd60/simplenote2joplin: Process JSON file with exported notes from SimpleNote for import into Joplinである。

これを使えば、スマホアプリからエスクポートしたjsonファイルを以下の手順でenexファイルに変換してインポートすれば移行が完了する。

cd  ~/git
git clone https://github.com/rpgd60/simplenote2joplin.git
python3 simplenote2joplin/simplenote2joplin.py --json-file /home/arimasou16/Downloads/simplenote.json >notes.enex

ただ、これだとタイトルが名称未設定になる。タイトルも--create-titleといったオプションや Usage Examples を見れば出来るのかも知れない。

Joplin

何てことはないWeb版、もしくはデスクトップアプリからエクスポートすれば、一個一個の記事がプレーンテキストでtxtファイルとして出力される。ゴミ箱のは/trashディレクトリにあり、全記事を纏めたスマホアプリでエクスポートできる同じ内容のjsonファイルは/sourceディレトリに notes.json として出力される。

なので、ゴミ箱の記事やjsonファイルのは除いて、ディレクトリ毎インポートしてしまえば、タイトルありの状態で記事が移行される。ただ、追加された日時は同時刻になってしまう。

Joplin

vimプラグインもある

そして、vimからのファイル操作も可能だ。 GitHub - tenfyzhong/joplin.vim: This is a plugin for us to use joplin.app in vim.というプラグインがある。vimプラグインが用意されているから、このjoplinを試してみたのだが…

なんとnvimには現時点 2022-11-21 では対応してない。なら、WindowsやMacでは KaoriYa版GVimMacVim-KaoriYaを使ってたから、戻すかぁ、と思ったのだけど…

vim-guiは透明化が簡単に出来ない3…ならターミナルでvim使えばいいかぁ、と思ったら key bindings - Strange behavior of remapping - Vi and Vim Stack Exchangeで見られるように、インサートモードの時、Ctrl+jで下に移動してしまう。リマップしたいのだけど出来ない…let g:BASH_Ctrl_j = 'off'でイケるとあるのだけど、駄目。

じゃあ、透明化なんてどうでもいいからGVimで使うかーと思って使い始めたのだけど、vimプラグインの使い勝手が、個人的に宜しくない。特に、無題のバッファをそのままタイトル付けて登録(同期)しても、無題のバッファのままなので、更新が:wで出来ない。一々、ファイルとして保存してから編集しないといけない。 simplenote-vim/simplenote.vimと比べて、全体的にイマイチなんだよねぇ。

恐らく、そんなvimで頑張るよりターミナル版 Joplinが、vimに寄せて作られているので、こちらを使う方が良いかと思う。

Joplin user interface is partly based on the text editor Vim and offers two different modes to interact with the notes and notebooks:

私は、結局、デスクトップJoplinで、テキストエディターのコマンドを指定できるので、そこで下記のように設定した。

パス 引数
kitty -e nvim
Joplin

そして、Ctrl+eでテキストエディターが起動できるので、そこでnvim起動して編集して、という形で妥協した。

Webクリッパーがある

これまでこうした類いは、使ってこなかったがWebクリッパーがある。初めError: Could not connect to the Joplin application. Please ensure that it is started and that the clipper service is enabled in the configuration.といったエラーが出るからどうやって使うのか思ったら。

デスクトップアプリの設定 -> Webクリッパーから クリッパーサービスを有効にする で使用可能となる。デスクトップアプリの起動中にしか使えない。

とはいえ、便利そう。

Joplin
クリッパーサービスを有効にする
Joplin
WebページをMarkdown形式で保存してみる
Joplin
Joplinに保存されている

ChromebookでJoplinを使えるのか?

しかし、これで終わりではない。この ChromebookにJoplinをインストールできるか? - MYmemoブログにもあるとおり、そうだよ、Chromebookでは、どうするんだよ!と。

Linuxインストールして、そこから起動すればやれるだろうが、余りに邪道すぎる。

実は過去において Joplin Web API for Nextcloudというのがあったのだけど、Joplin Serverが出来たから廃止ね!として終了してしまっている。

Joplin Web API for Nextcloud is now discontinued in favour of Joplin Server

Joplin Server、何じゃそれ!と思ったところで、次回 Joplin Sever導入編に続く


  1. 何故、 Obsidianじゃないかと思うかも知れないが、多機能過ぎると思ったのと、同期がアプリによっては上手く行かない(使いづらい)といった 記事を読んだからだ。 ↩︎

  2. アプリパスワードとNextcloud モバイルクライアントの設定方法 | Nextcloud日本公式サイト ↩︎

  3. GitHub - tsuyoshicho/transparency.vim: Gvim transparencyで出来るらしいが、駄目だった。 ↩︎