bootstrap.sh --all leaves a fresh clone short of converged. install-030-tpm.sh clones the plugin manager, but the plugins themselves wait on an interactive prefix + I that a just-cloned machine has no way to have run.
The failure is quiet rather than loud, which is what makes it worth fixing. Nothing errors -- tmux starts, the config parses, every installer reports OK. But tmux-yank is absent, so clipboard copy silently does nothing, and #{prefix_highlight} in status-right renders as an empty string, so the status bar just looks half-built. It reads as "the team config is broken", not "a step is pending" -- exactly the independent-research detour this repo exists to prevent.
This came out of a real fresh-clone install where the reported symptom was "tmux is not working properly". Everything in the toolkit had in fact installed correctly.
What this adds
install-040-plugins.sh drives TPM's own bin/install_plugins, the supported non-interactive entry point. prefix + I is unchanged and is still how you pick up plugins added mid-session.
It follows the pack contract:
numbered with a gap after 030, picked up by the existing install-[0-9]*.sh glob with no orchestrator change
The plugin set is read from the @plugin lines in files/tmux.conf (authoritative per plugins.list). TPM instead reads the live ~/.tmux.conf, so the script warns when that is not our symlink and the installed set would differ.
Documented side effect: TPM resolves its plugin path via tmux start-server \; show-environment, so running this starts a tmux server if none is running. Existing sessions are not modified.
Verification
On Ubuntu 24.04 / tmux 3.4:
converged no-op, both normal and dry-run
dry-run with tmux-yank removed: previews the clone, changes nothing on disk
real run: restores it, post-check confirms every declared plugin present
all three exit-2 preconditions (TPM absent, config absent, and a non-toolkit ~/.tmux.conf taking the warn path)
full bootstrap.sh --all and --dry-run --all end to end
bash -n clean, repo non-ASCII grep clean (shellcheck is not installed on the test box, so it has not been linted)
Notes for review
The README rationale bullet is written to match the "debate welcome, change via PR" framing. If the team would rather keep plugin installation opt-in, the alternative is leaving 030 as-is and documenting bin/install_plugins in the pack README instead -- happy to cut it back to that.
bootstrap.sh --allleaves a fresh clone short of converged.install-030-tpm.shclones the plugin manager, but the plugins themselves wait on an interactiveprefix + Ithat a just-cloned machine has no way to have run.The failure is quiet rather than loud, which is what makes it worth fixing. Nothing errors -- tmux starts, the config parses, every installer reports OK. But
tmux-yankis absent, so clipboard copy silently does nothing, and#{prefix_highlight}instatus-rightrenders as an empty string, so the status bar just looks half-built. It reads as "the team config is broken", not "a step is pending" -- exactly the independent-research detour this repo exists to prevent.This came out of a real fresh-clone install where the reported symptom was "tmux is not working properly". Everything in the toolkit had in fact installed correctly.
What this adds
install-040-plugins.shdrives TPM's ownbin/install_plugins, the supported non-interactive entry point.prefix + Iis unchanged and is still how you pick up plugins added mid-session.It follows the pack contract:
030, picked up by the existinginstall-[0-9]*.shglob with no orchestrator changelib/lib-install.sh, honoursTOOLKIT_DRY_RUN~/.tmux.conf) exit2naming the component to run first; a failed download exits1Two details worth a reviewer's eye:
@pluginlines infiles/tmux.conf(authoritative perplugins.list). TPM instead reads the live~/.tmux.conf, so the script warns when that is not our symlink and the installed set would differ.tmux start-server \; show-environment, so running this starts a tmux server if none is running. Existing sessions are not modified.Verification
On Ubuntu 24.04 / tmux 3.4:
tmux-yankremoved: previews the clone, changes nothing on disk~/.tmux.conftaking the warn path)bootstrap.sh --alland--dry-run --allend to endbash -nclean, repo non-ASCII grep clean (shellcheck is not installed on the test box, so it has not been linted)Notes for review
The README rationale bullet is written to match the "debate welcome, change via PR" framing. If the team would rather keep plugin installation opt-in, the alternative is leaving
030as-is and documentingbin/install_pluginsin the pack README instead -- happy to cut it back to that.Generated with Claude Code
tmux: install the plugin set non-interactively (install-040-plugins.sh)
74f7025intomainfromtmux-plugins-install-0401 day agotmux-plugins-install-040branch 1 day ago