我有一个跨平台需要以编程方式打开gui应用程序,但对用户隐藏它。实际上,我希望命令行驱动的界面充当此gui应用程序的包装,并隔离最终用户以防止其查看或与其交互。该程序来自第三方,我没有编写,也无法编辑。
我可以在Windows,Linux和理论上在较旧版本的Mac(但不是最新版本)上以一种或另一种方式进行此操作。在Windows上,我可以将本机api ShellEx与hide window参数一起使用。这非常简单直接。在Linux中,我可以将gui应用渲染到虚拟帧缓冲区(使用xvfb)。
在macOS上,open
命令具有--hide
和--background
选项,但它们没有任何作用(至少在此应用上...)
我尝试更改plist文件,发现LSUIElement将对docker隐藏该应用程序,但它仍显示在屏幕上。 LSUIPresentationMode = 4或3应该可以解决这个问题,但是显然,从几个os版本之前起,它不再有任何作用...
我尝试了使用AppleScript将.app从屏幕移开的方法。那行得通,但是您必须手动授予权限,以便通过系统偏好设置发生这种情况。在Mac的早期版本中,这些权限可以通过sqlLite即时更改(只要您具有sudo权限即可),但现在它们也将其阻止了。您只能通过禁用“ SIP”并强制重新启动的过程来实现这一目标。那完全超出了我想要的范围。
我曾尝试过在Mac上使用xvfb方法(跳过箍以获取他们用来包含库存的二进制文件,然后丢弃),但是我对此并不走运。我认为不可能将mac .app定向到另一台显示器上吗? .app本质上不能在X11上渲染吗?
在Mac上隐藏第三方应用程序还有哪些其他聪明的方法? (而且在最新的os版本中仍然有效!)