summary refs log tree commit diff
path: root/.bashrc
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-09-28 19:17:59 +0200
committerRobert Günzler <r@gnzler.io>2022-09-28 19:17:59 +0200
commit351fe81a000a1b91c935abeec4c3a34ea4b6aff6 (patch)
treef1aeea0a7c25978323323358a4ad8a461cc4419c /.bashrc
parent2d048874d6307a28783e8e2f60f05b7c218aca63 (diff)
bashrc: add precmds to integrate with foot
Diffstat (limited to '.bashrc')
-rw-r--r--.bashrc43
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='