⌨️

AutoHotKeyでWindowsターミナルをサッと呼び出す

2024/11/16に公開

iTerm2と似た設定

MacのiTerm2にて、サッとフルスクリーンでターミナルを呼び出す設定が好きなので、
WindowsのWSLでも同じようなことができるようにスクリプトを組んでみた。

作ったもの

  • 左Ctrl+右CtrlでWindowsターミナルを呼び出す
  • 再度ショートカットを押すと、ウィンドウが最小化される

Windowsターミナル側の設定

AHK用の新しいプロファイルを用意する。

  1. 「プロファイル名」はwsl_ahkにする。

    • この後書くスクリプト中でプロファイル名を参照する
  2. 「タブタイトル名」はnullにする。

    • GUI上では画像のように空文字を入力しておけばいい
    • WSLの場合、ここをnullにしないとウィンドウの名前が現在のパスになるため、AHKスクリプトからうまくプロファイル名を取得できなくなる。
  3. 詳細設定から「タイトルの変更を表示しない」をオンにする。

  4. (任意): 外観設定から「背景の不透明度」を100%から少し下げる。

    • こうしておくと、Windowsターミナルが最大化表示された際にデスクトップに置かれた他のウィンドウが見えるようになる。

作成したスクリプト

  • 左Ctrl+右Ctrlが押されたときに、Windowsターミナルのウィンドウの状態に応じて開いたり閉じたりしている。
  • 作成したスクリプトをコンパイルし、exeを実行すればショートカットが効くようになる。
  • あとはWin+Rからshell:startupでスタートアップディレクトリを開き、exeを置けばWindows起動時に実行されるようになる。
#SingleInstance Force

; Windowsターミナルのプロファイル名
terminalWindow := "wsl_ahk"

~LCtrl & RCtrl::
~RCtrl & LCtrl::
{
  hwnd := WinExist(terminalWindow)
  if hwnd {
    if WinActive("ahk_id " hwnd) { ; ウィンドウがアクティブの場合最小化
      WinMinimize(terminalWindow)
    } else { 
      WinRestore(terminalWindow) ; ウィンドウが非アクティブの場合最前面表示+最大化
      WinActivate(terminalWindow)
      WinMaximize(terminalWindow)
    }
  } else {
    Run "wt.exe -M -p wsl_ahk"  ; Windowsターミナルが立ち上がっていない場合に起動
  }
}

おわり

このスクリプトで、WSLをサッと開ける用になりかなり快適になった。

今回はWSL用の設定だが、Windowsターミナルのプロファイル名と、スクリプト中から参照するプロファイル名が一致していれば問題なく動作するため、お好みに応じてコマンドプロンプトやPowerShellにしても動作する(はず)。
また、ショートカットは他アプリケーションと干渉しないように適当に設定しただけので、使う場合は~LCtrl & RCtrl::の部分を好みのショートカットに変えてもらえればいいと思う。

Discussion