From b4c86b68f43392441075582d8fa825a8ae8a46c1 Mon Sep 17 00:00:00 2001 From: Sam & Claude Date: Thu, 25 Jun 2026 20:03:39 +0200 Subject: [PATCH 1/2] feat(iso): replace xfce4-terminal with kitty Kitty: GPU-accelerated, keyboard-driven, respects terminal color themes, supports modern escape codes ratatui uses (REVERSED, italic, true color). Changes: - pkg-list-xfce.txt: kitty replaces xfce4-terminal - 3 desktop launchers: Exec=kitty with -T (title) + -o window size - Panel indicator: kitty for colibri status - Session rescue: kitty for desktop rescue terminal - Panel config: kitty.desktop in launcher-4 - BUILD.md: docs updated --- BUILD.md | 2 +- live/operator-session/clawdie-enable-mother.desktop | 2 +- live/operator-session/clawdie-join-hive.desktop | 2 +- live/operator-session/clawdie-xfce-session-inner | 6 +++--- live/operator-session/colibri-dashboard.desktop | 2 +- live/operator-session/colibri-panel-indicator.sh | 2 +- .../launcher-4/{xfce4-terminal.desktop => kitty.desktop} | 2 +- .../xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml | 2 +- packages/pkg-list-xfce.txt | 5 ++++- 9 files changed, 14 insertions(+), 11 deletions(-) rename live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/{xfce4-terminal.desktop => kitty.desktop} (89%) diff --git a/BUILD.md b/BUILD.md index 67d85e8..ec6a384 100644 --- a/BUILD.md +++ b/BUILD.md @@ -548,7 +548,7 @@ once the desktop is proven stable on hardware: Listed for completeness so the lean/full split stays honest: - **Desktop session:** `xfce4-desktop`, `xfce4-panel`, `xfce4-session`, - `xfce4-settings`, `xfce4-wm`, `xfce4-terminal`, + `xfce4-settings`, `xfce4-wm`, `kitty`, `xfce4-whiskermenu-plugin`, `sddm`, `xinit`, `xterm`. - **GTK / desktop integration:** `gsettings-desktop-schemas`, `adwaita-icon-theme`, `adwaita-icon-theme-legacy`, diff --git a/live/operator-session/clawdie-enable-mother.desktop b/live/operator-session/clawdie-enable-mother.desktop index fa4f33b..fa7ee5f 100644 --- a/live/operator-session/clawdie-enable-mother.desktop +++ b/live/operator-session/clawdie-enable-mother.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.0 Name=Enable Mother Link Comment=Let this agent's Pi call mother's tools over MCP (opt-in) -Exec=xfce4-terminal --title "Enable Mother Link" --geometry=90x28 --command "/usr/local/bin/clawdie-enable-mother" +Exec=kitty -T "Enable Mother Link" -o initial_window_width=90c -o initial_window_height=28c /usr/local/bin/clawdie-enable-mother Icon=network-transmit-receive Terminal=false Categories=System;Utility; diff --git a/live/operator-session/clawdie-join-hive.desktop b/live/operator-session/clawdie-join-hive.desktop index 2673284..ff0a24e 100644 --- a/live/operator-session/clawdie-join-hive.desktop +++ b/live/operator-session/clawdie-join-hive.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.0 Name=Join Hive Comment=Register this machine as a Colibri agent -Exec=xfce4-terminal --title "Join Hive" --geometry=80x24 --command "/usr/local/bin/clawdie-join-hive" +Exec=kitty -T "Join Hive" -o initial_window_width=80c -o initial_window_height=24c /usr/local/bin/clawdie-join-hive Icon=network-server Terminal=false Categories=System;Utility; diff --git a/live/operator-session/clawdie-xfce-session-inner b/live/operator-session/clawdie-xfce-session-inner index e35619c..b5e1026 100644 --- a/live/operator-session/clawdie-xfce-session-inner +++ b/live/operator-session/clawdie-xfce-session-inner @@ -95,9 +95,9 @@ 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" - if command -v xfce4-terminal >/dev/null 2>&1; then - xfce4-terminal --title "Clawdie desktop rescue" \ - --command "sh -lc 'echo XFCE startup fallback. See ~/.xsession-errors.; exec sh'" & + 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' & fi fi ) & diff --git a/live/operator-session/colibri-dashboard.desktop b/live/operator-session/colibri-dashboard.desktop index fc0277b..0c9b00f 100644 --- a/live/operator-session/colibri-dashboard.desktop +++ b/live/operator-session/colibri-dashboard.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.0 Name=Colibri Dashboard Comment=Open the live Colibri operator dashboard in a terminal -Exec=xfce4-terminal --title "Colibri Dashboard" --geometry=120x30 --command "/usr/local/bin/colibri-tui" +Exec=kitty -T "Colibri Dashboard" -o initial_window_width=120c -o initial_window_height=30c /usr/local/bin/colibri-tui Icon=utilities-terminal Terminal=false Categories=System;Utility; diff --git a/live/operator-session/colibri-panel-indicator.sh b/live/operator-session/colibri-panel-indicator.sh index 11465ef..6dc1150 100755 --- a/live/operator-session/colibri-panel-indicator.sh +++ b/live/operator-session/colibri-panel-indicator.sh @@ -36,4 +36,4 @@ HOST=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin)[ echo "๐ŸŸข ${AGENTS:-?} agents ยท ${TASKS:-?} tasks" echo "Colibri: ${HOST:-?} | socket: ${SOCKET} | agents: ${AGENTS:-?} | started tasks: ${TASKS:-?}" -echo "xfce4-terminal --title 'Colibri Status' --command 'colibri status'" +echo "kitty -T 'Colibri Status' colibri status" diff --git a/live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/xfce4-terminal.desktop b/live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/kitty.desktop similarity index 89% rename from live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/xfce4-terminal.desktop rename to live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/kitty.desktop index 853e76e..aa6b530 100644 --- a/live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/xfce4-terminal.desktop +++ b/live/operator-session/panel-skel/.config/xfce4/panel/launcher-4/kitty.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Version=1.0 Type=Application -Exec=xfce4-terminal +Exec=kitty Icon=utilities-terminal StartupNotify=true Terminal=false diff --git a/live/operator-session/panel-skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/live/operator-session/panel-skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index e06c588..b01d77f 100644 --- a/live/operator-session/panel-skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/live/operator-session/panel-skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -66,7 +66,7 @@ - + diff --git a/packages/pkg-list-xfce.txt b/packages/pkg-list-xfce.txt index ad7c421..5f576ba 100644 --- a/packages/pkg-list-xfce.txt +++ b/packages/pkg-list-xfce.txt @@ -10,7 +10,10 @@ xfce4-panel xfce4-session xfce4-settings xfce4-wm -xfce4-terminal +# GPU-accelerated terminal โ€” replaces xfce4-terminal. +# Kitty: fast, keyboard-driven, respects terminal color themes, +# supports modern escape codes ratatui uses (REVERSED, italic, true color). +kitty mousepad # Keep runtime desktop caches/schemas explicit. These are dependencies of GTK # and XFCE packages, but explicit entries make the live-session contract clear. From 7b245d6f659fd403be92f7382beb04f7839ead0e Mon Sep 17 00:00:00 2001 From: Sam & Claude Date: Thu, 25 Jun 2026 20:24:55 +0200 Subject: [PATCH 2/2] 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