如何将Flatpak应用程序设置为自动启动?

问题描述 投票:0回答:1

我创建了一个应用程序并将其打包/发布为 Flatpak(以及其他)。该应用程序具有用户可以启用的设置,因此当用户登录其系统时该应用程序将自动启动。

此设置作为常规 Linux 应用程序运行良好,但是 Flatpak 打包应用程序似乎需要使用 dbus 方法来设置此设置,而这似乎对我不起作用。

根据 Flatpak 文档,我尝试使用 RequestBackground dbus 方法在登录时自动启动应用程序,但它不起作用 - 即使响应成功,返回报告

background
autostart
现在都是
true

如果我将普通应用程序作为

commandline
参数(如
gedit
)传递,它会按预期工作,并在我注销/登录时自动启动。然而,传递给它运行像
flatpak run <id>
这样的 Flatpak 的命令,甚至
/usr/bin/flatpak run <id>
似乎不起作用。我的 flatpak 应用程序如何设置为在用户登录系统时自动运行?


输出

使用

dbus-monitor
我可以捕获交互。

方法调用

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

回应

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
      )
   ]

启动日志

登录后检查日志以获取有关尝试启动的信息。

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

这里的这个错误(

bwrap: execvp /usr/bin/flatpak: No such file or directory
)似乎是相关的,但我不知道如何处理这些信息。

linux sandbox dbus flatpak
1个回答
0
投票

必须从 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
    
© www.soinside.com 2019 - 2024. All rights reserved.