¿Hay alguna forma de deshabilitar la terminación automática de aplicaciones de OS X?

11

¿Hay alguna manera de decirle a OS X Lion que desactive la terminación automática para una aplicación determinada que no desea que finalice automáticamente?

FYI Lion es un renunciador si aún no lo sabía, ¿qué pasa si no quiere que sea para una determinada Aplicación?

Lion cerrará sus aplicaciones en ejecución a sus espaldas si decide que necesita los recursos y si parece que no los está utilizando. La heurística para determinar si una aplicación está "en uso" es muy conservadora: no debe ser la aplicación activa, no debe tener ventanas visibles y no minimizadas, y, por supuesto, debe admitir explícitamente la terminación automática.

Por ejemplo, supongamos que no quiero que TextEdit se cierre automáticamente cuando no tengo ventanas TextEdit abiertas y cambiar a otra aplicación.

Después de echar un vistazo a la sección de la Guía de programación de aplicaciones de Mac para la terminación automática , pensé que intentaría agregar la clave NSSupportsAutomaticTermination con el valor de No al archivo Info.plist para TextEdit. (No funcionó: TextEdit se bloquea al abrir).

Para tener en cuenta, el archivo no incluía la clave NSSupportsAutomaticTermination (lo que significa que Apple estaba usando NSProcessInfo para habilitar la terminación automática), por lo que agregar una clave probablemente no tendría ningún efecto ya que NSProcessInfo anula lo que está en el archivo plist. (Verificado, esto no funciona, firmando TextEdit con una lista de información modificada que incluye la clave NSSupportsAutomaticTermination y el valor de No).

Un efecto secundario observado es que cambiar cualquier cosa en el archivo Info.plist hace que TextEdit se bloquee al abrirse. La causa se observa en el registro de fallos como "firma de código inválida", lo que significa que la aplicación TextEdit y todo su contenido están firmados por código. La solución consiste en codesignautofirmar la aplicación con el comando y un certificado raíz autofirmado como se indica en la tarea Firma de código .

Después de lo que he intentado hasta ahora, TextEdit todavía obedece a la terminación automática.

MrDaniel
fuente
1
Entonces ... si auto-firmas la aplicación, ¿funciona?
jtbandes
1
No, el programa todavía finaliza automáticamente incluso después de la firma automática, independientemente de lo que haya agregado a Info.plist
MrDaniel
1
¿Has intentado descargar la fuente de ejemplo para TextEdit que Apple proporciona con las herramientas de desarrollo y editar (o eliminar) el material NSProcessInfo que se registra para la terminación automática?
Cajunluke
No, no lo he intentado, eso debería funcionar en este caso. Pero esta pregunta está más allá de TextEdit. Es más una cuestión de si podemos solucionar esto sin la intervención del código fuente del desarrollador. Dado que no siempre tendremos acceso al código fuente de las aplicaciones que admiten la terminación automática.
MrDaniel
1
"Así es como funciona Apple", eso es falso. Esta es una característica nueva, que no se publicita bien. De Apples Docs ni siquiera está claro qué se requiere para que el sistema operativo termine automáticamente un programa. Y Apple no anuncia esto ni lo menciona en la página de características de Lion para usuarios finales. Creo que es algo nuevo que Apple está intentando. Si al usuario final no le gusta esto, deben expresar su opinión sobre Apple y los desarrolladores para que puedan mejorarlo.
MrDaniel

Respuestas:

14

Tu deseo es mi comando de Terminal ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Tenga en cuenta que dado que la terminación automática realmente no cierra las aplicaciones, sino que las oculta , deben haberse cerrado correctamente para que esto surta efecto.


fuente
2
Excelente, buen hallazgo user22760. Intenté como se señaló anteriormente y funciona, gracias. El caso de prueba de TextEdit.app ya no finaliza automáticamente después de ejecutar los valores predeterminados ... y luego abrir y cerrar TextEdit. Al volver a abrir TextEdit, ya no se autoterminará sin ventanas abiertas y se ejecutará en segundo plano.
MrDaniel
Interesante. Después de probar este comando, de hecho funciona. Sin embargo, intentar deshacerlo ha resultado ser más difícil. los valores predeterminados escriben -g NSDisableAutomaticTermination -bool no, o false, o la eliminación de la clave no tiene ningún efecto y las aplicaciones no
finalizarán
¡Este comando milagroso me funciona en Mavericks! Surte efecto al volver a la sesión o al abrir una nueva sesión.
Nicolas Barbulesco
¡Muchas gracias por las instrucciones adicionales para iniciar y cerrar manualmente la aplicación y luego reiniciarla para ver el efecto correctamente!
jtheletter
1

Hay una manera segura de solucionar esto, si su hardware lo admite. Puede actualizar de Mac OS X 10.7 (Lion) a Mac OS X 10.6 (Snow Leopard).

Si bien no todo el hardware que ejecutará Lion puede admitir este sistema operativo mejorado (lamentablemente, mi MacBook Air de mediados de 2011 no lo hace), incluye características como la no terminación automática, Rosetta (que permite a los procesadores Intel ejecutar software compilado para PPC procesadores) y compatibilidad con las funciones de grabación por aplicación en el excelente WireTap Studio.

Al igual que con cualquier actualización, algunas características se pierden (como Mission Control , Launch Pad , algunos gestos) y algunas peculiaridades del sistema operativo requieren un poco de tiempo para acostumbrarse (la dirección de desplazamiento se invierte, por ejemplo), pero en general, es un Buena actualización.

Daniel
fuente
2
Buen punto, pero para la mayoría de los usuarios, la terminación automática no vale la pena volver a Snow Leopard, es solo una molestia menor para algunos usuarios, no soy uno de ellos.
MrDaniel
1
Es una solución extrema, sin duda, pero esta es una de las varias formas en que Snow Leopard es superior a Lion. El efecto acumulativo de ellos podría inducir a alguien a querer Snow Leopard. Dicho esto, estoy aprendiendo a vivir con él, ya que otras características de Lion (particularmente relacionadas con iCloud) hacen que valga la pena soportar los inconvenientes.
Daniel
La pregunta es sobre Lion.
Graham Perrin
1
@GrahamPerrin también fue mi respuesta. Mi punto es que esta es una de las muchas cosas que Lion rompió, y una solución podría ser no ejecutar Lion.
Daniel