From 7b245d6f659fd403be92f7382beb04f7839ead0e Mon Sep 17 00:00:00 2001 From: Sam & Claude Date: Thu, 25 Jun 2026 20:24:55 +0200 Subject: [PATCH] feat(iso): ship kitty.conf + tmux.conf defaults and xterm rescue fallback Closes the OOTB config gaps from the kitty swap (b4c86b6). Kitty installed but shipped with bare defaults and no tmux passthrough; rescue path lost its headless fallback when xfce4-terminal was removed. Changes: - panel-skel/.config/kitty/kitty.conf: font 13pt (Hack, from hack-font pkg), quiet-dark theme + full 16-color palette, scrollback, tab bar, beam cursor. Lands at ~/.config/kitty/kitty.conf for the clawdie user via existing panel-skel staging (no build.sh change). - panel-skel/.config/tmux/tmux.conf: extended-keys on + csi-u so modifier keys (Shift-Enter, Ctrl-Arrow, Alt-Enter) reach TUIs (pi, zot, colibri-tui) run inside tmux. XDG path (~/.config/tmux/tmux.conf), read natively by the live USB's tmux 3.5a. Plus escape-time 0, focus-events, mouse, sane indexing. - clawdie-xfce-session-inner: rescue terminal now falls back kitty -> xterm. Kitty is GPU-only; without a GL surface (bhyve no-GPU VMs) it can fail to start, leaving the operator with no rescue shell. xterm stays installed. No build.sh change needed: both configs ride the existing `cp -R panel-skel/.config/.` into /etc/skel/.config and /home/clawdie/.config (build.sh:2087, :2095). Pre-merge: confirm `pkg search kitty` on the FreeBSD build host (couldn't reach the network from the dev sandbox). (Sam & Claude) --- .../clawdie-xfce-session-inner | 6 ++ .../panel-skel/.config/kitty/kitty.conf | 66 +++++++++++++++++++ .../panel-skel/.config/tmux/tmux.conf | 31 +++++++++ 3 files changed, 103 insertions(+) create mode 100644 live/operator-session/panel-skel/.config/kitty/kitty.conf create mode 100644 live/operator-session/panel-skel/.config/tmux/tmux.conf diff --git a/live/operator-session/clawdie-xfce-session-inner b/live/operator-session/clawdie-xfce-session-inner index b5e1026..5884bc1 100644 --- a/live/operator-session/clawdie-xfce-session-inner +++ b/live/operator-session/clawdie-xfce-session-inner @@ -95,9 +95,15 @@ manual_xfce_desktop() { if ! pgrep -U "$(id -u)" -x xfce4-panel >/dev/null 2>&1 || \ ! pgrep -U "$(id -u)" -x xfwm4 >/dev/null 2>&1; then echo "Panel or window manager missing after fallback startup; opening rescue terminal" + # Kitty is GPU-accelerated; on a headless/bhyve surface with no GL + # it may fail to start. Fall back to xterm (always installed) so the + # rescue shell stays reachable even without a working GPU. if command -v kitty >/dev/null 2>&1; then kitty -T "Clawdie desktop rescue" \ sh -lc 'echo XFCE startup fallback. See ~/.xsession-errors.; exec sh' & + elif command -v xterm >/dev/null 2>&1; then + xterm -T "Clawdie desktop rescue" \ + -e sh -lc 'echo XFCE startup fallback. See ~/.xsession-errors.; exec sh' & fi fi ) & diff --git a/live/operator-session/panel-skel/.config/kitty/kitty.conf b/live/operator-session/panel-skel/.config/kitty/kitty.conf new file mode 100644 index 0000000..b3e2cc1 --- /dev/null +++ b/live/operator-session/panel-skel/.config/kitty/kitty.conf @@ -0,0 +1,66 @@ +# Clawdie operator USB — Kitty terminal defaults +# Ships at ~/.config/kitty/kitty.conf for the clawdie user. +# Tweak freely; reload live with Ctrl+Shift+F5 (or restart kitty). +# Pick a different look interactively: kitty +kitten themes +# Full reference: man kitty.conf + +# ── Font ─────────────────────────────────────────────────── +# Hack ships via the `hack-font` package on the live USB. Bumped above +# kitty's 11pt default so operator dashboards (colibri-tui, tmux, pi) stay +# legible on laptop panels. +font_family Hack +bold_font auto +italic_font auto +bold_italic_font auto +font_size 13.0 + +# ── Window ───────────────────────────────────────────────── +remember_window_size no +initial_window_width 110c +initial_window_height 30c +window_padding_width 6 +hide_window_decorations no + +# ── Scrollback / mouse ───────────────────────────────────── +scrollback_lines 10000 +copy_on_select yes +url_style curly +open_url_with default +strip_trailing_spaces always + +# ── Tab bar (only when more than one tab is open) ────────── +tab_bar_min_tabs 2 +tab_bar_edge bottom +tab_bar_style powerline +tab_title_template {title} + +# ── Theme: quiet dark ────────────────────────────────────── +# A calm, high-contrast dark scheme tuned for long operator sessions. +# Programs that use the 16 ANSI colors (ls, git, vim, syntax highlighters) +# stay coherent with the foreground/background. +foreground #c8d3f5 +background #1b1d2b +cursor #c8d3f5 +selection_foreground #1b1d2b +selection_background #3b3f54 + +color0 #1b1d2b +color8 #5b6078 +color1 #f7768e +color9 #f7768e +color2 #9ece6a +color10 #9ece6a +color3 #e0af68 +color11 #e0af68 +color4 #7aa2f7 +color12 #7aa2f7 +color5 #bb9af7 +color13 #bb9af7 +color6 #7dcfff +color14 #7dcfff +color7 #a9b1d6 +color15 #c0caf5 + +# ── Cursor ───────────────────────────────────────────────── +cursor_shape beam +cursor_blink_interval 0 diff --git a/live/operator-session/panel-skel/.config/tmux/tmux.conf b/live/operator-session/panel-skel/.config/tmux/tmux.conf new file mode 100644 index 0000000..7891883 --- /dev/null +++ b/live/operator-session/panel-skel/.config/tmux/tmux.conf @@ -0,0 +1,31 @@ +# Clawdie operator USB — tmux defaults +# Ships at ~/.config/tmux/tmux.conf (tmux 3.1+ reads the XDG path; the live +# USB's tmux port is 3.5a). Reload after edits: +# tmux source-file ~/.config/tmux/tmux.conf + +# ── Modifier-key passthrough (the reason this file exists) ─ +# Kitty reports Shift/Ctrl/Alt-modified keys; tmux must forward them so TUIs +# (pi, zot, colibri-tui) receive Shift-Enter, Ctrl-Arrow, Alt-Enter, etc. +# csi-u is the most reliable format and needs tmux 3.5+ (we have 3.5a). +set -g extended-keys on +set -g extended-keys-format csi-u + +# ── Responsiveness ────────────────────────────────────────── +# Zero escape time so TUIs (ratatui, pi, vim) feel instant; forward focus +# events so apps that track focus react promptly. +set -s escape-time 0 +set -sg focus-events on + +# ── History ───────────────────────────────────────────────── +set -g history-limit 50000 + +# ── Window numbering matches the keyboard, renumber on close ─ +set -g base-index 1 +setw -g pane-base-index 1 +set -g renumber-windows on + +# ── Mouse (operator convenience: select, scroll, resize) ──── +set -g mouse on + +# ── Don't let running apps rename windows out from under us ─ +set -g allow-rename off