在Mac上,是否有任何不错的,稳定的方法可将窗口始终保持在顶部?


82

我正在寻找一种稳定的方法来使OSX上的所有窗口始终保持“始终在最前面”。

Afloat,一个需要SIMBL / easySIMBL的应用程序,它似乎不是很稳定。

有更好的解决方案吗?实在令人惊讶的是,没有实现此目标的本机方法。


2
OSX的HIG不允许这样做,因此从未在窗口系统的任何位置对其进行编程。通常,这意味着您试图以错误的方式解决问题,或者您使用的应用程序编写不正确,并且没有执行所需的操作。实际的解决方案或者需要对问题进行更好的解释,或者需要程序员来修复应用。
约翰·基茨

2
让用户将其选择窗口设置为始终位于其他窗口之上可能会导致不良和意外的行为。屏幕保护程序也只是一个窗口-您想在其上方浮动吗?那重要的警报呢?如果两个应用要求始终处于最佳状态怎么办?从理论上讲,您可以通过将全屏应用放在顶部并将其注销来对用户进行DoS。这就是为什么可可中没有“始终位于最上面”的属性。只能指定一个相对的Z索引(Apple敦促不要这样做)。您的选择基本上是重新编码应用程序,或使用SIMBL。
JJ

您是否正在为Mac OS中的任何应用程序执行此操作?如果是这样,您是否希望它始终具有焦点(即按一下键和单击鼠标),还是希望某个应用程序的窗口“浮动”在所有其他窗口之上,而不是处于活动状态?
kenjikato

7
FWIW Fedora一直允许这样做(自从90年代中期开始以RH形式出现),而我从来没有遇到过“不必要”的问题。它只是没有在OSX的时候它可以在放。
nerak99

1
John Keates-不幸的是,您不知道您在说什么。Xcode中这样做是非常行为与他们的模拟器,保持它在所有其他窗口的前面,并且存在这种行为了很多年,直到他们终于在Xcode 9.删除它
Logicsaurus雷克斯

Answers:


25

我会注意到,iOS Simulator已经/具有该选项Stay in Front。极其有用的功能,并证明存在Apple支持和认可的方法来实现此行为。

可能值得打开雷​​达,尤其是在添加到Terminal时。

您可以复制我的雷达

错误ID 27430873:在“终端”窗口中添加“停留在前面”选项。

在iOS Simulator中保持在最前面的选项

不幸的是,Xcode 9在iOS模拟器中删除了此功能。也请复制我的Apple错误报告以将其恢复!

错误ID 32852924:Xcode 9 iOS模拟器缺少“停留在前面”选项

Apple的Activity Monitor应用程序类似地具有将Keep CPU Windows on Top小型CPU图形浮动在所有其他应用程序窗口之上的选项:

活动监视器>窗口>将CPU窗口保持在顶部


1
这是什么iOS模拟器?像模拟器吗?我一直在寻找一个。
发出声音

@ tjt263 iOS模拟器与Xcode捆绑在一起,主要用于开发iOS应用
pkamb

1
哦好的。什么是雷达?像错误报告一样?
声音

@ tjt263是的,bugreport.apple.com
pkamb

3
预先安装的“活动监视器”中也显示了此功能-如果您转到“窗口”菜单,则会看到“将CPU窗口保持在顶部”的选项-因此确实确实存在官方的Apple做到这一点的方法。(这是我在10.13.2上看到的内容)
密钥位'17

16

如果您只是想说一个互联网浏览器窗口,则可以查看开源的Helium应用。它是免费的,您也可以下载源代码并根据需要编译自己的版本。

基本上,这是一个始终在所有其他窗口上方浮动的Internet浏览器。 氦气应用

编辑:

Apple Mac App Store中还有一个名为Fluid Browser的较新应用程序,它将执行相同的操作。它的确花费了几美元,但它的性能出色,并且功能比Helium(截至2016年7月6日)更多。因此,您现在有两个不同的应用程序可供选择。

流体浏览器


我不喜欢Fluid Browser的体验。是的,它还有更多功能,但是它很麻烦而且很麻烦。氦气非常轻巧,但确实可以做到。
Winterflags '16

