Terminal app (xterm ⇄ WebSocket ⇄ per-agent themed container):
- zsh + oh-my-zsh + powerlevel10k image (agent-terminal), runs as uid 65532 to
share read-write ownership of the file-drive volume with the server.
- Interactive PTY in cm-sandbox (bollard exec tty/attach + resize) + a
TerminalManager; ticket-authed WS bridge routed straight to the backend via a
Traefik PathRegexp(/ws) rule. MOTD greets the user by name.
- tmux resumable sessions; multi-tab (one tmux session per tab, same container),
drag-to-reorder, rename, and a Save that persists named tabs to the server
(terminal_tabs, migration 0014) so they survive logout / a new device.
- Files drives mounted per-agent (subpath) at ~/drives/{documents,received,
shared}; a reconciler keeps the Files app's index in sync with terminal writes.
Storage moved to a shared `filedata` volume (CLAWMATES_STORAGE__DATA_DIR).
Obsidian vault (a markdown "second brain" per agent):
- New `vault` FileDrive (migration 0015) mounted into the terminal at ~/obsidian;
a file-content read route; a purple Obsidian tile + a vault viewer app.
Computer UI:
- Draggable computer-panel width (min = phone preset) keeping the size presets.
- Green Terminal glyph, "Claw Chat" → "Chat", colored gradient-outline app icons.
- Agent page: avatar↔activity-grid spacing + larger, uniform section fonts with
colored section-tinted tag chips.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
56 lines
2.5 KiB
Bash
56 lines
2.5 KiB
Bash
# Compact, recognizable powerlevel10k config — the signature two-line prompt
|
||
# (os icon · dir · git on the left; status · run-time · clock on the right;
|
||
# a ❯ prompt char on its own line) without the 1700-line wizard output.
|
||
# Requires a Nerd Font in the terminal (the app loads MesloLGS NF).
|
||
'builtin' 'local' '-a' 'p10k_config_opts'
|
||
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
|
||
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
|
||
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
|
||
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
|
||
|
||
() {
|
||
emulate -L zsh -o extended_glob
|
||
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
|
||
|
||
typeset -g POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
|
||
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||
typeset -g POWERLEVEL9K_MODE=nerdfont-complete
|
||
typeset -g POWERLEVEL9K_ICON_PADDING=moderate
|
||
|
||
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs newline prompt_char)
|
||
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status command_execution_time time)
|
||
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
||
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
|
||
|
||
# Prompt char: green ❯ on success, red on error.
|
||
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
|
||
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
|
||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
|
||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
|
||
typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
|
||
|
||
typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255
|
||
typeset -g POWERLEVEL9K_DIR_FOREGROUND=39
|
||
typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
|
||
typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
|
||
|
||
typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
|
||
typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=178
|
||
typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
|
||
|
||
typeset -g POWERLEVEL9K_STATUS_OK=false
|
||
typeset -g POWERLEVEL9K_STATUS_ERROR=true
|
||
typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=196
|
||
|
||
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=2
|
||
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
|
||
|
||
typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
|
||
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
|
||
|
||
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
|
||
}
|
||
|
||
(( ${#p10k_config_opts} )) && 'builtin' 'setopt' "${p10k_config_opts[@]}"
|
||
'builtin' 'unset' 'p10k_config_opts'
|