🛸

AeroSpaceでもピクチャ・イン・ピクチャを追従させたい!

#

AeroSpace

AeroSpaceでワークスペースを切り替えた際に、YouTube等のPiPウィンドウを自動追従させる設定方法を紹介する。

##はじめに

私は​ MacOS の​タイル方​ウィンドウマネージャーに​ AeroSpace↗️ を​使っています。​非常に​便利な​ツールですが、​一つだけ​不満が​ありました。​それは、​YouTube 等の​アプリで​ピクチャー・イン・ピクチャー (PiP) を​使用して​ワークスペースを​切り​替えると、​PiP ウィンドウが​元の​ワークスペースに​取り残されてしまう​ことです。

なので、​今回は​それを​改善していけたらなと​思います。

##環境

MacBook Air
チップ: Apple M3
macOS: macOS Sequpia 15.5
ブラウザ: Vivaldi

##やり方

###1. PiP ウィンドウ名を​確認

ブラウザや​環境に​よって​ PiP の​ウィンドウの​タイトル (window-title) が​異なります。​ブラウザの​ PiP を​開いた​状態で​以下の​コマンドを​実行し、​自分の​環境での​ウィンドウ名を​確認してください。

Terminal window
aerospace list-windows --all --format "%{app-name} | %{window-title}"

実行結果の​例:

Finder | Documents
Vivaldi | ピクチャーインピクチャー

私の​環境では、​「ピクチャーインピクチャー」でした。​移行は​この​名前で​進めるので、もし別の​タイトルでしたら、​下記の​ものを​置き換えてください。

###2. workspace change の​フックを​設定

aerospace.toml に、​ワークスペースを​切り替えた​ときに​スクリプトを​実行する​設定を​記述します。

aerospace.toml
exec-on-workspace-change = [
'/bin/bash',
'-c',
'~/.config/aerospace/pip-follow.sh',
]

###3. PiP 追従スクリプトの​作成

次に​ ~/.config/aerospace/pip-follow.sh に​シェルスクリプトを​作成します。​ウィンドウを​移動させる​ものです。

~/.config/aerospace/
aerospace.toml
pip-follow.sh ← 新しく作成
~/.config/aerospace/pip-follow.sh
#!/bin/bash
# 現在のフォーカスしているワークスペース名を取得
current_workspace=$(aerospace list-workspaces --focused)
# 特定のタイトルを持つウィンドウを探し、現在のワークスペースに召喚する
aerospace list-windows --all | grep "ピクチャーインピクチャー" | awk '{print $1}' | while read window_id; do
if [ -n "$window_id" ]; then
aerospace move-node-to-workspace --window-id "$window_id" "$current_workspace"
fi
done

スクリプトを​作成したら、​実行権限を​与えて​おきましょう。

Terminal window
chmod +x ~/.config/aerospace/pip-follow.sh

##補足

PiP ウィンドウが​タイルと​して​分割されると​使い​勝手が​悪いため、​ on-window-detected で​常に​フローティング表示する​設定を​併用して​おくと​使いやすくなるので​オススメです。

[[on-window-detected]]
if.app-id = 'om.vivaldi.Vivaldi' # 各自のブラウザIDに置き換えてください。
if.window-title-regex-substring = "ピクチャーインピクチャー"
run = ['layout floating']

##おわりに

以上、​AeroSpace の​ PiP を​自動追従させる​方​法でした。

Discussion