Spike confirmed (claude 2.1.168): /etc/claude-code/managed-settings.json claudeMd reaches a session (sentinel echoed). Hybrid inheritance = enforced org claudeMd machine-wide (top precedence, non-overridable) + per-user ~/.claude/{skills,rules,...} symlinks to the config base (live, the proven emo pattern) seeded via /etc/skel. setup-devvm.sh is idempotent: apt toolset, node>=18 + claude-code, system-wide kubelogin (NOT the Azure apt pkg), the managed config, and /etc/skel (launcher that cd's $HOME/code, tmux UX, inheritance symlinks). Verified: emo unchanged (groups/symlinks/live sessions intact), emo can read the managed config, idempotent re-run clean.
Security fix (host state): /home/wizard/.claude/settings.json was 0664, exposing MEMORY_API_KEY to all devvm users -> chmod 0600. chezmoi source needs a private_ prefix + the key templated out to persist this (dotfiles-repo follow-up).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
2.5 KiB
Bash
51 lines
2.5 KiB
Bash
# Workstation base tmux config (deployed to /etc/skel/.tmux.conf by
|
|
# setup-devvm.sh; new accounts inherit it). Uses $HOME (expanded by the shell at
|
|
# run time) so it works for ANY user — never a hardcoded /home/<name>.
|
|
#
|
|
# NOTE: the tmux-resurrect/continuum "persistence" block is owned by the separate
|
|
# terminal-lobby tool, which appends its own managed section + installs tpm. This
|
|
# base file intentionally omits it so a fresh account isn't left with broken
|
|
# `run ~/.tmux/plugins/tpm/tpm` references before terminal-lobby runs.
|
|
|
|
# Launch the per-user Claude launcher in every new pane/window (lands in ~/code).
|
|
set -g default-command "$HOME/start-claude.sh"
|
|
|
|
# Mouse support — click panes, drag to resize, scroll with wheel
|
|
set -g mouse on
|
|
|
|
# Easy splits: Ctrl+b then | for vertical, - for horizontal
|
|
bind | split-window -h -c "#{pane_current_path}"
|
|
bind - split-window -v -c "#{pane_current_path}"
|
|
bind c new-window -c "#{pane_current_path}"
|
|
|
|
# Right-click context menu — clickable actions popup
|
|
bind -n MouseDown3Pane display-menu -T "#[align=centre]Terminal Menu" -x M -y M \
|
|
"New Claude" w "new-window -c '#{pane_current_path}'" \
|
|
"Split Horizontal" h "split-window -v -c '#{pane_current_path}'" \
|
|
"Split Vertical" v "split-window -h -c '#{pane_current_path}'" \
|
|
"" \
|
|
"Shell" s "split-window -v -c '#{pane_current_path}' /bin/zsh" \
|
|
"" \
|
|
"Close Pane" x "confirm-before -p 'Close pane? (y/n)' kill-pane" \
|
|
"Close Window" X "confirm-before -p 'Close window? (y/n)' kill-window" \
|
|
"" \
|
|
"Detach" d "detach-client"
|
|
|
|
# Clickable [+] button in the status bar — left-click to open the same menu
|
|
set -g status-right '#[fg=black bg=green] [+] #[default] #[fg=cyan]Right-click for menu '
|
|
set -g status-right-length 60
|
|
bind -n MouseDown1StatusRight display-menu -T "#[align=centre]Terminal Menu" -x M -y S \
|
|
"New Claude" w "new-window -c '#{pane_current_path}'" \
|
|
"Split Horizontal" h "split-window -v -c '#{pane_current_path}'" \
|
|
"Split Vertical" v "split-window -h -c '#{pane_current_path}'" \
|
|
"" \
|
|
"Shell" s "split-window -v -c '#{pane_current_path}' /bin/zsh" \
|
|
"" \
|
|
"Close Pane" x "confirm-before -p 'Close pane? (y/n)' kill-pane" \
|
|
"Close Window" X "confirm-before -p 'Close window? (y/n)' kill-window"
|
|
|
|
# Status bar styling + 1-based numbering
|
|
set -g status-style 'bg=colour235 fg=colour136'
|
|
set -g status-left '#[fg=green][#S] '
|
|
set -g base-index 1
|
|
setw -g pane-base-index 1
|