Mer*_*itt 5 linux dbus sandbox flatpak
我创建了一个应用程序并将其打包/发布为 Flatpak(以及其他)。该应用程序具有用户可以启用的设置,因此当用户登录其系统时该应用程序将自动启动。
此设置作为常规 Linux 应用程序运行良好,但是 Flatpak 打包应用程序似乎需要使用 dbus 方法来设置此设置,而这似乎对我不起作用。
根据 Flatpak 文档,我尝试使用RequestBackground dbus 方法在登录时自动启动应用程序,但它不起作用 - 即使响应成功,返回报告两者background&autostart现在都是true.
如果我传递一个普通应用程序作为commandline参数,gedit它会按预期工作,并在我注销/登录时自动启动。然而,向它传递命令来运行 Flatpak 之类的命令flatpak run <id>,或者甚至/usr/bin/flatpak run <id>似乎不起作用。我的 flatpak 应用程序如何设置为在用户登录系统时自动运行?
使用dbus-monitorI 可以捕获交互。
method call time=1690393997.911834 sender=:1.74 -> destination=:1.115 serial=2703 path=/org/freedesktop/portal/desktop; interface=org.freedesktop.impl.portal.Background; member=EnableAutostart
string ""
boolean true
array [
string "/usr/bin/flatpak"
string "run"
string "codes.merritt.Nyrna"
]
uint32 0
method return time=1690393997.912268 sender=:1.115 -> destination=:1.74 serial=1674 reply_serial=2703
boolean true
Run Code Online (Sandbox Code Playgroud)
signal time=1690393997.912469 sender=:1.74 -> destination=:1.751 serial=2704 path=/org/freedesktop/portal/desktop/request/1_751/dart1647111112; interface=org.freedesktop.portal.Request; member=Response
uint32 0
array [
dict entry(
string "background"
variant boolean true
)
dict entry(
string "autostart"
variant boolean true
)
]
Run Code Online (Sandbox Code Playgroud)
登录后检查日志以获取有关尝试启动的信息。
journalctl -xe | grep Nyrna
Jul 24 13:38:03 shodan systemd[17012]: Started app-flatpak-codes.merritt.Nyrna-250100.scope.
Jul 24 13:38:03 shodan systemd[17012]: Started app-gnome-codes.merritt.Nyrna-250100.scope - Application launched by gnome-session-binary.
Jul 24 13:38:03 shodan codes.merritt.Nyrna.desktop[250440]: bwrap: execvp /usr/bin/flatpak: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这里的这个错误(bwrap: execvp /usr/bin/flatpak: No such file or directory)似乎是相关的,但是我不确定如何处理这些信息。
必须从 Flatpak 包内访问该门户。无法通过调试会话测试实现。
将参数设置commandline为应用程序的可执行文件名称,门户将自动将该flatpak run部分添加到命令中。
因为它是从 Flatpak 包中运行的,所以该环境和门户知道在哪里可以找到应用程序的可执行文件,即使它通常不在PATH.
门户将在主机文件系统上为~/.config/autostart(或$XDG_CONFIG_HOME)中的应用程序创建一个可以检查的桌面文件:
~/.config/autostart/codes.merritt.Nyrna.desktop
[Desktop Entry]
Type=Application
Name=codes.merritt.Nyrna
Exec=flatpak run --command=nyrna codes.merritt.Nyrna
X-Flatpak=codes.merritt.Nyrna
Run Code Online (Sandbox Code Playgroud)