From 2435cee11bc170c3c63089d5ff348ccb906b706d Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Wed, 16 Jul 2025 09:33:02 -0500 Subject: [PATCH] linux/systemd: add an app- prefix to the systemd unit 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-.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 This may fix many people's issues with getting global shortcuts to work. Note that this is a breaking change if you have been using Ghostty compiled from source since #7433 was merged. You will need to ensure that any Ghosty systemd unit files _not_ prefixed with `app-` are deleted. Original discussion/PR in the XDG Desktop Portal repository: https://github.com/flatpak/xdg-desktop-portal/issues/579 https://github.com/flatpak/xdg-desktop-portal/pull/719 Originally discussed on Discord: https://discord.com/channels/1005603569187160125/1394845362186879026 Co-authored-by: ambareeshbalaji@gmail.com --- dist/linux/dbus.service.in | 2 +- src/build/GhosttyResources.zig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/linux/dbus.service.in b/dist/linux/dbus.service.in index 2f782a7ed..df31a1abd 100644 --- a/dist/linux/dbus.service.in +++ b/dist/linux/dbus.service.in @@ -1,4 +1,4 @@ [D-BUS Service] Name=@APPID@ -SystemdService=@APPID@.service +SystemdService=app-@APPID@.service Exec=@GHOSTTY@ --launched-from=dbus diff --git a/src/build/GhosttyResources.zig b/src/build/GhosttyResources.zig index ef04b21fd..02f3230af 100644 --- a/src/build/GhosttyResources.zig +++ b/src/build/GhosttyResources.zig @@ -293,7 +293,7 @@ fn addLinuxAppResources( if (!cfg.flatpak) try ts.append(.{ b.path("dist/linux/systemd.service.in"), b.fmt( - "{s}/systemd/user/{s}.service", + "{s}/systemd/user/app-{s}.service", .{ if (b.graph.system_package_mode) "lib" else "share", app_id,