有馬総一郎のブログ

(彼氏の事情)

2024年02月06日 10:06:24 JST - 3 minute read - Comments - Linux

Joplin Terminal Application`joplin-bin`を使ってみる。他Joplinアプリ紹介

Joplinは、GUIによるデスクトップアプリだけでなく、ターミナル上で動くCLIデスクトップjoplin-binも存在する。

Joplin Terminal Application

インストール

インストールは 公式のとおり行う。

sudo pacman -S nodejs
sudo pacman -S npm
NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin
npm fund
sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin

設定

joplinと打って、立ち上げて以下のjoplinコマンドを打つ。以下はJoplin Serverとの同期のケース。

:config sync.target 9
:config sync.9.path URL(例:https://example.com/joplin)
:config sync.9.username ユーザ名(例:joplin@joplin.mail)
:config sync.9.password パスワード
:config editor "nvim"

すると、以下のようになる ~/.config/joplin/settings.json

{
	"$schema": "https://joplinapp.org/schema/settings.json",
	"locale": "ja_JP",
	"api.token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
	"markdown.plugin.softbreaks": false,
	"markdown.plugin.typographer": false,
	"sync.target": 9,
	"sync.9.path": "https://example.com/joplin",
	"sync.9.username": "joplin@joplin.mail",
	"editor": "nvim"
}

また、キーマップの変更も出来る。

~/.config/joplin/keymap.json

[
	{ "keys": [":"], "type": "function", "command": "enter_command_line_mode" },
	{ "keys": ["TAB", "l"], "type": "function", "command": "focus_next" },
	{ "keys": ["SHIFT_TAB", "h"], "type": "function", "command": "focus_previous" },
	{ "keys": ["UP", "k"], "type": "function", "command": "move_up" },
	{ "keys": ["DOWN", "j"], "type": "function", "command": "move_down" },
	{ "keys": ["PAGE_UP"], "type": "function", "command": "page_up" },
	{ "keys": ["PAGE_DOWN"], "type": "function", "command": "page_down" },
	{ "keys": ["ENTER"], "type": "function", "command": "activate" },
	{ "keys": ["DELETE", "BACKSPACE"], "type": "function", "command": "delete" },
	{ "keys": [" "], "command": "todo toggle $n" },
	{ "keys": ["n"], "type": "function", "command": "next_link" },
	{ "keys": ["b"], "type": "function", "command": "previous_link" },
	{ "keys": ["o"], "type": "function", "command": "open_link" },
	{ "keys": ["tc"], "type": "function", "command": "toggle_console" },
	{ "keys": ["tm"], "type": "function", "command": "toggle_metadata" },
	{ "keys": ["/"], "type": "prompt", "command": "search \"\"", "cursorPosition": -2 },
	{ "keys": ["mn"], "type": "prompt", "command": "mknote \"\"", "cursorPosition": -2 },
	{ "keys": ["mt"], "type": "prompt", "command": "mktodo \"\"", "cursorPosition": -2 },
	{ "keys": ["mb"], "type": "prompt", "command": "mkbook \"\"", "cursorPosition": -2 },
	{ "keys": ["yn"], "type": "prompt", "command": "cp $n \"\"", "cursorPosition": -2 },
	{ "keys": ["dn"], "type": "prompt", "command": "mv $n \"\"", "cursorPosition": -2 },
	{ "keys": ["\\q"], "type": "prompt", "command": "exit" },
	{ "keys": ["\\s"], "type": "prompt", "command": "sync" }
]

同期

同期はsyncとやれば出来る。ファイル書き込みとか、時間間隔ではしてくれないのかな?sync.intervalではデフォルト値 300 秒、5分とあるのだけど。

cron1の設定例があるので設定しておく。crontab -e

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

公式の設定例2が方言なのか、typoなのか、そのままだとbad minute errorが出る。vimでのファイル末尾の改行EOL(End of Line)のせいかと思ったら、そうではなかった。設定値が足らないし、/30という書き方では無理だった。

0-59/5 * * * * /usr/bin/joplin sync

joplin syncによる同期処理は、癖?があるというか、joplinから外部エディターを開いてnvimで編集していると、あるとき、ファイルが存在しませんとなって、同期されなくなる、されないならまだしも、下手すると真っ白となって消える。GUIのデスクトップ版を使っている時はこんな事、体験したことがないのだけど、joplinだと起きる。

外部エディターで書き込み、joplin syncで同期した後は、そのまま開きっぱなしは駄目で開き直さないと駄目なのかな?動作の確認がちゃんと取れてない。

その他のjoplinアプリ

他、vimで以前、紹介したが GitHub - tenfyzhong/joplin.vim: This is a plugin for us to use joplin.app in vim.というプラグインがある。

また、ddu.vimを使った Joplin用のddu.vim sourceとkindプラグインを作りました - tomato3713’s blogというのがある。

Plug 'tomato3713/ddu-kind-joplin'
Plug 'tomato3713/ddu-column-joplin'
Plug 'tomato3713/ddu-source-joplin'

ddu.vimが良く分かなくて、設定したのだけど、上手く開けないのと、思ったより一覧を取得するのに時間がかかるので諦めてしまったが、Vimmerなら使うしかないだろ。

更に joplin-vscode-plugin - Visual Studio MarketplaceというVSCodeのプラグインまである。

joplin-vscode-plugin

まあ、 Obsidian - Sharpen your thinkingに乗り換えるもありだとは思うけど。


  1. Arch Linuxとかではインストールされないので、sudo pacman -S cronieでインストール。cronieってパッケージに含まれているんだなぁ。知らんかった。 ↩︎

  2. 公式 Synchronisation。2024-02-06 13:45確認。 ↩︎