Existe uma maneira de desativar o encerramento automático de aplicativos do OS X?

11

Existe uma maneira de dizer ao OS X Lion para desativar o encerramento automático de um determinado aplicativo que você não deseja encerrar automaticamente?

Para sua informação, o Lion é um desistente, se você ainda não sabia, e se você não quiser que seja para um determinado aplicativo.

O Lion encerrará seus aplicativos em execução pelas costas se decidir que precisa dos recursos e se você não os estiver usando. A heurística para determinar se um aplicativo está "em uso" é muito conservadora: não deve ser o aplicativo ativo, não deve ter janelas visíveis e não minimizadas - e, é claro, deve oferecer suporte explícito à terminação automática.

Por exemplo, digamos que não quero que o TextEdit seja encerrado automaticamente quando não houver janelas do TextEdit abertas e mude para outro Aplicativo.

Depois de dar uma olhada na seção Guia de programação de aplicativos do Mac para finalização automática , pensei em tentar adicionar a chave NSSupportsAutomaticTermination com o valor de No no arquivo Info.plist do TextEdit. (Não funcionou: o TextEdit trava ao abrir.)

Observe que o arquivo não incluiu a chave NSSupportsAutomaticTermination (o que significa que a Apple estava usando o NSProcessInfo para habilitar o encerramento automático); portanto, adicionar uma chave provavelmente não teria nenhum efeito, já que o NSProcessInfo substitui o que está no arquivo plist. (Verificado, isso não funciona, assinando TextEdit com uma Info.plist modificada, incluindo a chave NSSupportsAutomaticTermination e o valor No).

Um efeito colateral observado é que alterar qualquer coisa no arquivo Info.plist faz com que o TextEdit falhe ao abrir. A causa é registrada no log de falha como "assinatura de código inválida", o que significa que o aplicativo TextEdit e todo o seu conteúdo são assinados por código. A solução alternativa é assinar automaticamente o aplicativo usando o codesigncomando e um certificado raiz autoassinado, conforme observado na tarefa de assinatura de código .

Depois do que tentei até agora, o TextEdit ainda obedece ao encerramento automático.

MrDaniel
fonte
1
Então ... se você assina o aplicativo automaticamente, ele funciona?
Jtbandes #
1
Não, programa ainda auto termina mesmo depois de auto-assinatura, independentemente do que eu adicionei para Info.plist
MrDaniel
1
Você já tentou fazer o download da fonte de exemplo para o TextEdit fornecida pela Apple com as ferramentas de desenvolvimento e editar (ou remover) o material NSProcessInfo que é registrado para finalização automática?
Cajunluke
Não, não tentei isso, que deve funcionar neste caso. Mas esta questão está além do TextEdit. É mais uma questão de resolvermos isso sem intervenção no nível do código-fonte do desenvolvedor. Como nem sempre teremos acesso ao código fonte dos aplicativos compatíveis com o encerramento automático.
precisa saber é o seguinte
1
"É assim que a Apple funciona" que é simplesmente falso. Esse é um novo recurso, pouco divulgado. Do Apples Docs nem sequer está claro o que é necessário para o sistema operacional encerrar automaticamente um programa. E a Apple falha em anunciar isso nem mencioná-lo na página de recursos do Lion para usuários finais. Eu acho que é algo novo que a Apple está tentando. Se o usuário final não gostar disso, deve dar voz à Apple e aos desenvolvedores para que eles possam melhorar.
precisa saber é o seguinte

Respostas:

14

Seu desejo é o meu comando Terminal ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Observe que, como o encerramento automático não fecha os aplicativos, mas os oculta , eles devem ter sido encerrados corretamente para que isso entre em vigor.


fonte
2
Excelente, bom encontrar user22760. Tentei como observado acima e funciona, obrigado. O caso de teste do TextEdit.app não é mais finalizado automaticamente depois de executar os padrões ... e, em seguida, abrir e sair do TextEdit. Ao reabrir o TextEdit, ele não será mais autoterminado, sem janelas abertas e sendo executado em segundo plano.
MrDaniel 14/05
Interessante. Depois de experimentar este comando, ele realmente funciona. No entanto, tentar desfazer isso provou ser mais difícil. defaults write -g NSDisableAutomaticTermination -bool não, ou falso, ou exclusão de chave tem nenhum efeito e os aplicativos não serão automaticamente rescindidos
DrFloyd5
Este comando milagroso funciona para mim no Mavericks! Entra em vigor ao retornar à sessão ou ao abrir uma nova sessão.
Nicolas Barbulesco 19/01
Muito obrigado pelas instruções adicionadas para iniciar e sair manualmente do aplicativo e, em seguida, reinicie-o para ver o efeito corretamente!
Jdeletter 04/12/2015
1

Existe uma maneira infalível de corrigir isso, se o seu hardware suportar. Você pode atualizar do Mac OS X 10.7 (Lion) para o Mac OS X 10.6 (Snow Leopard).

Embora nem todo o hardware que executa o Lion possa suportar esse sistema operacional aprimorado (infelizmente, o meu MacBook Air de meados de 2011 não), ele inclui recursos como a não terminação automática, o Rosetta (que permite que os processadores Intel executem o software compilado para PPC). processadores) e compatibilidade com os recursos de gravação por aplicativo no excelente WireTap Studio.

Como em qualquer atualização, alguns recursos são perdidos (como Mission Control , Launch Pad , alguns gestos) e algumas peculiaridades do sistema operacional levam algum tempo para se acostumar (a direção da rolagem é invertida, por exemplo), mas, no geral, é um atualização fina.

Daniel
fonte
2
Bom ponto, mas para a maioria dos usuários, não vale a pena rever o Auto Termination, é apenas um pequeno aborrecimento para alguns usuários, eu não sou um deles.
precisa saber é o seguinte
1
É uma solução extrema, com certeza, mas esta é uma das várias maneiras pelas quais o Snow Leopard é superior ao Lion. O efeito cumulativo deles pode induzir alguém a querer o Snow Leopard. Dito isto, estou apenas aprendendo a conviver com isso, pois outros recursos do Lion (particularmente relacionados ao iCloud) valem a pena aturar as desvantagens.
Daniel
A pergunta é sobre o leão.
Graham Perrin
1
@GrahamPerrin também foi a minha resposta. Meu argumento é que essa é uma das muitas coisas que o Lion quebrou e uma solução pode ser não executar o Lion.
Daniel