1
您可以在氦气或液体中屏蔽广告吗?
Powder366 '17

5

如果您只想/需要Terminal.app窗口的“保持在顶部”功能(如我本人),则可以使用Quake / Guake样式的下拉式遮阳板SIMBL插件插件支持固定到前台。TotalTerminal

尽管有普遍的误解,但事实并非如此,所以这是有可能的。

MacOS 10.11(El Capitan)开始,要安装/运行TotalTerminal,您可能需要禁用  系统完整性保护

csrutil enable --without debug

它不再是开源的,但是最新的开源实现仍在GitHub可用。因此,如果您愿意,可以确切地研究它是如何实现的。我给开发人员发了电子邮件,问他们,但是他们从事这项工作已经很久了,他们不能(或者不会?)真的告诉我。


这些天不再维护TotalTerminal。我最终切换到的iTerm以获得相同的行为:apple.stackexchange.com/questions/48796/...
安德烈Morujão

是的,我不建议您使用它。但是,如果有人有动力实施自己的解决方案,那么值得浏览链接的源代码。
声音

对于浮动终端,我将氦气与盖蒂一起使用。gotty允许您在Web浏览器中打开终端,而Helium是一个浮动Web浏览器。
wesley6j

您确实,确实,确实,而且我确实是真的,确实需要注意,在做完文档后,您应该重新启用SIP。
Pryftan

@Pryftan不,SIP是对猫的。
声音

5

我刚刚放弃了mySIMBLE并开始流动。Fenêtre两家是支付应用与作品真的很好免费的精简版的版本。

我在工作时使用它在窗口中播放视频窗口,或将在线说明放在顶部。不确定要使用什么?


3

据我所知,Mac App Store中有一个名为Key Codes的免费应用程序,它位于所有其他窗口的顶部。除菜单项外,它位于所有其他应用程序的顶部,包括终端和Safari URL栏。


11
如果操作人员特别需要该特定应用程序保持领先,则可以给Seamus锦上添花。现在,如果假设地想当然地说,如果他想让其他应用程序排在最前面,或者甚至是几个不同的应用程序排在最前面,那么也许不是那么英镑吗?
mysomic

2
谢谢!对于“请闭塞这可怕的事情”的用例,效果很好。
ecmanaut

3

并不是真正的答案,而更像是一种变通方法:您可以使用Spectacle或类似的应用来快速设置桌面布局,以使您可以跟随原始窗口。

当然,当您等待其他人加入支持聊天时,这无济于事,同时您决定用自己的时间来做些比盯着空白窗口更有用的事情-例如在另一个虚拟桌面上工作:(

从这里抢眼镜:https : //www.spectacleapp.com


欢迎来到Ask Different,并抽出宝贵时间发表答案。作为改进建议,您应该提供指向您帖子中引用的应用程序的链接。它提供了更好的用户体验。有关制作一个好的答案的更多信息,请参见: apple.stackexchange.com/help/how-to-answer
艾伦(Allan)

2
您好艾伦,非常感谢您帮助将AskDifferent变成一个整洁的地方,我将按照您的指示进行操作。干杯。
i90rr

2

只需在输入F3后将终端拖到野生动物园窗口中即可。

例如,这会自动将终端垂直排列在safari窗口的右侧...因此,您可以在其他窗口中做一些工作并可以访问终端。


当我尝试此操作时,什么都没有发生。终端窗口仅返回到原始位置。
jmh


2

如果您是开发人员并且您的SIP被禁用(csrutil),则可以更改using的level属性。在XCode中附加到进程(即App Store)后,只需键入:NSWindowlldb

(lldb) e NSWindow *$window = [(NSArray *)[NSApp windows] firstObject]
(lldb) po $window
<NSWindow: 0x600000d64200>

(lldb) po [$window setLevel:3]
resume debugging

PS:如果应用程序有多个窗口,请使用命令获取正确的窗口

(lldb) po [NSApp windows]

要返回,只需关闭窗口或使用

(lldb) po [$window setLevel:0]

在此处输入图片说明 在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.