From 92f792b5e43d2addb72719c70617364f2cd83759 Mon Sep 17 00:00:00 2001 From: Sheile Date: Fri, 6 Dec 2024 14:20:19 +0900 Subject: [PATCH 1/2] Prevent unintended PATH modification in zsh by renaming a conflicting variable --- scripts/helpers.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/helpers.sh b/scripts/helpers.sh index 20d87dcd..99a25f5b 100644 --- a/scripts/helpers.sh +++ b/scripts/helpers.sh @@ -98,9 +98,9 @@ pane_content_files_restore_from_archive() { resurrect_dir() { if [ -z "$_RESURRECT_DIR" ]; then - local path="$(get_tmux_option "$resurrect_dir_option" "$default_resurrect_dir")" + local dir="$(get_tmux_option "$resurrect_dir_option" "$default_resurrect_dir")" # expands tilde, $HOME and $HOSTNAME if used in @resurrect-dir - echo "$path" | sed "s,\$HOME,$HOME,g; s,\$HOSTNAME,$(hostname),g; s,\~,$HOME,g" + echo "$dir" | sed "s,\$HOME,$HOME,g; s,\$HOSTNAME,$(hostname),g; s,\~,$HOME,g" else echo "$_RESURRECT_DIR" fi From 41bf1f36b968ee9d563689e503b8dbe33f21d8b8 Mon Sep 17 00:00:00 2001 From: Sheile Date: Fri, 6 Dec 2024 15:10:39 +0900 Subject: [PATCH 2/2] Add save strategy to keep raw cmdline with zsh preexec hook and tpm --- save_command_strategies/linux_zsh_preexec.sh | 48 ++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 save_command_strategies/linux_zsh_preexec.sh diff --git a/save_command_strategies/linux_zsh_preexec.sh b/save_command_strategies/linux_zsh_preexec.sh new file mode 100755 index 00000000..6f455be0 --- /dev/null +++ b/save_command_strategies/linux_zsh_preexec.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +# Write following hook to ~/.zshrc to save raw cmdline +# +# # Save raw cmdline for tmux-resurrect +# if [[ -n "$TMUX_PLUGIN_MANAGER_PATH" ]]; then +# source $TMUX_PLUGIN_MANAGER_PATH/tmux-resurrect/scripts/helpers.sh +# mkdir -p "$(resurrect_dir)" +# touch $(resurrect_dir)/tmux_resurrect_cmdline +# +# # Clear cmdline which was generated by old process id when reuse it +# sed -i "/^$$:/d" $(resurrect_dir)/tmux_resurrect_cmdline +# +# function save_raw_cmdline_for_tmux_resurrect() { +# sed -i "/^$$:/d" $(resurrect_dir)/tmux_resurrect_cmdline +# echo "$$:$1" >> $(resurrect_dir)/tmux_resurrect_cmdline +# } +# autoload -Uz add-zsh-hook +# add-zsh-hook preexec save_raw_cmdline_for_tmux_resurrect +# fi + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $CURRENT_DIR/../scripts/helpers.sh + +PANE_PID="$1" +COMMAND_PID=$(pgrep -P $PANE_PID) + +exit_safely_if_empty_ppid() { + if [ -z "$PANE_PID" ]; then + exit 0 + fi +} + +find_raw_command() { + [[ -z "$COMMAND_PID" ]] && exit 0 + + if ! grep -q "^$PANE_PID:" $(resurrect_dir)/tmux_resurrect_cmdline; then + exit 0 + fi + + grep "^$PANE_PID:" $(resurrect_dir)/tmux_resurrect_cmdline | sed "s/^$PANE_PID://" +} + +main() { + exit_safely_if_empty_ppid + find_raw_command +} +main