Text · 907 bytes Raw Blame History
1 #!/usr/bin/env bash
2 # If not running in a terminal, spawn a new WezTerm window to run this script
3 if [ -z "$TERM" ] || [[ "$TERM" == "dumb" ]]; then
4 exec wezterm start -- bash -lc "$0"
5 fi
6 # move_workspace_fzf.sh — choose source & target via fzf
7
8 # grab all workspace names
9 mapfile -t WKS < <(aerospace list-workspaces --all --format '%{workspace}')
10
11 # interactive picks
12 SRC=$(printf '%s\n' "${WKS[@]}" | fzf --prompt="Move from workspace: ")
13 [ -z "$SRC" ] && exit 1
14
15 DST=$(printf '%s\n' "${WKS[@]}" | fzf --prompt="Move to workspace: ")
16 [ -z "$DST" ] && exit 1
17
18 # collect and move
19 mapfile -t WINS < <(aerospace list-windows --all --format '%{window-id},%{workspace}' | \
20 awk -F',' -v WS="$SRC" '$2==WS {print $1}')
21 for win in "${WINS[@]}"; do
22 aerospace move-node-to-workspace "$DST" --window-id "$win" --focus-follows-window
23 done
24
25 # finally, jump you over
26 aerospace workspace "$DST"