diff --git a/home/.tmux/tab-name.sh b/home/.tmux/tab-name.sh index d048b61..593d6a2 100755 --- a/home/.tmux/tab-name.sh +++ b/home/.tmux/tab-name.sh @@ -12,6 +12,16 @@ case "$cmd" in *) name="$cmd" ;; esac +# In Codespaces, show friendly name without trailing random ID +# Codespace names: "adjective-noun-id" where id is alphanumeric gibberish +if [[ -n "$CODESPACE_NAME" ]]; then + friendly="${CODESPACE_NAME%-*}" + # If no hyphen was found, use full name + [[ "$friendly" == "$CODESPACE_NAME" ]] && friendly="$CODESPACE_NAME" + echo "cs:${friendly}" + exit 0 +fi + if (( ${#name} > max )); then echo "${name:0:$max}…" else diff --git a/home/.zsh/widgets.zsh b/home/.zsh/widgets.zsh index 50b8f17..52e9163 100644 --- a/home/.zsh/widgets.zsh +++ b/home/.zsh/widgets.zsh @@ -284,12 +284,20 @@ for line in sys.stdin: print(\">\", msg) except: pass " 2>/dev/null - ' --header 'enter=colby | ctrl-r=restricted | ctrl-s=continue latest' \ - --expect=ctrl-r,ctrl-s)" + ' --delimiter="|" --with-nth=1,3 \ + --header 'enter=resume | ^r=restricted | ^s=latest | ^n=new' \ + --expect=ctrl-r,ctrl-s,ctrl-n)" local fzf_rc=$? - [[ $fzf_rc -ne 0 && "$session" != ctrl-s* ]] && { zle reset-prompt; return; } + [[ $fzf_rc -ne 0 && "$session" != ctrl-s* && "$session" != ctrl-n* ]] && { zle reset-prompt; return; } local key=$(echo "$session" | head -1) local line=$(echo "$session" | tail -1) + # Ctrl+N — new session + if [[ "$key" == "ctrl-n" ]]; then + BUFFER="colby" + zle reset-prompt + zle accept-line + return + fi # Ctrl+S again — continue latest if [[ "$key" == "ctrl-s" ]]; then BUFFER="colby --continue"