Stream DeckでWindows Terminal(PowerShell 7)を任意のディレクトリで開く方法
問題
Stream DeckからPowerShell 7(pwsh.exe)を直接起動すると、Windows Terminalで設定した「開始ディレクトリ」が効かず、C:\Program Files\PowerShell\7\ で開いてしまう。
結論
Stream Deckでは pwsh.exe ではなく wt.exe(Windows Terminal)を起動する
C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\wt.exe
または単に wt でもOK(PATHに入っている)。
背景:なぜこうなるのか
Windows Terminalの設定は Windows Terminal 経由でのみ有効
Windows Terminalの settings.json で設定した startingDirectory や -WorkingDirectory は、Windows Terminal経由で起動した場合にのみ適用される。
pwsh.exe を直接起動すると、Windows Terminalの設定は完全に無視され、exeファイルの場所(C:\Program Files\PowerShell\7\)がカレントディレクトリになる。
トラブルシューティングの経緯
以下、試行錯誤の記録。同じ問題に遭遇した人の参考になれば。
1. Windows Terminalの「開始ディレクトリ」を設定(効かなかった)
Windows Terminal の設定 → PowerShell プロファイル → 開始ディレクトリ を設定。
C:\Users\numbe\Git_repo
結果: Windows Terminalから起動すれば効くが、Stream Deckからは効かない。
2. 「Windows PowerShell」と「PowerShell」の違いに気づく
Windows Terminalには2つの異なるPowerShellプロファイルがある:
| プロファイル名 | バージョン | 実行ファイル |
|---|---|---|
| Windows PowerShell | 5.x(古い) | %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe |
| PowerShell | 7.x(新しい) | C:\Program Files\PowerShell\7\pwsh.exe |
最初、古い方(Windows PowerShell)の設定を変更していて、PowerShell 7には効いていなかった。
3. コマンドラインに -WorkingDirectory を追加
PowerShell 7のプロファイルで、コマンドラインを以下に変更:
"C:\Program Files\PowerShell\7\pwsh.exe" -WorkingDirectory "C:\Users\numbe\Git_repo"
結果: Windows Terminal内でタブを分割したときは効くが、最初のウィンドウには効かない。
4. source 行を削除
settings.json で PowerShell 7 のエントリに "source": "Windows.Terminal.PowershellCore" があると、自動検出の設定が優先されることがある。
この行を削除:
{
"commandline": "\"C:\\Program Files\\PowerShell\\7\\pwsh.exe\" -WorkingDirectory \"C:\\Users\\numbe\\Git_repo\"",
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"startingDirectory": "C:\\Users\\numbe\\Git_repo"
}
5. 既定のプロファイルを PowerShell 7 に変更
スタートアップ設定で「既定のプロファイル」が「Windows PowerShell」(古い方)になっていた。
これを「PowerShell」(7の方)に変更。
結果: Windows Terminalからの起動は完璧に動作。しかしStream Deckからはまだダメ。
6. 根本原因の発見
Stream Deckの設定を確認すると:
"C:\Program Files\PowerShell\7\pwsh.exe"
pwsh.exe を直接起動していたため、Windows Terminalの設定が一切適用されていなかった。
最終的な解決策
Stream Deckの設定
変更前:
App/ファイル: "C:\Program Files\PowerShell\7\pwsh.exe"
変更後:
App/ファイル: C:\Users\numbe\AppData\Local\Microsoft\WindowsApps\wt.exe
引数でディレクトリを指定する方法(オプション)
特定のディレクトリを明示的に指定したい場合:
wt.exe -d "C:\Users\numbe\Git_repo"
特定のプロファイルとディレクトリを指定:
wt.exe -p "PowerShell" -d "C:\Users\numbe\Git_repo"
settings.json の最終形
参考までに、動作確認済みの settings.json(PowerShell 7 部分):
{
"commandline": "\"C:\\Program Files\\PowerShell\\7\\pwsh.exe\" -WorkingDirectory \"C:\\Users\\numbe\\Git_repo\"",
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"startingDirectory": "C:\\Users\\numbe\\Git_repo"
}
source 行は削除済み。
まとめ
- Windows Terminalの設定は、Windows Terminal経由で起動した場合にのみ有効
pwsh.exeを直接起動すると設定は無視される- Stream Deckなど外部ツールからは
wt.exeを起動する - 「Windows PowerShell」(5.x)と「PowerShell」(7.x)は別のプロファイル