Skip to content

Fix the workshop tmux layout for every exercise and split the setup guide#8

Merged
TSC21 merged 12 commits into
mainfrom
fix/workshop-tmux-and-docs
May 20, 2026
Merged

Fix the workshop tmux layout for every exercise and split the setup guide#8
TSC21 merged 12 commits into
mainfrom
fix/workshop-tmux-and-docs

Conversation

@TSC21
Copy link
Copy Markdown
Member

@TSC21 TSC21 commented May 20, 2026

Fixes three problems hit while running the workshop, plus a docs cleanup.

Problems fixed

  • ros2 / source not found in tmux panes. The ubuntu user had /bin/sh (dash) as its login shell, so tmux panes never sourced ~/.bashrc (no ROS 2 env) and had no source builtin. The user's shell is now bash.
  • Selections could not be copied out of tmux. The banner told attendees to Shift+drag (a native selection), which is wiped on every status-bar repaint. set-clipboard on now sends tmux copies to the host clipboard over OSC 52, so a plain drag works.
  • No pane for the second ROS 2 node. teleop and precision-land run two ROS 2 nodes at once; the 5-pane layout had only one example pane. The sim window is now a 3x2 grid with node 1 and node 2 panes, and the hint cards are keyed per exercise.

Also

  • docker_run.sh --tmux drops straight into the workshop tmux layout.
  • docs/setup.md (~500 lines) is split into setup.md / simulation.md / ros2.md along the three workshop phases, with cross-links updated.

Commits

  • fix(docker): run the ubuntu user's shell as bash
  • workshop-tmux: copy selections to the system clipboard
  • workshop-tmux: 6-pane layout with two ROS 2 example panes
  • workshop-hint: make the pane hints exercise-aware
  • feat(docker): add --tmux flag to docker_run.sh
  • docs: split the setup guide into setup, simulation and ros2

Note

The Docker-image changes (Dockerfile, docker/scripts/*) require a rebuilt and republished image to reach attendees.

TSC21 added 12 commits May 19, 2026 20:28
useradd was creating the ubuntu user without -s, leaving its login
shell as /bin/sh (dash). tmux then spawned every workshop pane as
dash, which does not read ~/.bashrc (so the ROS 2 environment was
never sourced and `ros2` was "not found") and has no `source`
builtin (`source ...` failed with "source: not found").

Set the login shell to /bin/bash so tmux panes inherit a shell that
sources the workshop environment.
The welcome banner told attendees to Shift+drag to copy text out of a
pane, which makes a native terminal selection — and that selection is
wiped the instant the pane or the animated status bar repaints.

Enable `set-clipboard on` so a plain mouse drag (tmux copy-mode, which
freezes the pane) forwards the copy to the host clipboard over OSC 52,
and update the welcome banner to match.
The 5-pane sim window had a single example pane, but the teleop and
precision-land exercises each run two ROS 2 nodes at once (e.g.
aruco_tracker plus precision_land), leaving the second node nowhere
to go.

Rebuild the sim window as a 3x2 grid with two example panes (node 1
and node 2). Also seed each pane by running `workshop-hint` as the
pane's command instead of injecting it with send-keys: now that panes
run bash and source the ROS 2 workspace, the slower startup raced the
send-keys and dropped the hint.
Rework the hint cards so every pane (gazebo, px4, common, node 1,
node 2) is keyed by the same exercise names, mirroring the
per-exercise README flow. The gazebo and px4 cards now list the
--world and PX4_SYS_AUTOSTART value each exercise needs, and the
example pane is split into node 1 / node 2 cards so the two-node
exercises are unambiguous.
With --tmux the container drops straight into the preconfigured
workshop tmux layout instead of a plain shell. workshop-tmux runs as
a child process (not PID 1), so detaching the session falls back to a
shell and keeps the container — and the simulation — alive.
docs/setup.md had grown to ~500 lines covering installation, running
the simulation and the ROS 2 bridge. Split it along the three
workshop phases:

- setup.md      install requirements + start the container
- simulation.md multi-terminal workflow + start PX4-Gazebo
- ros2.md       bridge the simulation into the ROS 2 graph

Each page chains to the next, and the README lists all three. Update
the exercise READMEs to point at simulation.md for the "start the
simulation" steps, and fix a `source source` typo in the workspace
rebuild command.
@TSC21 TSC21 merged commit dc5b725 into main May 20, 2026
2 checks passed
@TSC21 TSC21 deleted the fix/workshop-tmux-and-docs branch May 20, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant