Есть ли хорошие, стабильные способы сохранить окно «Всегда сверху» на Mac?


82

Я ищу стабильный способ держать любое окно «всегда сверху» в OSX.

На плаву , приложение, которое делает это, требует SIMBL / easySIMBL, которая, кажется, не очень стабильна.

Есть ли лучшие решения? Это на самом деле удивительно, что нет собственного способа реализовать это.


2
HIG OSX не позволяет этого, и поэтому он никогда не был запрограммирован в оконной системе. Обычно это означает, что вы пытаетесь решить проблему неправильно, или приложение, которое вы используете, плохо написано и не выполняет то, что ему нужно. Для реальных решений потребуется либо лучшее объяснение проблемы, либо программист, чтобы исправить приложение.
Джон Китс

2
Разрешение пользователю устанавливать свое окно выбора всегда поверх других окон может привести к нежелательному и неожиданному поведению. Заставка также просто окно - вы хотите всплыть над этим? Как насчет важных предупреждений? Что, если два приложения требуют быть всегда на вершине? Теоретически вы можете сделать пользователя, разместив свое полноэкранное приложение и выйдя из него. Вот почему в Какао нет свойства «всегда сверху». Можно указать только относительный индекс Z (и Apple настоятельно рекомендует не делать этого). Ваши варианты в основном перекодировать приложение или использовать SIMBL.
JJ

Вы хотите сделать это для любого приложения в Mac OS? Если да, хотите ли вы, чтобы он всегда имел фокус (имеется в виду нажатие клавиш и щелчок мыши), или вы хотите, чтобы окно приложения «плавало над» всеми остальными, но НЕ было активным окном?
кенджикато

7
FWIW Fedora всегда позволяла это (с середины 90-х годов в форме RH), и у меня никогда не было проблем «нежелательного» характера. Это просто не в OSX, когда это может быть вставлено.
nerak99

1
Джон Китс - К сожалению, вы не знаете, о чем говорите. Xcode делал то же самое со своим симулятором, оставляя его перед всеми остальными окнами, и такое поведение существовало в течение многих лет, пока они окончательно не удалили его в Xcode 9.
Logicsaurus Rex

Ответы:


25

Отмечу, что в iOS Simulator есть / была опция Stay in Front. Чрезвычайно полезная функциональность, и доказывает, что есть поддерживаемые Apple и санкционированные способы достижения этого поведения.

Возможно, стоит открыть радар, особенно для добавления в терминал.

Вы можете дублировать мой радар :

Ошибка ID 27430873: Добавить опцию «Оставаться впереди» в окнах терминала.

Оставайтесь впереди в iOS Simulator

К сожалению, Xcode 9 удалил эту функцию в iOS Simulator. Пожалуйста, продублируйте мой отчет об ошибках Apple, чтобы вернуть это!

Ошибка ID 32852924: в симуляторе iOS Xcode 9 отсутствует опция «Оставаться впереди»

Приложение Apple Activity Monitor также имеет опцию, Keep CPU Windows on Topкоторая отображает небольшие графики ЦП поверх окон всех других приложений:

Монитор активности> Окно> Держите центральный процессор Windows


1
Что это за симулятор iOS? Это как эмулятор? Я искал один.
голоса

@ tjt263 симулятор iOS в комплекте с Xcode и в основном используется для разработки приложений для iOS
pkamb

1
О хорошо Что такое радар? Как сообщение об ошибке?
голоса

@ tjt263 да, bugreport.apple.com
pkamb

3
Эта функциональность также показана в предустановленном «Мониторе активности» - если вы войдете в меню «Окно», вы увидите опцию «Сохранить процессор Windows сверху» - так что действительно кажется, что есть официальный Apple способ сделать это. (Это то, что я вижу на 10.13.2)
keybits

16

Если вы хотите сделать это, например, для окна интернет-браузера, вы можете взглянуть на приложение Helium с открытым исходным кодом . Это бесплатно, и вы также можете скачать исходный код и скомпилировать свою собственную версию, если хотите.

Это в основном интернет-браузер, который всегда всплывает над всеми остальными окнами. Гелий приложение

РЕДАКТИРОВАТЬ:

Также есть новое приложение от Apple Mac App Store под названием Fluid Browser, которое будет делать то же самое. Это стоит пару долларов, но работает превосходно и имеет несколько больше функций, чем Helium (по состоянию на 06.07.2016). Итак, теперь у вас есть два разных приложения на выбор.

Fluid Browser


