Чи є спосіб відключити автоматичне завершення програм OS X?


11

Чи є спосіб сказати OS X Lion відключити автоматичне припинення для даної програми, що ви не хочете автоматично припиняти роботу?

FYI Lion - це запит, якщо ви ще не знали, що робити, якщо ви не хочете, щоб це було для певного Applicaiton.

Lion закриє ваші запущені програми за спиною, якщо вирішить, що йому потрібні ресурси, і якщо ви, здається, не використовуєте їх. Евристика для визначення того, чи використовується програма, є дуже консервативною: вона не повинна бути активною програмою, вона не повинна мати видимих, не мінімізованих вікон - і, звичайно, вона повинна явно підтримувати автоматичне припинення.

Наприклад, скажіть, що я не хочу, щоб TextEdit автоматично закривався, коли у мене немає відкритих вікон TextEdit та перехід на іншу програму.

Переглянувши розділ Посібника з програмування Mac для автоматичного припинення, я зрозумів, що спробую додати ключ NSSupportsAutomaticTermina зі значенням «Ні» до файлу Info.plist для TextEdit. (Не вдалося: TextEdit виходить з ладу при відкритті.)

Зауважимо, що файл не містив ключ NSSupportsAutomaticTermina (це означає, що Apple використовувала NSProcessInfo для ввімкнення автоматичного завершення), тому додавання ключа, ймовірно, не матиме жодного ефекту, оскільки NSProcessInfo переосмислює те, що є у файлі plist. (Перевірено, що це не працює, самостійно підписуючи TextEdit з модифікованим Info.plist, включаючи ключ NSSupportsAutomaticTermina і значення Ні).

Одним із побічних ефектів, який зазначається, є те, що зміна будь-чого у файлі Info.plist призводить до аварії TextEdit при відкритті. Причина відзначається з журналу збоїв як "невірна підпис коду", що означає, що додаток TextEdit та весь його вміст підписані кодом. Вирішення проблеми полягає в тому, щоб самостійно підписати додаток за допомогою codesignкоманди та власного підписаного кореневого сертифіката, як зазначено у завданні підпису коду .

Після того, що я намагався до цього часу, TextEdit все ще підкоряється автоматичному припиненню.


1
Отже ... якщо ви самостійно підписуєте додаток, це працює?
jtbandes

1
Ні, програма все ще автоматично припиняється навіть після самопідписання, незалежно від того, що я додав до Info.plist
MrDaniel

1
Ви спробували завантажити приклад джерела для TextEdit, який Apple забезпечує інструментами розробки та редагуванням (або видаленням) матеріалів NSProcessInfo, які реєструються для автоматичного припинення?
Cajunluke

Ніхто не пробував цього, що має спрацювати в цьому випадку. Але це питання виходить за рамки TextEdit. Це більше питання про те, чи можемо ми обходити це за допомогою втручання на рівні вихідного коду розробника. Оскільки ми не завжди матимемо доступ до вихідного коду для додатків, що підтримують автоматичне припинення.
MrDaniel

1
"Це так, як працює Apple", це просто хибно. Це нова функція, яка недостатньо рекламується при цьому. З Apple Docs навіть не зрозуміло, що потрібно ОС для автоматичного завершення програми. І Apple не рекламує цього, ані згадує його на сторінці функцій Lion для кінцевих користувачів. Я думаю, це щось нове Apple намагається. Якщо кінцевому користувачеві це не подобається, вони повинні озвучити Apple і розробників, щоб вони могли зробити це кращим.
MrDaniel

Відповіді:


14

Ваше бажання - моя команда Терміналу ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Зауважте, оскільки автоматичне припинення дійсно не закриває програми, а навпаки, приховує їх, вони повинні бути належним чином закриті, щоб це набуло чинності.


2
Чудовий, хороший користувач22760. Спробував це, як було зазначено вище, і це спрацює, дякую. Тестовий випадок TextEdit.app більше не припиняється автоматично після запуску за замовчуванням ..., а потім відкриття та закриття TextEdit. Після повторного відкриття TextEdit він більше не автоматично припиняється, якщо немає відкритих вікон та працює у фоновому режимі.
Містер Даніель

Цікаво. Після випробування цієї команди вона справді спрацьовує. Однак спробувати скасувати це виявилося складніше. за замовчуванням пишіть -g NSDisableAutomaticTermentation -bool ні, або false, або видалення ключа не впливає, і програми не припиняться автоматично
DrFloyd5

Ця диво-команда працює для мене на Mavericks! Він набирає чинності, коли повертається до сесії або відкриває нову сесію.
Ніколя Барбулеско

Дякуємо за додану інструкцію запустити та вручну вийти з програми та потім перезапустити її, щоб побачити ефект належним чином!
jtheletter

1

Існує надійний спосіб виправити це, якщо ваше обладнання підтримує це. Ви можете оновити з Mac OS X 10.7 (Lion) до Mac OS X 10.6 (Snow Leopard).

Хоча не все апаратне забезпечення, яке буде запускати Lion, може підтримувати цю вдосконалену операційну систему (на жаль, у середині 2011 року MacBook Air цього немає), вона включає такі функції, як неавтоматичне припинення, Rosetta (що дозволяє процесорам Intel запускати програмне забезпечення, скомпільоване для PPC процесори) та сумісність із функціями запису за допомогою програми у чудовій WireTap Studio.

Як і будь-яке оновлення, деякі функції втрачаються (наприклад, контроль над місією , пусковий майданчик , кілька жестів), а деякі химерності операційної системи потребують звикання (наприклад, напрямок прокрутки змінюється, наприклад,), але загалом це точне оновлення.


2
Добре, але для більшості користувачів автоматичне припинення не варто повертатись до Snow Leopard, це лише незначне роздратування для деяких користувачів, я не з них.
MrDaniel

1
Безумовно, це екстремальне рішення, але це один із кількох способів Snow Leopard перевершує Лева. Сукупний ефект від них може спонукати когось захотіти Сніжного Леопарда. Це означає, що я просто вчуся жити з цим, оскільки інші особливості Lion (особливо пов'язані з iCloud) змушують миритися з вадами.
Даниїл

Питання - про Лева.
Грехем Перрін

1
@GrahamPerrin так була моя відповідь. Моя думка, що це одна з багатьох речей, які Лев зламав, і одне рішення може бути - не запускати Лева.
Даниїл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.