Files
dotfiles/home/.aliases
Andrejus 9281586527 aliases: copilot tmux wrap, cs simplification
- Add _copilot_tmux_wrap for tmux window renaming on copilot sessions
- Convert copilot/colby from aliases to wrapped functions
- Simplify cs() to use gh cs ssh interactive picker
- Background tmux automatic-rename on to avoid blocking

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:12:48 +00:00

105 lines
3.8 KiB
Plaintext

alias bench='ZSH_BENCH=1 exec zsh'
alias dots='cd $DOTFILES'
alias j='z'
alias ji='zi'
alias reload='source ~/.zshrc'
alias reload-path='rm -f "${XDG_CACHE_HOME:-$HOME/.cache}/dots/path" && exec zsh'
alias reload-cache='rm -rf "${XDG_CACHE_HOME:-$HOME/.cache}/dots" ~/.zcompdump* && exec zsh'
alias zen='curl -s https://api.github.com/zen && echo'
alias la='ls -la'
alias vi='vim'
copilot() { _copilot_tmux_wrap gh copilot "$@"; }
if [[ -z "${CODESPACES:-}" ]]; then
cs() {
local codespace="${1:-}"
if [[ -z "$codespace" ]]; then
gh cs ssh
return
fi
[[ -n "$TMUX" ]] && tmux rename-window "cs:${codespace%-*}"
trap '[[ -n "$TMUX" ]] && (tmux set automatic-rename on &)' EXIT INT TERM
gh cs ssh -c "$codespace"
local rc=$?
trap - EXIT INT TERM
[[ -n "$TMUX" ]] && (tmux set automatic-rename on &)
if (( rc == 0 )); then
local log="${XDG_DATA_HOME:-$HOME/.local/share}/ssh/log"
mkdir -p "$(dirname "$log")"
printf '%s cs:%s\n' "$(date +%s)" "$codespace" >> "$log"
fi
return $rc
}
fi
_copilot_tmux_wrap() {
local session_dir="$HOME/.copilot/session-state"
if [[ -n "$TMUX" ]]; then
local title="" id="" prev=""
for arg in "$@"; do
if [[ "$prev" == "--resume" ]]; then id="$arg"; break; fi
if [[ "$arg" == --resume=* ]]; then id="${arg#--resume=}"; break; fi
prev="$arg"
done
if [[ -n "$id" ]]; then
title=$(sed -n 's/^summary: //p' "$session_dir/$id/workspace.yaml" 2>/dev/null)
elif [[ " $* " == *"--continue"* ]]; then
title=$(sed -n 's/^summary: //p' "$(ls -t "$session_dir"/*/workspace.yaml 2>/dev/null | sed -n '1p')" 2>/dev/null)
fi
[[ -n "$title" ]] && tmux rename-window "co:$title"
trap '(tmux set automatic-rename on &)' EXIT INT TERM
fi
"$@"
trap - EXIT INT TERM
[[ -n "$TMUX" ]] && (tmux set automatic-rename on &)
}
colby() { _copilot_tmux_wrap gh copilot --allow-all-tools --allow-all-paths "$@"; }
alias gs='git s'
alias gd='git d'
alias gdc='git dc'
alias gc='git c'
alias gl='git ld'
alias ga='git a'
alias gr='git r'
alias gw='git show'
alias gf='git f'
alias gp='git p'
alias donut='tmux lock-session'
gdm() { local base="${1:-$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@refs/remotes/origin/@@' || echo main)}"; git diff "${base}...HEAD"; }
# fzf workflows
gb() { local b; b="$(git branch --all --sort=-committerdate --format='%(refname:short)' | fzf --preview 'git log --oneline --color -20 {}')" && git checkout "${b#origin/}"; }
glo() { git log --oneline --color --decorate | fzf --ansi --preview 'git show --color --stat {1}' --bind 'enter:become(echo {1})'; }
f() { local f; f="$(fzf --preview 'preview {}')" && ${EDITOR:-vim} "$f"; }
if [[ -z "${CODESPACES:-}" ]]; then
ssh() {
local ssh_target="${@: -1}"
[[ -n "$TMUX" ]] && tmux rename-window "ssh:$ssh_target"
trap '[[ -n "$TMUX" ]] && (tmux set automatic-rename on &)' EXIT INT TERM
command ssh "$@"
local rc=$?
trap - EXIT INT TERM
[[ -n "$TMUX" ]] && (tmux set automatic-rename on &)
if (( rc == 0 )); then
local host="$ssh_target"
local ssh_log="${XDG_DATA_HOME:-$HOME/.local/share}/ssh/log"
mkdir -p "$(dirname "$ssh_log")"
if [[ "$ssh_target" == *@* ]]; then
local user="${ssh_target%%@*}"
host="${ssh_target#*@}"
local config_file="$HOME/.ssh/config.d/auto"
mkdir -p "$HOME/.ssh/config.d"
if ! grep -q "^Host $host$" "$config_file" 2>/dev/null; then
printf '\nHost %s\n HostName %s\n User %s\n' "$host" "$host" "$user" >> "$config_file"
fi
fi
printf '%s %s\n' "$(date +%s)" "$host" >> "$ssh_log"
fi
return $rc
}
s() { local h; h="$(_dots_ssh_hosts | fzf)" && ssh "$h"; }
fi