Мне не понравился опыт Fluid Browser. Да, у него есть еще несколько функций, но он довольно глючный и громоздкий. Гелий очень легкий, но делает работу.
Winterflags

1
Можете ли вы заблокировать рекламу в гелии или жидкости?
powder366

5

Если вы только действительно хотите / должны «остаться на вершине» функциональность для вашего Terminal.app окна (как я), есть Quake / Guake -Style выпадающего козырек, SIMBL плагин доступен , который поддерживает будучи прижат к переднему плану; TotalTerminal .

Так что это возможно, несмотря на распространенное заблуждение, что это не так.

Начиная с MacOS 10.11 (El Capitan) , чтобы установить / запустить TotalTerminal , вам может потребоваться отключить  защиту целостности системы :

csrutil enable --without debug

Он больше не с открытым исходным кодом, но последняя реализация с открытым исходным кодом все еще доступна на GitHub . Так что, если вы склонны, вы можете исследовать, как именно это достигается. Я написал разработчику по электронной почте, чтобы спросить, но прошло так много времени с тех пор, как они работали над этим, они не могли (или не хотели?) Действительно сказать мне.


TotalTerminal больше не поддерживается в наши дни. Я закончил тем, что переключился на iTerm, чтобы получить то же поведение: apple.stackexchange.com/questions/48796/…
Андре Морухао,

Это верно, я бы не советовал использовать его. Но если кто-то заинтересован в реализации собственного решения, возможно, стоит просмотреть связанный исходный код.
голоса

Для плавающего терминала я использую Helium с gotty. gotty позволяет открывать терминал в веб-браузере, а Helium является плавающим веб-браузером.
wesley6j

Вы действительно, действительно, действительно, и я действительно имею в виду, действительно, нужно заметить, что вы должны снова включить SIP после выполнения того, что вы документируете.
Прифтан

@Pryftan нет, SIP для кисок.
голоса

5

Я только что разочаровался в моем SIMBLE и на плаву. Fenêtre - платное приложение с бесплатной облегченной версией, которая работает очень хорошо.

Я использую его для воспроизведения окна видео в окне во время работы или для размещения онлайн-инструкций сверху. Не уверен, что вы хотите использовать его?


3

В Mac App Store есть бесплатное приложение под названием Key Codes, которое, насколько я могу судить, находится поверх всех остальных окон. Кроме пунктов меню, он остается поверх всех других приложений, включая Терминал и адресную строку Safari.


11
Блестящий совет Симусу, если оператору необходимо конкретное приложение, чтобы оставаться на вершине. Теперь, если, говоря гипотетически, конечно, он хочет, чтобы другое приложение оставалось на вершине, или, может быть, даже несколько разных, то, возможно, не так здорово?
mysomic

2
Спасибо! Прекрасно работает для варианта использования "пожалуйста, закройте эту ужасную вещь".
экманавт

3

Не совсем ответ, но скорее обходной путь: вы можете использовать Spectacle или подобное приложение, чтобы быстро настроить макет рабочего стола, который позволит вам следовать исходному окну.

Конечно, это не поможет, когда вы ждете, пока кто-то еще присоединится к чату поддержки, и тем временем решите использовать свое время для чего-то более полезного, чем пялиться в пустое окно - например, работать на другом виртуальном рабочем столе :(

Возьмите Spectacle отсюда: https://www.spectacleapp.com


Добро пожаловать, чтобы спросить другого и нашли время, чтобы опубликовать ответ. В качестве предлагаемого улучшения вы должны предоставить ссылки на приложения, на которые вы ссылаетесь в своем посте. Это делает для лучшего пользовательского опыта. Для получения дополнительной информации о создании хорошего ответа см .: apple.stackexchange.com/help/how-to-answer
Аллан

2
Привет Аллан, большое спасибо за помощь в превращении AskDifferent в аккуратное место, я буду следовать твоим инструкциям. Приветствия.
i90rr

2

просто перетащите свой терминал через окно сафари после ввода F3.

это автоматически размещает терминал вертикально, например, с правой стороны окна сафари, так что вы можете выполнить некоторую работу и получить доступ к терминалу, находясь в другом окне ...


Ничего не происходит, когда я пытаюсь это сделать. Окно терминала просто возвращается в исходное положение.
JMH


2

Если вы разработчик и ваш SIP отключен (csrutil), вы можете изменить levelсвойство NSWindowиспользования lldb. Как только вы подключитесь к процессу (т.е. App Store) в XCode, просто наберите:

(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]

введите описание изображения здесь введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.