🪨

Obsidian:ターミナルから指定したVaultを開く

2023/10/23に公開

Obsidianは、知識管理とノート作成を効率的に行うためのマークダウンエディタです。このObsidianをターミナルから操作するためのアプリケーションとして、Obsidian CLI Toolがあります。Obsidian CLI Toolを使うと、NoteのOpen、Search、Create/Update、Move/Renameのような処理を行えますが、Noteを指定せずに単にVualtを開くだけの機能は提供されていません。Vaultを開きさえすればNoteのSearch、Create/Update、Move/Renameなどの処理はObsidian内で行えるので、単にターミナルから指定したVaultを開くコマンドが欲しくなります。そこで、Obsidian URIを利用して次のようなスクリプトを書きました。

環境はUbuntu 22.04.2 LTS、Obsidian version 1.1.16です。

obs
#!/bin/bash
#
# Usage: obs [vault]
#

if [[ $# == 0 ]]; then
    uri="obsidian://"
else
    # URI-Encode the vault name
    vault="$(python3 -c \
        "import urllib.parse; print(urllib.parse.quote(\"$1\", safe=''))" \
    )"
    uri="obsidian://open?vault=$vault"
fi

obsidian "$uri" &> /dev/null &

使い方はobs [vault name]です。例えば、techというVaultを開きたい場合は、obs techを実行すればよいです。Vaultが指定されなかった場合、最後に開いていたVaultを開きます。

Vault名はURIエンコードする必要があるので、Python3のurllibを使ってエンコードしています。Python3は多くのLinuxディストロでプリインストールされているはずなので良しとしました。
また、Obsidian URIを使用してVaultを開く前に、一度そのVaultを開いてObsidianにVaultの場所を教えてやる必要があります。Obsidianが把握しているVaultのリストは~/.config/obsidian/obsidian.jsonに保存されています。

参考文献

https://publish.obsidian.md/help-ja/高度なトピック/Obsidian+URIの利用

Discussion