私は、ユーザーDBusセッションによって提供されるすべての環境変数にアクセスできるsystemdユーザーサービスを実行する必要があります。ユニットの例を次に示します。shell.env.sh'Restart=on-failureRestartSec=5sStandardOutput=journalStandardError=journal[Install]WantedBy=default.targetエクスポートされるキーは次のとおりです。Lokiを使用しています)。XDG_RUNTIME_DIR+XDG_SEAT+XDG_SEAT_PATH+XDG_SESSION_DESKTOP+XDG_SESSION_ID+XDG_SESSION_PATH+XDG_SESSION_TYPE+XDG_VTNR+XMODIFIERSこの方法で何かを開始すると、さらに約30個の環境変数があります。ユースケースはこれです。ターミナルアプリケーションを起動するコンテキストのように、完全な環境でプロセスを開始できるようにします。wikiページには、ユーザーユニットの環境設定に関するヘルプがあります。import-environmentは、現在のすべての環境変数をsystemdユーザー環境にエクスポートします。代わりに、変数の明示的なリストを提供できます。show-environment前後。wikiは、私があまり成功しなかったdbus固有の代替手段についても言及しています。2私のソリューションでは、上記の@meuhのソリューションといくつかの掘り下げを考慮に入れています。いうダミーのユーザーユニットを作成することです。Target[Service]Type=oneshotRemainAfterExit=trueExecStart=/bin/true次のステップは、Bashスクリプトを作成することです。dbus-environment.service次に、このスクリプトをウィンドウマネージャーのスタートアップアプリケーションに追加します。このアプリケーションは、DBUSセッションおよびウィンドウマネージャー、Xなどで実行されることが保証されています。セッションログイン時に、スクリプトが呼び出され、すべてがsystemdユーザーデーモンにインポートされます。backupこの時点で、このサービスが開始されると、環境のインポートが保証されます。サービスではなくターゲットを使用する必要がありますが、その演習は待つ必要があります。