【Obsidian】ボタンを作れるプラグインMeta Bindの使い方
Obsidianで、ワンクリックでさまざまな操作ができるボタンを作れる便利なプラグインMeta Bindを紹介します。
悩み
Notionのテンプレートボタンのように「ノートの中に1クリックでいろいろできるボタン」をObsidianでも仕込みたくてインターネットを放浪していました。そんな時に見つけたのがMeta Bindです。
別のプラグイン”Buttons”のREADMEで紹介されていました。
Meta Bindとは?
Meta Bindは、メタデータ(プロパティ)と連携する入力欄やボタンを作ることができるプラグインです。今回はボタンを作る「Buttons」という機能を紹介します。
Meta Bindの導入
まずはMeta Bindをインストールします。設定は特に弄らなくても使えます。
Buttons機能の紹介
ボタンの作り方と簡単な例を紹介します。
作り方
コードブロックにmeta-bind-button
を指定してYAML形式で書きます。
定義の例を見てみましょう。style
でボタンのスタイルを決め、label
にボタンのラベル、action
またはactions
に実行内容を書きます。
ちなみに上記のボタンを実行すると、コマンドパレットが開かれてhelp
と入力された状態になります。
コマンド実行
たとえば、Obsidianのコマンドを実行するには次のようにtype
キーをcommand
に指定し、command
キーに実行したいコマンドを書きます。
command
キーの値に書くObsidianのコマンドを何も知らずに探すのは大変です。このコマンド一覧の確認方法はのちほど説明します。
ノートの作成
新しくノートを作る場合はtype
キーにcreateNote
を指定します。その他フォルダやファイル名、ファイルを開くかどうかを指定します。
Meta Bindでは、type
に指定した値によってaction
で指定すべきキーが変わります。type
の種類はたくさんあるため、他の種類を知りたい方は公式ドキュメントにアクセスし、サイドバーのButton Actions
をご覧ください。
実例
ここからは筆者が実際に使っている例を紹介します。
dataviewとセットで新しいノート作成ボタン
筆者は、dataviewで表示したノートと同じテンプレートを作成できるボタンをdataviewとセットで設置しています。テンプレートが複数ある場合、ボタンを横並びで設置しています。
ボタンのコードブロックの中身もお見せします。
type
はtemplaterCreateNote
です。Templaterで用意したテンプレートを使ってファイルを作成します。ファイル名についてはTemplater側で変更するため、ここでは適当にNew Note
となっています。
id
を指定することで、コードブロックを書いた場所以外からでも呼び出せます。呼び出し時にはインラインコードにBUTTON[指定したid]
のように書きます。
このように、インラインコードでボタンを表示すれば横並び可能です。
そのままだと「コードブロック」「インラインコード」の2箇所で同じボタンが表示されるため、コードブロックのボタン定義ではhidden: true
を指定して非表示にしています。
Obsidianのコマンド一覧を出力する
type
キーにcommand
を指定した時のcommand
キーの値は、Obsidianのコマンドです。.obsidian.vimrcに登場するobcommand
と同じです。
このコマンド一覧を取得するテンプレートとボタンを作っています。
ボタンを定義するコードブロックの下にTemplaterのテンプレを挿入します。テンプレは次のとおりです。
dataviewを使う方法もありますが、テキストとして操作できた方が検索もできます。
そのため、dataviewでコマンド一覧を表示するのではなく、「Templaterでコマンド一覧を出力するテンプレ」をMeta Bindで展開します。
作業ログ追加ボタン
筆者は、「タイムスタンプ」+「折りたたみ変換ボタン」を追加するボタンを設置しています。作業ログの記録として使っており、用が済んだら折りたたみへ変換します。
最初からCalloutを使って折りたたんだ状態にすると書き心地が悪いため、後から変換する仕様なのです。
「折りたたみへ変換」を押すと次の画像のように折りたたまれてボタンも消えます。
type
はreplaceSelf
です。ボタン自身をテンプレートと置き換えてくれます。
履歴は上に追加されていくことを示すためにicon
を使っています。icon
に指定できるのはLucideアイコンのようです。
テンプレートの中身全体を一度お見せします。後で小分けにして説明します。
「作業ログのテンプレート」+「折りたたみへ変換ボタン」+「履歴を追加ボタン」の順です。
実行にはJS Engineプラグインのインストールが必要です。
まず最初がタイムスタンプと実際に作業ログを書く場所です。
REPLACE
のコメントアウトは、あとで折りたたみへ変換する範囲を取得するために使います。作業ログは複数の見出しを並行して書くこともあるため、UID
を付けて一意に識別できるようにしています。
この識別のためのテキストをコメントアウトにしておくことで、リーダービューで見るときには非表示になってくれます。
Templaterで1行目<%* %>
が空行として残ってしまうのを防ぐため、閉じる前にダッシュ-
を付けています。Templaterのホワイトスペースの挙動に興味のある人はWhitespace Control - Templaterを読みましょう。
続いて、「折りたたみへ変換するボタン」を見てみましょう。
action
ではなくactions
を使うことで変換ボタンでは3つのことをやっています。
- 折りたたみへ変換
- 待機
- 変換ボタンの削除
折りたたみへの変換ではJS Engineを使ってJavaScriptのコードを実行します。複数行にわたって書くため、code
キーの値の最初には|
を指定しています。
変換ボタンは一度使ったら不要であるため、replaceSelf
でボタンを抹消します。すぐに実行すると前述の変換とかち合ってしまうようなので待機してから実行します。
次にcode
で指定した中身です。解説はコメントアウトとして書いておきます。
今回Calloutの種類は一番無難そうなnote
にしています。サポートされているCalloutの種類はCallouts - Obsidian Helpを見ましょう。
テンプレートの最後の「履歴を追加」ボタンは、最初と同じです。
作業ログのボタンが必要になったら、テンプレートのこのボタンの部分をコピペすることで設置できます。テンプレートの中にボタンの設置方法が書いてあると分かりやすいです。
Meta Bindを紹介しました。Templaterと組み合わせると効果は抜群です。ボタンを使うとワンクリックでいろいろできるので便利です。