グラフィカルセッションの一部としてのみ実行されるシステムユーザーサービスを作成する方法は?

グラフィカルセッションの一部としてのみ実行されるシステムユーザーサービスを作成する方法は?

成功したグラフィックデスクトップログイン後、一部のプログラム(GnomeやXmonadなど)を自動的に起動し、ログアウト時に自動的に停止したいと思います。~/.config/systemd/user/synergys.service上記のタスクを正しく実行するようにファイルを変更するにはどうすればよいですか?

これでサービスを有効にした後によれば、journalctl --userログイン時にサービスが開始しようとしましたが失敗します。

Invalid MIT-MAGIC-COOKIE-1...

私はこれが基本的に表示されないことを意味すると思います。ログイン後に手動で起動しても大丈夫です。WantedBy=default.targetGUIログインに限定されず、テキストログインでもサービスがトリガーされるため、サービスが表示される前に早すぎるようです。

私はこれを試しましたが、graphical-session.target役に立ちませんでした。これはUbuntu 20.04にあります。

[Unit]
Description=Synergy Server

[Service]
ExecStart=/usr/bin/synergys --no-daemon --no-tray --address :: --serial-key XXXX --enable-crypto
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

プログラムをデスクトップセッション「起動」プログラムとして手動で実行できることはわかっていますが、この方法は失敗した場合に自動再試行を提供しません。

ベストアンサー1

私のユーザーサービスが実行される前にX11スタック全体が開始されるグラフィカルセッションの後に実行されるX11サービスを登録するための同様のユースケースがあります。

X11プログラムはサービス環境に環境変数を設定する必要がありますDISPLAY。それ以外の場合は起動に失敗します。XAUTHORITY残念ながら、どのsystemdターゲットがこれらの環境変数を公開しているかはよく説明されていません。

私のGNOMEデスクトップで、私のサービスを次に実行するように指定できます。graphical-session.target

[Install]
WantedBy=graphical-session.target

また見なさい:https://superuser.com/q/759759/194998

おすすめ記事