🪟
AeroSpaceでフォーカス中のワークスペースのウィンドウを一括フローティング化する
AeroSpace を使い始めたばかりですが、一部のワークスペースでは他のウィンドウ管理ツールと組み合わせて使いたくなりました。そこで今回は、フォーカス中のワークスペースに属するウィンドウを一括でフローティング化する方法をまとめます。
実行コマンド
ウィンドウを一括でフローティング化するコマンド
以下のコマンドで、フォーカス中のワークスペースにあるウィンドウを一括でフローティング化できます。
$ aerospace list-workspaces --focused \
| xargs -I{} aerospace list-windows --workspace {} \
| awk -F' *\| *' '{print $1}' \
| xargs -n1 aerospace layout floating --window-id
簡単にコマンドの流れを説明すると、次のようになります。
- フォーカス中のワークスペースを取得する
- 取得したワークスペースに属する全ウィンドウを取得する
- 各ウィンドウごとにフローティング化する
xargs -n1 を指定することで、各ウィンドウ ID を個別に aerospace layout floating コマンドに渡しています。
ウィンドウを一括でタイリング化するコマンド
以下のコマンドで、ウィンドウを一括でタイリングに戻せます。
layout floating の部分を layout tiling に変更するだけです。
$ aerospace list-workspaces --focused \
| xargs -I{} aerospace list-windows --workspace {} \
| awk -F' *\| *' '{print $1}' \
| xargs -n1 aerospace layout tiling --window-id
AeroSpace のショートカットキーの定義
毎回コマンドを実行するのは手間なので、AeroSpace の設定ファイルで一括フローティング化・タイリング化用のショートカットキーを定義します。
一括フローティング化のショートカットキー
スクリプトの作成
$ mkdir -p ~/.config/aerospace/scripts
$ touch ~/.config/aerospace/scripts/ws_floating_all.sh
#!/bin/zsh
ws="$(aerospace list-workspaces --focused)"
[ -z "$ws" ] && exit 0
aerospace list-windows --workspace "$ws" \
| awk -F' *\| *' '{print $1}' \
| xargs -n1 aerospace layout floating --window-id
$ chmod +x ~/.config/aerospace/scripts/ws_floating_all.sh
.aerospace.toml の定義
alt-shift-f は定義済みのため、alt-ctrl の prefix にしました。
alt-ctrl-f = 'exec-and-forget /bin/zsh -lc "~/.config/aerospace/scripts/ws_floating_all.sh"'
一括タイリング化のショートカットキー
スクリプトの作成
$ mkdir -p ~/.config/aerospace/scripts
$ touch ~/.config/aerospace/scripts/ws_tiling_all.sh
#!/bin/zsh
ws="$(aerospace list-workspaces --focused)"
[ -z "$ws" ] && exit 0
aerospace list-windows --workspace "$ws" \
| awk -F' *\| *' '{print $1}' \
| xargs -n1 aerospace layout tiling --window-id
$ chmod +x ~/.config/aerospace/scripts/ws_tiling_all.sh
.aerospace.toml の定義
alt-ctrl-t = 'exec-and-forget /bin/zsh -lc "~/.config/aerospace/scripts/ws_tiling_all.sh"'
Discussion