shpool + kitty 疑难杂症

https://github.com/shell-pool/shpool/discussions?discussions_q=vscode

~/.zshrc 默认启动&进入shpool attach

why

最新版vscode会执行类似 /bin/zsh -ilc echo -n "_ENV_DELIMITER_"; command env; echo -n "_ENV_DELIMITER_"; exit 来获取环境变量,否则会报错:

无法解析 shell 环境: 来自生成的 shell 的意外退出代码(代码 1、信号 null)

解决方案: code.desktop 添加 TERM_PROGRAM=vscode

Exec=env TERM_PROGRAM=vscode /usr/share/code/code %F
# 读取自身启动时的argv
PROC_CMD=$(tr '\0' ' ' < /proc/$$/cmdline)

# 避免无限嵌套shpool,兼容vscode的环境嗅探
if [[ -z "$TERM_PROGRAM" && -z "$SHPOOL_SESSION_NAME" ]]; then
  shpool=/home/n/.cargo/bin/shpool
  PWD_3=$(echo $PWD | awk -F/ '{print $(NF-2)"/"$(NF-1)"/"$NF}')
  [[ "$PWD_3" == "/home/n" ]] && PWD_3=""
  name="$(date +%u%I%M%S)$PWD_3"
  #name=shpool
  #if $shpool list --json | jq -e ".sessions | any(.name == \"$name\" and .status == \"Attached\")" >/dev/null; then
  #  name="$(date +%M%S)"
  #fi
  exec $shpool attach --ttl 7d "$name"
fi

alias shpool-kill-all="shpool list | tail -n +2 | cut -f1 | xargs shpool kill"
alias shpool-kill-disconnected="shpool list | grep disconnected | awk '{print $1}' | xargs -r shpool kill"

thunar 在终端打开无效

exo-open --working-directory %f --launch TerminalEmulator
kitty --directory %f

https://github.com/shell-pool/shpool/issues/111

posted @ 2026-07-02 19:29  Nolca  阅读(3)  评论(0)    收藏  举报