无法在AppImage应用中禁用「允许抑制快捷键」对话框

编程语言 2026-07-09

我在运行Fedora 44 Silverblue,正在把一个Flatpak应用(Amiberry)转换为AppImage,以便能把它与我正在开发的一个扩展一起打包。该应用在你点击主窗口时会捕捉鼠标和键盘,因此会显示「允许禁用快捷键」对话框,你可以同意或拒绝,并将该偏好保存以便下次启动时生效。

在应用以原始Flatpak形式运行时,这一切都正常,对话框只在首次启动时显示一次。将应用以AppImage形式启动时,偏好标志不会被保存,每次启动都无论如何都会显示对话框。

我尝试了两种方法:

  • 在AppImage应用运行之前执行 flatpak permission-set gnome shortcuts-inhibitor com.blitterstudio.amiberry.desktop GRANTED。只要也安装了Flatpak版本就能正常工作。如果没有安装Flatpak版本,这些设置似乎也会被忽略。
  • 先执行 gsettings set org.gnome.mutter.wayland xwayland-allow-grabs true,再执行 gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr,amiberry']"。这似乎没有任何效果。

对于第二个方案,我使用 lg 来尝试弄清楚 WM_CLASS 是给应用程序用的,但也许我理解错了。

我现在打算查看GNOME的源代码,试图弄清楚这个设置是如何被读取和写入的。有人有建议吗,告诉我如何调试,帮助AppImage应用在显示一次对话框后正确保存这个设置,或者能够禁用AppImage应用的这个对话框。

解决方案

不确定这是不是最好的解决方案,但做了更多研究后,我发现GNOME似乎使用在AppImage内执行的命令的名称,然后在 .local/share/applications 中查找同名的 .desktop 文件(在我的情况下是 amiberry.desktop)。如果找到该文件,那么对 amiberry.desktop 设置的权限就会正常工作。这也解释了为什么在安装Flatpak版本时它能够工作,因为这意味着存在一个 .desktop 文件。

总结如下:

  • 使用在AppImage内执行的二进制应用的名称,在 .local/share/applications 中创建一个同名的 .desktop 文件。
  • 使用 flatpak permission-set gnome shortcuts-inhibitor <binary_name>.desktop GRANTEDbusctl --user call org.freedesktop.impl.portal.PermissionStore /org/freedesktop/impl/portal/PermissionStore org.freedesktop.impl.portal.PermissionStore SetPermission sbssas gnome 1 shortcuts-inhibitor <binary_name>.desktop 1 GRANTED 来授予权限。
  • 尽情使用!
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章