martyr-deepin / deepin-terminal-gtk

DDE terminal emulator application
GNU General Public License v3.0
263 stars 57 forks source link

使用zsh时无法识别当前目录 #90

Closed wangzk closed 3 years ago

wangzk commented 5 years ago

如果当前的本地shell是zsh的时候,deepin-terminal在标签页上无法识别当前的目录,导致标签页没有名称。

具体情况见下图。

image

BLumia commented 5 years ago

我这边使用 oh-my-zsh 的时候是正常的,你看看 echo $PS1 的输出?

wangzk commented 5 years ago

echo $PS1的结果是%B%{%}%(4~|%-1~/.../%2~|%~)%u%b >%{%}>%B%(?.%{%}.%{%})>%{%}%b

估计和这里面包含太多环境变量有关?

BLumia commented 5 years ago

不清楚,回头我试一下看看能不能复现.. 我目前的 zsh 相关配置是这个

PS. 感兴趣的话,可以看看:

https://github.com/linuxdeepin/deepin-terminal/blob/ffd360847bb66f443ebc2b9bc4a738109e9280a7/widget/terminal.vala#L758-L803

,以及如果有兴趣自己构建的话,建议把 Vendor lib 关掉(cmake 的时候 -DUSE_VENDOR_LIB=OFF

zhaoyunxing92 commented 5 years ago

这个问题解决了吗,我的也oh-my-zsh也识别不到当前目录

zhaoyunxing92 commented 5 years ago

我的echo $PS1 ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)

BLumia commented 5 years ago

没有抽出时间处理,如果有兴趣的话建议按上面给出的相关源码看看原因是啥 - -||

xausky commented 5 years ago

调试半天发现不是 deepin-terminal 的锅,以下配置加到 .zshrc 就好了。

case $TERM in
  xterm*)
    precmd () {print -Pn "\e]0;%n@%m:%~\a"}
    ;;
esac

不过 deepin-terminal 的标题获取逻辑还是有问题,vte_window_title 获取不到应该显示 "终端" ( 仿照 gnome-terminal ) 或者 _("deepin") 而不是现在的全黑了。

justforlxz commented 3 years ago

Sorry, this issue will be closed soon. If it is necessary to discuss it again, please create a new issue.