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

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

成功したグラフィックデスクトップログイン後、一部のプログラム(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

答え2

次の方法を試してみましたか?

[Unit]
Description=Synergy Server
After=graphical-session.target
BindsTo=graphical-session.target
PartOf=graphical-session.target
Requisite=graphical-session.target
ConditionEnvironment=DISPLAY
ConditionEnvironment=XAUTHORITY

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

[Install]
WantedBy=graphical-session.target
  1. systemctl --user daemon-reload
  2. systemctl --user enable --now <the service unit>
  3. (2)が有効な場合は、ログアウトしてから再度ログインすると、GUIが自動的に起動します。

@プル

これはGnomeログインセッションでは機能しますが、xmonadログインセッションではサービスが開始されないため、xmonadログインセッションでは機能しません。

設定がシンボリックリンクxmonadと正しく統合されていることをsystemd確認してください。以下を参照してください。display-manager.serviceman systemd.special


添付:

  • 以下の行のいくつかは[Unit]必要ないかもしれませんが、より明確にするためにその行に入れました...
  • これがうまくいかないと、アイデアはありません。

関連情報