linux/systemd: add comments explaining need for app- prefix

This commit is contained in:
Jeffrey C. Ollie
2025-07-16 10:53:19 -05:00
parent 2435cee11b
commit 959b2c8d7f

View File

@ -283,13 +283,23 @@ fn addLinuxAppResources(
b.fmt("share/dbus-1/services/{s}.service", .{app_id}), b.fmt("share/dbus-1/services/{s}.service", .{app_id}),
}); });
// systemd user service. This is kind of nasty but systemd // `systemd` user service. This is kind of nasty but `systemd` looks for
// looks for user services in different paths depending on // user services in different paths depending on if we are installed
// if we are installed as a system package or not (lib vs. // as a system package or not (lib vs. share) so we have to handle that
// share) so we have to handle that here. We might be able // here. We might be able to get away with always installing to both
// to get away with always installing to both because it // because it only ever searches in one... but I don't want to do that
// only ever searches in one... but I don't want to do that hack // hack until we have to.
// until we have to. //
// The XDG Freedesktop Portal has a major undocumented requirement
// for programs that are launched/controlled by `systemd` to interact
// with the Portal. The unit must be named `app-<appid>.service`. The
// Portal uses the `systemd` unit name figure out what the program's
// application ID is and it will only look at unit names that begin with
// `app-`. I can find no place that this is documented other than by
// inspecting the code or the issue and PR that introduced this feature.
// See the following code:
//
// https://github.com/flatpak/xdg-desktop-portal/blob/7d4d48cf079147c8887da17ec6c3954acd5a285c/src/xdp-utils.c#L152-L220
if (!cfg.flatpak) try ts.append(.{ if (!cfg.flatpak) try ts.append(.{
b.path("dist/linux/systemd.service.in"), b.path("dist/linux/systemd.service.in"),
b.fmt( b.fmt(