我在 Pop-OS 上运行 Gnome!20.04。
我正在使用terminator和zsh外壳。我只想fortune在第一次在 X 会话中使用 zsh shell 时启动。
我在以下方面尝试过这些事情.zshrc:
### count the lines of
ps -ax | grep zsh
ps -ax | grep /zsh
###
[ -z "$(pidof zsh)" ] && fortune
Run Code Online (Sandbox Code Playgroud)
PS:我很难为这个问题找到合适的标签
考虑到“每个 X 会话一次”的精确要求,存储在当前 X 会话中已经完成的信息的最自然的位置是 X 服务器的状态。在 X 服务器上并没有真正的自定义全局数据的预期位置,但是有一个可以随时更改的自定义全局配置的位置,这对于这里的目的来说已经足够接近了:X resources。操作 X 资源的命令行工具是xrdb.
请注意,这xrdb很古怪,而且 X.org 实现存在长期存在的错误。您可能不想使用xrdb -load(删除所有以前加载的配置文件)或xrdb -remove(删除所有以前加载的配置,不像它应该做的那样)。
未经测试的代码.zshrc:
if [[ -n ${DISPLAY:+set} ]] && whence xrdb >/dev/null; then
if xrdb -query | grep -q '^pietrodito\.session\.ran-fortune:.*true'; then
fortune
xrdb -merge <<<'pietrodito.session.ran-fortune: true'
fi
fi
Run Code Online (Sandbox Code Playgroud)
要取消设置测试选项:
xrdb -load <(xrdb -query | grep -v '^pietrodito\.session\.ran-fortune:)
Run Code Online (Sandbox Code Playgroud)
请注意,这不是原子的。fortune如果您几乎完全在同一时间启动 zsh 实例,则可能会运行多次。