プラグイン
パレットのコマンドやトップバーの項目を追加するスクリプト拡張です。フォルダを置くだけで使えます。
ディレクトリ%APPDATA%/dev.wandeln.app/
ディレクトリplugins/
ディレクトリtranslate/
- plugin.json
- tr.py
ディレクトリuptime/
- plugin.json
- uptime.ps1
実際のパスは %APPDATA%\dev.wandeln.app\plugins\<プラグイン名>\plugin.json です。プラグインごとにフォルダを作り、その中に plugin.json とスクリプトを置きます。
設定 → プラグイン →「フォルダを開く」で開けます(無ければ作られます)。 追加・変更後はパレットを開き直すか、設定の「再読み込み」で反映されます。
plugin.json
Section titled “plugin.json”{ "name": "翻訳", "type": "palette", "keyword": "tr", "command": "tr.py", "description": "任意"}| キー | 必須 | 内容 |
|---|---|---|
name |
○ | パレット・設定に表示される名前 |
type |
"palette"(省略時)または "bar" |
|
keyword |
指定すると検索型、省略すると単発コマンド型 | |
command |
○ | プラグインフォルダ内のスクリプト |
description |
説明 | |
interval |
bar のみ: 更新間隔(秒)。既定 60、最小 2 |
対応するスクリプト: .ps1(PowerShell)、.bat / .cmd、.exe、
.py(python が PATH に必要)、.js(node が PATH に必要)。
作業フォルダはプラグインのフォルダです。コンソールウィンドウは表示されません。
.ps1 は UTF-8(BOM なしも可)/ Shift-JIS どちらで保存しても日本語・絵文字が使えます。
単発コマンド型(keyword なし)
Section titled “単発コマンド型(keyword なし)”パレットで name を検索すると出てきます。Enter で引数なしで実行します。出力は無視されます。
検索型(keyword あり)
Section titled “検索型(keyword あり)”パレットで keyword + スペース + 文字列 を入力すると、スクリプトを実行して結果を一覧表示します。
- 入力文字列は 第1引数 と 環境変数
WANDELN_QUERYの両方で渡されます。 - 5秒以内に終了しないと打ち切られます。
- 標準出力は UTF-8 で出力してください(
.ps1は自動で UTF-8 になります。.pyはPYTHONIOENCODING=utf-8が設定されます)。
標準出力の形式:
{ "items": [ { "title": "表示名", "subtitle": "補足(任意)", "action": { "type": "copy", "value": "コピーする文字列" } } ]}| action.type | Enter での動作 |
|---|---|
copy |
value をクリップボードにコピー |
open |
value の URL / ファイル / フォルダを開く |
run |
同じスクリプトを value を第1引数にして実行(出力は無視) |
JSON でない出力の場合、1行ごとに copy の項目になります。
サンプル1: 単発コマンド(PowerShell)
Section titled “サンプル1: 単発コマンド(PowerShell)”{ "name": "デスクトップにメモを作成", "command": "hello.ps1" }$desktop = [Environment]::GetFolderPath("Desktop")$file = Join-Path $desktop ("memo-" + (Get-Date -Format "yyyyMMdd-HHmmss") + ".txt")Set-Content -Path $file -Value "Wandeln から作成" -Encoding UTF8Start-Process notepad $fileサンプル2: 検索型(Python)
Section titled “サンプル2: 検索型(Python)”{ "name": "大文字・小文字変換", "keyword": "case", "command": "case.py" }import json, sys
text = sys.argv[1] if len(sys.argv) > 1 else ""items = []if text: for label, value in [("大文字", text.upper()), ("小文字", text.lower()), ("先頭大文字", text.title())]: items.append({"title": value, "subtitle": label, "action": {"type": "copy", "value": value}})print(json.dumps({"items": items}, ensure_ascii=False))パレットで case hello world と入力すると候補が出ます。
バー型("type": "bar")
Section titled “バー型("type": "bar")”トップバーに表示する項目です。置いて「再読み込み」すると、設定 → バー のウィジェット一覧(右側・無効)に プラグイン名で追加されます。有効化・配置は通常のウィジェットと同じです。
interval 秒ごとにスクリプトを引数なしで実行し、標準出力を表示します(5秒で打ち切り)。
{ "text": "表示文字列", "tooltip": "ホバー時(任意)", "action": { "type": "open", "value": "https://..." } }actionはパレットと同じcopy/open/runで、クリック時に実行されます(runの後は表示を即更新)。- JSON でない場合は、1行目が表示文字列、2行目以降がツールチップになります。
- 表示文字列が空なら項目は非表示になります。
サンプル3: バー型(PowerShell)
Section titled “サンプル3: バー型(PowerShell)”{ "name": "起動時間", "type": "bar", "command": "uptime.ps1", "interval": 60 }$up = (Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime"⏱ {0}日 {1}時間" -f $up.Days, $up.Hours"最終起動からの経過時間"