diff options
| author | Robert Günzler <r@gnzler.io> | 2022-09-28 19:17:59 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-09-28 19:17:59 +0200 |
| commit | 351fe81a000a1b91c935abeec4c3a34ea4b6aff6 (patch) | |
| tree | f1aeea0a7c25978323323358a4ad8a461cc4419c | |
| parent | 2d048874d6307a28783e8e2f60f05b7c218aca63 (diff) | |
bashrc: add precmds to integrate with foot
| -rw-r--r-- | .bashrc | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/.bashrc b/.bashrc index 6ce375c..0d60db9 100644 --- a/.bashrc +++ b/.bashrc @@ -58,22 +58,43 @@ eval "$(keychain --eval --agents ssh,gpg -q id_ed25519)" # AF6AB8C8B10436B9F6129 # fi # } +# set window title +_set_win_title() { + printf '\033]0;%s\007' "${PWD} (${HOSTNAME}) - FOOT" +} + # OSC7 escapte sequence -# https://codeberg.org/dnkl/foot/wiki#user-content-how-to-configure-my-shell-to-emit-the-osc-7-escape-sequence -_urlencode() { - local length="${#1}" - for ((i = 0; i < length; i++)); do - local c="${1:$i:1}" - case $c in - %) printf '%%%02X' "'$c" ;; - *) printf "%s" "$c" ;; +# https://codeberg.org/dnkl/foot/wiki#spawning-new-terminal-instances-in-the-current-working-directory +_osc7_cwd() { + local strlen=${#PWD} + local encoded="" + local pos c o + for ((pos = 0; pos < strlen; pos++)); do + c=${PWD:$pos:1} + case "$c" in + [-/:_.!\'\(\)~[:alnum:]]) o="${c}" ;; + *) printf -v o '%%%02X' "'${c}" ;; esac + encoded+="${o}" done + printf '\e]7;file://%s%s\e\\' "${HOSTNAME}" "${encoded}" } -_osc7_cwd() { - printf '\e]7;file://%s%s\e\\' "$HOSTNAME" "$(_urlencode "$PWD")" +# PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }_osc7_cwd + +# OSC133 command prompt marker +# https://codeberg.org/dnkl/foot/wiki#jumping-between-prompts +_osc133_marker() { + printf '\e]133;A\e\\' +} +# PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }_osc133_marker + +# starship precmd +_starship_precmd_user() { + _osc7_cwd + _osc133_marker + _set_win_title } -PROMPT_COMMAND+=";_osc7_cwd" +starship_precmd_user_func="_starship_precmd_user" # Alias shell commands # alias logout='dbus-send --session --type=method_call --print-reply --dest=' |