From 351fe81a000a1b91c935abeec4c3a34ea4b6aff6 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 28 Sep 2022 19:17:59 +0200 Subject: bashrc: add precmds to integrate with foot --- .bashrc | 43 ++++++++++++++++++++++++++++++++----------- 1 file 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=' -- cgit 1.4.1