コンテンツにスキップ
wandeln_

プラグイン

パレットのコマンドやトップバーの項目を追加するスクリプト拡張です。フォルダを置くだけで使えます。

  • ディレクトリ%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
{
"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 どちらで保存しても日本語・絵文字が使えます。

パレットで name を検索すると出てきます。Enter で引数なしで実行します。出力は無視されます。

パレットで 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)”
plugins\hello\plugin.json
{ "name": "デスクトップにメモを作成", "command": "hello.ps1" }
plugins\hello\hello.ps1
$desktop = [Environment]::GetFolderPath("Desktop")
$file = Join-Path $desktop ("memo-" + (Get-Date -Format "yyyyMMdd-HHmmss") + ".txt")
Set-Content -Path $file -Value "Wandeln から作成" -Encoding UTF8
Start-Process notepad $file
plugins\case\plugin.json
{ "name": "大文字・小文字変換", "keyword": "case", "command": "case.py" }
plugins\case\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 と入力すると候補が出ます。

トップバーに表示する項目です。置いて「再読み込み」すると、設定 → バー のウィジェット一覧(右側・無効)に プラグイン名で追加されます。有効化・配置は通常のウィジェットと同じです。

interval 秒ごとにスクリプトを引数なしで実行し、標準出力を表示します(5秒で打ち切り)。

{ "text": "表示文字列", "tooltip": "ホバー時(任意)", "action": { "type": "open", "value": "https://..." } }
  • action はパレットと同じ copy / open / run で、クリック時に実行されます(run の後は表示を即更新)。
  • JSON でない場合は、1行目が表示文字列、2行目以降がツールチップになります。
  • 表示文字列が空なら項目は非表示になります。
plugins\uptime\plugin.json
{ "name": "起動時間", "type": "bar", "command": "uptime.ps1", "interval": 60 }
plugins\uptime\uptime.ps1
$up = (Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
"⏱ {0}日 {1}時間" -f $up.Days, $up.Hours
"最終起動からの経過時間"