PowerToys Runがv0.73.0からサードパーティ製プラグインに対応していたのでChromeブックマークの検索を導入する

## 概要

MicrosoftがOSSで提供するPowerToysはWindowsを触る上での便利機能をたくさん提供してくれるツールです。
たくさんある機能の1つであるPowerToys RunはAlt+SpaceのショートカットでMacのSpotlightのような入力窓を表示し、そこからファイル検索やコマンド実行をしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359375/eec753df-77f0-56fb-d59d-8c0acaeeb8e3.png)

そんなPowerToys Runのv0.73.0が2023年9月にリリースされ、サードパーティ製のプラグインを読み込むことができるようになりました。これまではインストール済みの機能しか利用することができませんでした。

本記事ではプラグインの読み込みを試し、Chromeブックマークの検索ができるようにします。

## PowerToysをインストール

PowerToysは以下のリリースノートからダウンロードできます。2023年12月現在では既に0.75.1がリリースされています。

https://github.com/microsoft/PowerToys/releases/

## プラグインの導入

プラグインの導入については以下の公式ドキュメントに記載があります。

https://github.com/microsoft/PowerToys/blob/main/doc/thirdPartyRunPlugins.md

`%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins` の下にプラグインのディレクトリを配置し起動することでプラグインを読み込んでくれます。

非公式のためサポートされないとしつつ、ドキュメントには現在以下のプラグインが記載されています。

- BrowserSearch
- Edge Favorite
- Everything
- GitHub Emoji
- GitKraken
- Guid
- PowerTranslator
- Quick Lookup
- Visual Studio
- WinGet

それぞれのリンク先からzipファイルをダウンロードし前述のディレクトリに配置するだけでプラグインが実行できます。

しかし、こちらのリストには概要で記載したChromeのブックマークから検索するプラグインがありませんでした。そのため、 `Edge Favorite` を改造することでChromeに対応させました。

## プラグインのビルド

プラグインをビルドするためにはVisual Studioのインストールが必要です。以下URLからダウンロードし、.NETデスクトップ開発のビルド環境をインストールします。

https://visualstudio.microsoft.com/ja/vs/features/net-development/

フォークし変更済みのリポジトリは以下にあります。やったことは検索先のディレクトリをEdgeのブックマークのパスからChromeのものに修正し、起動する際のアプリケーションをEdgeではなく既定ブラウザに変更しただけです。EdgeもChromeもChromiumをベースとしているのでこれだけで済んだのだと思います。

https://github.com/octop162/PowerToys-Run-ChromeFavorite

フォーク元のリポジトリにビルド用のPowerShellスクリプトがありましたので、そちらを実行しzipファイルを生成しました。

```
> powershell -ExecutionPolicy Bypass .\Build.ps1
MSBuild のバージョン 17.8.3+195e7f5a3 (.NET)
  復元対象のプロジェクトを決定しています...                                                                                       C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Plugin.ChromeFavorite\Community.PowerToys.Run.Plugin.Chro   meFavorite.csproj を復元しました (499 ms)。                                                                                     C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Plugin.ChromeFavorite.Tests\Community.PowerToys.Run.Plugi   n.ChromeFavorite.Tests.csproj を復元しました (501 ms)。                                                                         Community.PowerToys.Run.Plugin.ChromeFavorite -> C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Plugin.C
  hromeFavorite\bin\ARM64\Release\Community.PowerToys.Run.Plugin.ChromeFavorite.dll
  Community.PowerToys.Run.Plugin.ChromeFavorite.Tests -> C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Pl
  ugin.ChromeFavorite.Tests\bin\ARM64\Release\Community.PowerToys.Run.Plugin.ChromeFavorite.Tests.dll

ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:07.40
MSBuild のバージョン 17.8.3+195e7f5a3 (.NET)
  復元対象のプロジェクトを決定しています...
  復元対象のすべてのプロジェクトは最新です。
  Community.PowerToys.Run.Plugin.ChromeFavorite -> C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Plugin.C
  hromeFavorite\bin\x64\Release\Community.PowerToys.Run.Plugin.ChromeFavorite.dll
  Community.PowerToys.Run.Plugin.ChromeFavorite.Tests -> C:\Users\XXXXXXX\PowerToys-Run-ChromeFavorite\Community.PowerToys.Run.Pl
  ugin.ChromeFavorite.Tests\bin\x64\Release\Community.PowerToys.Run.Plugin.ChromeFavorite.Tests.dll

ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:02.47
```

ビルドに成功しARM版とx64版が作成されています。こちらのzipファイルを解凍後前述のディレクトリに配置しています。GitHub Actionsも用意されていましたのでビルド済みのファイルは上記リポジトリに置いています。

```
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2023/12/03      1:11          20343 ChromeFavorite-0.1.0-ARM64.zip
-a----        2023/12/03      1:11          20343 ChromeFavorite-0.1.0-x64.zip
```

## 動作確認

PowerToysを起動しPowerToys Runの設定からプラグインを確認すると設置したプラグインを認識してくれました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359375/797d66ae-7848-7729-52f2-5ea76c7db941.png)

あとは、Alt+Spaceで検索してみます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359375/52dff5d4-bd23-1045-e22c-4908a2cb7804.png)

ブックマークにあるURLが表示されました！

## その他
PowerToysにこだわりましたが、こだわらなければWoxというPowerToys Runの元となるアプリを使うことや、WoxのフォークであるFlow Launcherを使うことでも同じように検索ができます。

ここでは導入していませんがEverythingのファイル検索プラグインも公開されていて、こちらもおすすめです。