Screens 1 and 4 running as TUIOS panes: reply screen, adopt-or-create launcher, layout script

This commit is contained in:
Sam
2026-11-10 11:48:07 +11:00
parent 8cfe38ee84
commit 34f60872f6
10 changed files with 564 additions and 23 deletions

33
bin/layout Executable file
View File

@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# Build the project's pages in TUIOS, in a fixed order, without closing anything.
#
# Workspace 1 keeps a shell: it is the pane that never exits, so the session
# cannot lose its first workspace. Each screen then gets a workspace named after
# it, in this order. Running this again adopts what is already there.
#
# bin/layout # the default project
# bin/layout spike-2026-11-10 AUD-162
set -euo pipefail
SESSION="${PAPERCLIP_HARNESS_SESSION:-paperclip-harness}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
project="${1:-spike-2026-11-10}"
task="${2:-AUD-162}"
# Resolve workspace 1 by name, never by number.
first_name="$(tuios list-workspaces -s "$SESSION" --json |
python3 -c 'import json,sys; w=json.load(sys.stdin)["workspaces"]; print(next((x["name"] for x in w if x["workspace"]==1), ""))')"
if [ -z "$first_name" ]; then
tuios set-workspace-name 1 shell -s "$SESSION" >/dev/null
echo "named workspace 1 shell"
fi
"$ROOT/bin/screen" tree "$project"
"$ROOT/bin/screen" reply "$task"
tuios list-workspaces -s "$SESSION" --json | python3 -c '
import json,sys
for w in json.load(sys.stdin)["workspaces"]:
if w["window_count"]:
print(" workspace %d %-8s %d pane(s)" % (w["workspace"], w["name"] or "(unnamed)", w["window_count"]))
'