Xセッションの最初のシェルの起動時にコマンドを起動するにはどうすればよいですか?

Xセッションの最初のシェルの起動時にコマンドを起動するにはどうすればよいですか?

私はPop-OSでGnomeを実行しています! 20.04。

私はシェルを使用していterminatorますzshfortuneXセッションで初めて使用したときにのみ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:)

これは原子的ではありません。fortunezsh インスタンスをほぼ同時に起動すると、複数回実行できます。

おすすめ記事