如何获取作为 FlatPak 应用程序启动的窗口的可执行文件路径?

如何获取作为 FlatPak 应用程序启动的窗口的可执行文件路径?

我知道

xprop | awk '/PID/ {print $3}' | xargs ps

xprop | awk '/COMMAND/ {print $4}' | xargs which

与 deb 打包、AppImage 或 Snap 打包的 GUI 应用程序完美兼容。

但此方法不会为打包为 FlatPak 的应用程序提供可执行文件名。
见下面的示例:

$ flatpak run org.libretro.RetroArch

$ xprop 
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "RetroArch   (as superuser)"
WM_NAME(STRING) = "RetroArch  "
_NET_WM_ICON_GEOMETRY(CARDINAL) = 446, 744, 207, 24
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
XKLAVIER_STATE(INTEGER) = 0, -180379392
_NET_WM_STATE(ATOM) = 
WM_STATE(WM_STATE):
      window state: Normal
      icon window: 0x0
_NET_FRAME_EXTENTS(CARDINAL) = 3, 3, 23, 3
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
WM_CLIENT_MACHINE(STRING) = "norbert-UX32A"
_NET_WM_PID(CARDINAL) = 2
WM_CLASS(STRING) = "retroarch", "retroarch"
_NET_WM_ICON(CARDINAL) =  Icon (16 x 16):
                  
    ▓▓▓▓▓▓▓▓▓▓▓   
   ▓▓▓▓▓▓▓▓▓▓▓▓▓  
   ▓▓▓▓▓▓▓▓▓▓▓▓▓  
   ▓▓▓ ▓▓▓▓▓ ▓▓▓  
   ▓ ▓▓ ▓▓▓ ▓▓ ▓  
   ▓ ▓       ▓ ▓  
   ▓   ▓   ▓   ▓  
   ▓           ▓  
   ▓▓         ▓▓  
   ▓▓▓ ▓▓▓▓▓ ▓▓▓  
   ▓▓ ▓▓▓▓▓▓▓ ▓▓  
   ▓▓▓▓▓▓▓▓▓▓▓▓▓  
   ▓▓▓▓▓▓▓▓▓▓▓▓▓  
    ▓▓▓▓▓▓▓▓▓▓▓   
                  

因此,我在输出中看不到与 PID 或 COMMAND 相关的行xprop。但它当然已启动:

$ flatpak ps
Instance  PID   Application            Runtime
752290322 23857 org.libretro.RetroArch org.kde.Platform

如何在使用时获取 FlatPak 应用程序创建的窗口的 PIDxpropwmctrl类似的东西?

答案1

在大多数情况下,Flatpak 权限(沙盒)不允许这种情况发生。系统暴露的程度在某种程度上是可配置的,因此您谈论的哪个 Flatpak 可能与这个问题有关。关于这个和其他 Flatpak 相关主题的信息很多这里。

其中一个值得注意的部分是http://docs.flatpak.org/en/latest/sandbox-permissions.html

查找 flatpak 的可执行文件路径的另一种方法可能是检查配置文件:摘录如下。

flatpak 可以在系统范围或每个用户模式下运行。系统范围的数据位于 $prefix/var/lib/flatpak/,每个用户的数据位于 $HOME/.local/share/flatpak/。

除了默认安装位置外,还可以通过配置文件 /etc/flatpak/installations.d/ 定义更多系统范围的安装,该文件必须具有 .conf 扩展名,并且通常包含以下形式的安装路径Path=/location/of/installation。请参阅安装文档了解更多信息。

相关内容