Fix the workshop tmux layout for every exercise and split the setup guide#8
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes three problems hit while running the workshop, plus a docs cleanup.
Problems fixed
ros2/sourcenot found in tmux panes. Theubuntuuser had/bin/sh(dash) as its login shell, so tmux panes never sourced~/.bashrc(no ROS 2 env) and had nosourcebuiltin. The user's shell is nowbash.set-clipboard onnow sends tmux copies to the host clipboard over OSC 52, so a plain drag works.simwindow is now a 3x2 grid withnode 1andnode 2panes, and the hint cards are keyed per exercise.Also
docker_run.sh --tmuxdrops straight into the workshop tmux layout.docs/setup.md(~500 lines) is split intosetup.md/simulation.md/ros2.mdalong the three workshop phases, with cross-links updated.Commits
fix(docker): run the ubuntu user's shell as bashworkshop-tmux: copy selections to the system clipboardworkshop-tmux: 6-pane layout with two ROS 2 example panesworkshop-hint: make the pane hints exercise-awarefeat(docker): add --tmux flag to docker_run.shdocs: split the setup guide into setup, simulation and ros2Note
The Docker-image changes (
Dockerfile,docker/scripts/*) require a rebuilt and republished image to reach attendees.