From 3de813c4be0020b4a892c2440183b1bcdd87752a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 18:44:53 +0300 Subject: rocky-vm-setup: add nested tmux C-g prefix, tmux 3.2 compat; cross-ref f3s skill --- prompts/skills/rocky-vm-setup/SKILL.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/prompts/skills/rocky-vm-setup/SKILL.md b/prompts/skills/rocky-vm-setup/SKILL.md index ddb78e8..086d33b 100644 --- a/prompts/skills/rocky-vm-setup/SKILL.md +++ b/prompts/skills/rocky-vm-setup/SKILL.md @@ -57,10 +57,11 @@ Short LAN aliases for all f3s hosts (short, `.lan`, and `.lan.buetow.org` varian | Tool | Version | How Installed | |------|---------|---------------| | tmux | 3.2a | `dnf install -y tmux` | +| tmux prefix | C-g | **Rocky override** — nested tmux (see below) | | fish | 3.7.1 | `dnf install -y fish` (EPEL) | | amp | 0.7.1 | Downloaded binary from GitHub releases | | claude-code | 2.1.169 | `npm install -g @anthropic-ai/claude-code` | -| pi coding agent | 0.74.2 | `npm install -g @earendil-works/pi-coding-agent` | +| pi coding agent | 0.79.0 | `npm install -g @earendil-works/pi-coding-agent` | | taskwarrior | 2.6.2 | **Built from source** (see below) | | Rex | 1.16.1 | `cpanm Rex` (requires expat-devel, perl-LWP-Protocol-https) | | zoxide | 0.9.8 | `dnf install -y zoxide` (EPEL) | @@ -68,6 +69,29 @@ Short LAN aliases for all f3s hosts (short, `.lan`, and `.lan.buetow.org` varian | fzf fish plugin | — | **fisher install PatrickF1/fzf.fish** | | ask, hexai*, gt, gitsyncer, etc. | — | `go install codeberg.org/snonux/...` (see update::tools) | +### Nested tmux (C-g on rocky) + +Earth (outer tmux) uses the default **C-b** prefix. Rocky (inner tmux) uses **C-g** so you can control both layers. + +**Workflow:** +| Key | Action | +|-----|--------| +| `C-b c` | Create window in outer tmux (earth) | +| `C-g c` | Create window in inner tmux (rocky) | +| `C-b b` | Send `C-b` through to inner tmux | +| `C-g g` | Send `C-g` through to inner-inner tmux | + +Rocky config is in `~/.config/tmux/tmux.rocky.conf` and sourced from `tmux.local.conf`: + +```sh +# ~/.config/tmux/tmux.rocky.conf +unbind C-b +set -g prefix C-g +bind C-g send-prefix +``` + +This is deployed by the `home_tmux_rocky` Rex task (runs only when `hostname =~ /rocky/`). + ### Building taskwarrior from source Rocky 9 does not ship `task`/`taskwarrior`. v3.x requires Rust; v2.6.2 compiles cleanly. @@ -116,6 +140,8 @@ done # (foostore, loadbars, totalrecall, goprecords may need X11/GL deps for GUI — skip on headless) ``` +**tmux 3.2a compatibility note:** The dotfiles `tmux.conf` includes `set -g extended-keys-format csi-u` (tmux 3.3+). On rocky this line is automatically stripped by the `home_tmux_rocky` Rex task. If you deploy manually, remove or comment out that line. + --- ## User and Privileges -- cgit v1.2.3 From fc2af6461abdbaf1f3552d126da25381410eef0e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:07:51 +0300 Subject: rocky-vm-setup: document tmux color scheme (bright green + red borders) --- prompts/skills/rocky-vm-setup/SKILL.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/prompts/skills/rocky-vm-setup/SKILL.md b/prompts/skills/rocky-vm-setup/SKILL.md index 086d33b..a6fcbb5 100644 --- a/prompts/skills/rocky-vm-setup/SKILL.md +++ b/prompts/skills/rocky-vm-setup/SKILL.md @@ -73,6 +73,13 @@ Short LAN aliases for all f3s hosts (short, `.lan`, and `.lan.buetow.org` varian Earth (outer tmux) uses the default **C-b** prefix. Rocky (inner tmux) uses **C-g** so you can control both layers. +**Visual distinction — you'll never confuse the two:** + +| Layer | Prefix | Active Border | Status Bar | +|-------|--------|---------------|------------| +| **Earth (outer)** | `C-b` | **Magenta** | White-on-purple | +| **Rocky (inner)** | `C-g` | **Bright Red** | **Black-on-bright-green** with `[ROCKY]` label | + **Workflow:** | Key | Action | |-----|--------| @@ -88,6 +95,12 @@ Rocky config is in `~/.config/tmux/tmux.rocky.conf` and sourced from `tmux.local unbind C-b set -g prefix C-g bind C-g send-prefix + +# Drastic color scheme +set -g pane-active-border-style 'fg=brightred,bold' +set -g status-style 'bg=brightgreen,fg=black,bold' +set -g status-left ' [ROCKY] #S ' +set -g window-status-current-style 'bg=black,fg=brightgreen,bold' ``` This is deployed by the `home_tmux_rocky` Rex task (runs only when `hostname =~ /rocky/`). -- cgit v1.2.3 From 4a12bd5fa410a582f9b9d443b193ac272f040632 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:10:01 +0300 Subject: rocky-vm-setup: tmux color scheme to red/orange (colour208) --- prompts/skills/rocky-vm-setup/SKILL.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/prompts/skills/rocky-vm-setup/SKILL.md b/prompts/skills/rocky-vm-setup/SKILL.md index a6fcbb5..c23ccdc 100644 --- a/prompts/skills/rocky-vm-setup/SKILL.md +++ b/prompts/skills/rocky-vm-setup/SKILL.md @@ -78,7 +78,7 @@ Earth (outer tmux) uses the default **C-b** prefix. Rocky (inner tmux) uses **C- | Layer | Prefix | Active Border | Status Bar | |-------|--------|---------------|------------| | **Earth (outer)** | `C-b` | **Magenta** | White-on-purple | -| **Rocky (inner)** | `C-g` | **Bright Red** | **Black-on-bright-green** with `[ROCKY]` label | +| **Rocky (inner)** | `C-g` | **Bright Red** | **Black-on-orange** with `[ROCKY]` label | **Workflow:** | Key | Action | @@ -96,11 +96,12 @@ unbind C-b set -g prefix C-g bind C-g send-prefix -# Drastic color scheme +# Drastic RED/ORANGE color scheme set -g pane-active-border-style 'fg=brightred,bold' -set -g status-style 'bg=brightgreen,fg=black,bold' -set -g status-left ' [ROCKY] #S ' -set -g window-status-current-style 'bg=black,fg=brightgreen,bold' +set -g status-style 'bg=colour208,fg=black,bold' +set -g status-left ' [ROCKY] #[bg=brightred,fg=white] #S ' +set -g window-status-current-style 'bg=brightred,fg=white,bold' +set -g window-status-style 'bg=colour208,fg=black' ``` This is deployed by the `home_tmux_rocky` Rex task (runs only when `hostname =~ /rocky/`). -- cgit v1.2.3 From c46a28f1af57fa542a35234341b2ad7d3ed8e0fc Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:11:59 +0300 Subject: rocky-vm-setup: document pane indicators in red/orange for nested tmux --- prompts/skills/rocky-vm-setup/SKILL.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/prompts/skills/rocky-vm-setup/SKILL.md b/prompts/skills/rocky-vm-setup/SKILL.md index c23ccdc..661b9ae 100644 --- a/prompts/skills/rocky-vm-setup/SKILL.md +++ b/prompts/skills/rocky-vm-setup/SKILL.md @@ -75,10 +75,10 @@ Earth (outer tmux) uses the default **C-b** prefix. Rocky (inner tmux) uses **C- **Visual distinction — you'll never confuse the two:** -| Layer | Prefix | Active Border | Status Bar | -|-------|--------|---------------|------------| -| **Earth (outer)** | `C-b` | **Magenta** | White-on-purple | -| **Rocky (inner)** | `C-g` | **Bright Red** | **Black-on-orange** with `[ROCKY]` label | +| Layer | Prefix | Active Border | Status Bar | Pane Indicators | +|-------|--------|---------------|------------|-----------------| +| **Earth (outer)** | `C-b` | **Magenta** | White-on-purple | Default blue | +| **Rocky (inner)** | `C-g` | **Bright Red** | **Black-on-orange** with `[ROCKY]` label | **Red/orange** pane numbers, border labels | **Workflow:** | Key | Action | @@ -102,6 +102,13 @@ set -g status-style 'bg=colour208,fg=black,bold' set -g status-left ' [ROCKY] #[bg=brightred,fg=white] #S ' set -g window-status-current-style 'bg=brightred,fg=white,bold' set -g window-status-style 'bg=colour208,fg=black' + +# Active pane indicators +set -g display-panes-colour colour208 # prefix+q pane numbers +set -g display-panes-active-colour brightred # active pane number +set -g pane-border-status top # show pane info on borders +set -g pane-border-format '#[fg=colour208] #{pane_index} #[fg=brightred]#{pane_title} ' +set -g window-status-current-format ' #I*#[bg=brightred,fg=white] #W ' ``` This is deployed by the `home_tmux_rocky` Rex task (runs only when `hostname =~ /rocky/`). -- cgit v1.2.3 From bd71042e5d0f9ed83027c8fa8c48e4b6671c25bb Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:12:55 +0300 Subject: Update --- fish/conf.d/update.fish.lock | 1 - 1 file changed, 1 deletion(-) delete mode 100644 fish/conf.d/update.fish.lock diff --git a/fish/conf.d/update.fish.lock b/fish/conf.d/update.fish.lock deleted file mode 100644 index 1bbf2e6..0000000 --- a/fish/conf.d/update.fish.lock +++ /dev/null @@ -1 +0,0 @@ -3281258 -- cgit v1.2.3 From fa2ba654b28ce36ab030dfca1c6d8c795a4f343e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:13:32 +0300 Subject: home_tmux_rocky: source rocky overrides at END of tmux.conf so colors win --- Rexfile | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Rexfile b/Rexfile index cdb6091..3d4cdce 100644 --- a/Rexfile +++ b/Rexfile @@ -299,19 +299,33 @@ task 'home_tmux_rocky', sub { my $hostname = `hostname 2>/dev/null` // ''; chomp $hostname; if ( $hostname =~ /rocky/ ) { - my $conf = "$HOME/.config/tmux/tmux.local.conf"; my $line = "source-file ~/.config/tmux/tmux.rocky.conf"; + my $local_conf = "$HOME/.config/tmux/tmux.local.conf"; + my $main_conf = "$HOME/.config/tmux/tmux.conf"; + + # Clean up stale reference from tmux.local.conf (moved to end of tmux.conf) + if ( -f $local_conf ) { + my $content = do { local $/; open my $fh, '<', $local_conf or die $!; <$fh> }; + if ( $content =~ /\Q$line\E/ ) { + $content =~ s/\n*\Q$line\E\n*/\n/; + open my $fh, '>', $local_conf or die $!; + print $fh $content; + close $fh; + Rex::Logger::info("Removed stale tmux.rocky.conf source from $local_conf"); + } + } - if ( -f $conf ) { - my $content = do { local $/; open my $fh, '<', $conf or die $!; <$fh> }; + # Append to the END of tmux.conf so rocky colors override shared config + if ( -f $main_conf ) { + my $content = do { local $/; open my $fh, '<', $main_conf or die $!; <$fh> }; if ( $content !~ /\Q$line\E/ ) { - Rex::Logger::info("Appending tmux.rocky.conf source to $conf"); - open my $fh, '>>', $conf or die $!; + Rex::Logger::info("Appending tmux.rocky.conf source to end of $main_conf"); + open my $fh, '>>', $main_conf or die $!; print $fh "\n$line\n"; close $fh; } else { - Rex::Logger::info("tmux.rocky.conf already sourced in $conf"); + Rex::Logger::info("tmux.rocky.conf already sourced in $main_conf"); } } } -- cgit v1.2.3