Answers:
是的,这是可能的,但是据我所知,这样做的唯一方法还隐藏了停靠图标。
您必须修改应用程序包中的名为“ Info.plist”的文件(即Sherlock.app/Contents/Info.plist)。在您喜欢的文本编辑器中打开此文件,并添加以下部分(如果已经存在,只需在字符串标签中将0更改为1):
<key>LSUIElement</key>
<string>1</string>
来源:隐藏任何程序的Dock图标-Macworld Mac OS X提示
在最新版本的macOS中,不应为LSUIElement设置字符串。相反,您需要使用如下所示的布尔值:
<key>LSUIElement</key>
<true/>
在OS X 10.8之前,请改用它(注意NS而不是LS):
<key>NSUIElement</key>
<string>1</string>
您可以在Info.plist中将LSUIElement设置为1作为字符串:
<key>LSUIElement</key>
<string>1</string>
它从应用程序切换器,Dock和强制退出窗口中删除应用程序。它还会删除菜单栏,因此它实际上不适用于Finder或iTunes。
编辑Info.plist会使TextEdit和Chess之类的某些应用程序在10.8中启动时崩溃。它也会使已签名应用程序的代码签名失效,因此不允许它们自动访问钥匙串。
http://www.cocoabuilder.com/archive/cocoa/141753-lsuielement-and-lsbackgroundonly.html:
NSUIElement已贬值。但是,我清楚地记得几年前在Apple(Apple DTS)工作时,NSUIElement和LSUIElement映射到同一件事(至少当我在那里时,它确实回来了,我怀疑那会改变)。尽管NSUIElement已贬值(当然,NS代表下一步!而LS代表启动服务),但就所有意图和目的而言,它们都是完全相同的。
LSUIElement和NSUIElement仍然可以使用,也都可以设置为true或1作为整数。
grep -A1 [LN]SUIElement /Applications/*/Contents/Info.plist
LSUIElement
(String
-OS X)指定该应用程序是否作为代理应用程序运行。如果此键设置为“ 1”,则启动服务将该应用程序作为代理应用程序运行。代理程序应用程序不会出现在Dock或“强制退出”窗口中。尽管它们通常是作为后台应用程序运行的,但是如果需要,它们可以成为前台来呈现用户界面。在属于代理应用程序的窗口上单击,将使该应用程序前进以处理事件。Dock和loginwindow是作为代理应用程序运行的两个应用程序。
女巫可以选择忽略应用程序:
我刚刚禁用了应用程序切换器和Dock。我主要使用键盘快捷键和Alfred来切换应用程序。
LSUIElement
在Slack的info.plist中进行设置会导致它在启动时崩溃。
免责声明:我开发了GhostTile
简短的答案:只需尝试GhostTile即可。虽然已付费,但是您可以尝试的尽可能长(从Sublime Text中窃取想法)
长答案:
AFAIK,有两种方法可以实现此目的:
1.将应用程序设置为代理。例如,将LSUIElement
密钥添加到App的Info.plist或将App的激活策略设置为NSApplicationActivationPolicyAccessory
。
2. Hook Dock或其他相关系统进程忽略某些应用程序。感谢El Captian的SIP(Rootless)。不建议这样做。
GhostTile专注于从Dock隐藏应用程序。它易于使用,并提供多种方式来管理您隐藏的应用程序。没有磁盘上的修改,因此您不会破坏应用程序的代码签名。
其它功能:
抱歉,聚会晚了,但是确实如先前的回答和评论所述,这可能会使某些应用程序在启动时崩溃。尽管我曾经能够在另一台Mac上使它工作,但是我无法在优胜美地进行这项工作。更改TotalTerminal Info.plist并没有做任何事情,并且更改了Applications/Utilities/Terminal/Info.plist
导致崩溃的原因。
作为@atreat在评论中提及了,从球员TotalTerminal是现在支持这种隐藏通过一个简单的命令:
defaults write com.apple.Terminal TotalTerminalHideDockIcon -bool YES
这对我来说非常有效。
如果您使用的是iPhone,并且从App Switcher隐藏应用程序时遇到类似的问题,则可以安装BlacklistSwitcher9之类的东西。