
私はPop-OSでGnomeを実行しています! 20.04。
私はシェルを使用していterminator
ますzsh
。fortune
Xセッションで初めて使用したときにのみzshシェルを起動したいと思います。
私は次のことを試しました.zshrc
。
### count the lines of
ps -ax | grep zsh
ps -ax | grep /zsh
###
[ -z "$(pidof zsh)" ] && fortune
PS:この質問に適したタグを見つけるのに問題があります。
答え1
正確な「Xセッションごとに1回」の要件を考慮すると、現在のXセッションで実行されている操作に関する情報を格納する最も自然な場所はXサーバーの状態です。実際、Xサーバーにはカスタムグローバルデータ用のスペースはありませんが、いつでも変更できるカスタムグローバル構成用のスペースがあります。これはここで私たちの目的に十分近いです。XResources。 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
テストオプションの設定を解除するには、次の手順に従ってください。
xrdb -load <(xrdb -query | grep -v '^pietrodito\.session\.ran-fortune:)
これは原子的ではありません。fortune
zsh インスタンスをほぼ同時に起動すると、複数回実行できます。
答え2
fortune
他のzshシェルが実行されていない場合にのみ起動されます。
[[ "$(pidof zsh)" == *' '* ]] || fortune