💭

Windowsでもデイリーノートのハードルを下げる

2023/10/14に公開

はじめに

前回のRaycastでObsidianのデイリーノートのハードルを更に下げるの続きです。
最後にwindowsでも同じことが実現できないかと悩んでいましたが、自分が満足できるそれっぽいものができたので共有したいと思います。

完成品

必要なもの

  • Obsidian
    • Advanced URI(コミュニティプラグイン)
    • Obsidian Memos(コミュニティプラグイン)
  • AutoHotkey
  • PowerShell
  • 前に出さないZ

コミュニティプラグイン

設定 > コミュニティプラグインの制限モードを有効化し、コミュニティプラグイン右側の閲覧からAdvanced URIObsidian Memosのプラグインを検索し、インストールと有効化をしてください。

Obsidianとコミュニティプラグインについての説明は割愛します。知りたい方は前回の記事を参照ください。

AutoHotkey

Powerful. Easy to learn.
The ultimate automation scripting language for Windows.

Deepl先生訳

パワフル。学びやすい。
Windowsのための究極の自動化スクリプト言語。

今回はショートカットキーを定義して、PowerShellを呼び出すために使用します。

PowerShell

Windowsに搭載されているコマンドシェル

前に出さないZ

特定のウィンドウを最背面に固定するためのソフトです。

やりかた

PowerAutomateでも実現できないかと模索しましたが、うまくいかなかったため、PowerShellのスクリプトをAutoHotkeyから起動するという方針をとります。

Scripts

Powershell

# アセンブリの読み込み
[void][System.Reflection.Assembly]::Load("Microsoft.VisualBasic, Version=8.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a")

# inputboxの表示
$input = [Microsoft.VisualBasic.Interaction]::InputBox("take a memo", "Take Obsidian Memos")
$memo = $input -replace ' ', '%20'
$now = Get-Date
$current_time = $now.ToString("HH:mm")

# MyVaultの部分を自身のvault名に書き換えてください。
Start-Process "obsidian://advanced-uri?vault=MyVault&daily=true&mode=append&data=-%20$current_time%20$memo"
雰囲気解説(AutoHotkey)

InputBoxの引数は、
メッセージ:テキストボックスの上のメッセージ
タイトル:ウィンドウのタイトル
です。

[Microsoft.VisualBasic.Interaction]::InputBox("メッセージ", "タイトル")

ターミナルでの実行方法は、Getting Started | Obsidian Advanced URIを参考に、Start-Processコマンドを使います。

AutoHotkey


AutoHotkeyを起動し、左上のNew scriptを選択してください。

好きな場所にスクリプトを作成して、下記のソースを貼り付けてください。
このとき、C:\to\your\ps1\path\takeAmemos.ps1は先ほど作成したpowershellスクリプトのパスになります。

!m::
{
  Run "powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Unrestricted C:\to\your\ps1\path\takeAmemos.ps1"
}
雰囲気解説(AutoHotkey)

1行目の!m!Altキーのことを指しており、Alt + mでRun以下を実行します。今回はPowerShellのスクリプトを起動するようにしています。
-WindowStyle Hiddenをつけることで、実行時にPowerShellのウィンドウを閉じた状態で実行することができます。しかし、何故か不定期でウィンドウが開いたまま起動する問題があり正直謎です。

実行

作成した.ahkファイルをダブルクリックで実行して、前に出さないZとObsidianを起動してください。インジケーターから前に出さないZを右クリックし、ウィンドウ登録(W)からObsidianを選択してくだい。
これで準備は完了です。
あとは、Alt + mでpowershellスクリプトを起動しインプットボックスにテキストを入力するとObsidianに追記されます。

もし、PCを立ちあげる度に.ahkファイルと前に出さないZを起動するのが面倒な方がいれば、win+rshell:startupを実行し、スタートアップフォルダに.ahkファイルのショートカットと前に出さないZのショートカットを作成してください。これでPCを立ち上げる度に自動で起動してくれます。

認知している問題

  • PowerShellのウィンドウが開いたままのことが多々ある。原因は分からないが、私はそこまで気にならないので無視。
  • Inputboxが空のままでも書き込まれてしまう。こちらも自分は気にならないので無視。

おわりに

では、Windowsでも快適なObsidianライフをお過ごしください。

参考

PowerShellをはじめよう ~PowerShell入門~: PowerShellでInputBoxを使用する

Discussion